在 CentOS 上“守护(后台稳定运行)”Node.js 程序,常见有 4 种主流方案,从“简单”到“生产级”依次如下:
适合临时跑一下:
nohup node app.js > app.log 2>&1 &
查看:
ps aux | grep node
npm install -g pm2
pm2 start app.js
pm2 list
pm2 logs
pm2 restart app
pm2 stop app
pm2 delete app
pm2 startup
pm2 save
重启服务器后 Node 服务会自动拉起
✅ 优点:自动重启、日志管理、集群模式、监控
适合“像系统服务一样管理”
vi /etc/systemd/system/nodeapp.service
内容示例:
[Unit]
Description=Node App
After=network.target
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
WorkingDirectory=/opt/app
Restart=always
User=nodeuser
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start nodeapp
systemctl enable nodeapp
查看状态:
systemctl status nodeapp
✅ 优点:系统级、稳定、无需额外依赖
npm install -g forever
forever start app.js
❌ 不如 PM2 好用,不推荐新项目
| 场景 | 推荐 |
|---|---|
| 本地测试 | nohup |
| 生产服务 | ✅ PM2 / systemd |
| 运维规范强 | systemd |
| 快速部署 | PM2 |
如果你愿意,可以告诉我:
npm start我可以给你一套可直接用的配置。