在 Debian 上“守护(保活 / 后台运行)Node.js 进程”常见有几种方式,从简单到生产级如下:
sudo nano /etc/systemd/system/myapp.service
示例(假设你的 Node 项目在 /var/www/myapp):
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=on-failure
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reexec
sudo systemctl enable myapp
sudo systemctl start myapp
systemctl status myapp
journalctl -u myapp -f
✅ 优点:开机自启、崩溃自动重启、日志集成
sudo npm install -g pm2
pm2 start app.js --name myapp
pm2 startup
pm2 save
pm2 list
pm2 logs
pm2 restart myapp
pm2 stop myapp
✅ 优点:简单、带监控、可集群
nohup node app.js > app.log 2>&1 &
❌ 缺点:
screen -S nodeapp
node app.js
# Ctrl+A D 退出
❌ 不适合生产
如果你用容器:
docker run -d --restart=always node:18 myapp
| 场景 | 推荐 |
|---|---|
| 生产服务器 | ✅ systemd |
| 快速部署 | ✅ PM2 |
| 临时测试 | nohup |
| 微服务 | Docker |
如果你愿意,可以告诉我:
我可以帮你写完整可用的 service 文件。