在 CentOS 上让 Node.js 以守护进程方式运行,常见有以下几种方案,从简单到生产级依次说明。
nohup(不推荐生产)适合临时测试。
nohup node app.js > app.log 2>&1 &
查看进程:
ps -ef | grep node
缺点:
pm2(✅ 强烈推荐)npm install -g pm2
如果 npm 没装:
yum install -y nodejs npm
pm2 start app.js
指定名称:
pm2 start app.js --name my-api
pm2 list
pm2 logs
pm2 startup
执行后会提示一条命令,类似:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u youruser --hp /home/youruser
复制并执行即可。
保存当前进程列表:
pm2 save
✅ 重启服务器后 Node.js 会自动启动
pm2 restart my-api
pm2 stop my-api
pm2 delete my-api
适合生产环境、服务器部署
sudo vi /etc/systemd/system/node-app.service
内容示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/node-app
ExecStart=/usr/bin/node /opt/node-app/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
⚠️ 注意:
node 路径可以用 which node 查看WorkingDirectory 是你的项目目录sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app
systemctl status node-app
journalctl -u node-app -f
| 方式 | 自动重启 | 开机启动 | 推荐程度 |
|---|---|---|---|
| nohup | ❌ | ❌ | ⭐ |
| pm2 | ✅ | ✅ | ⭐⭐⭐⭐⭐ |
| systemd | ✅ | ✅ | ⭐⭐⭐⭐ |
| 场景 | 推荐 |
|---|---|
| 快速开发 / 测试 | pm2 |
| 生产环境 | pm2 或 systemd |
| 运维规范 | systemd |
| 多 Node 应用 | pm2 |
如果你愿意,可以告诉我:
我可以给你完全定制化的守护进程配置。