在 CentOS 上配置 Node.js 守护进程,常见做法有几种,从推荐到不推荐依次如下。你可以根据服务器规模和需求选择。
假设你的项目目录是:
/opt/myapp
启动文件是:
/opt/myapp/app.js
sudo vi /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=nodeuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node /opt/myapp/app.js
Restart=always
RestartSec=5
Environment=NODE_ENV=production
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
⚠️ 注意:
User 建议用非 root 用户ExecStart 中的 node 路径用 which node 确认sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
systemctl status myapp
journalctl -u myapp -f
✅ 优点
npm install -g pm2
pm2 start app.js --name myapp
pm2 startup
pm2 save
pm2 list
pm2 logs myapp
pm2 restart myapp
pm2 stop myapp
✅ 优点
nohup node app.js > app.log 2>&1 &
❌ 缺点:
| 方案 | 推荐度 | 自动重启 | 开机启动 | 适合场景 |
|---|---|---|---|---|
| systemd | ⭐⭐⭐⭐⭐ | ✅ | ✅ | 服务器、生产环境 |
| PM2 | ⭐⭐⭐⭐⭐ | ✅ | ✅ | Node.js 项目 |
| nohup | ⭐ | ❌ | ❌ | 临时测试 |
systemd 或 PM2PM2 或 Docker restart policysystemd + PM2 二选一如果你愿意,可以告诉我:
我可以给你一份完全可直接用的配置。