在 Debian 上让 Node.js 程序以守护进程(后台运行)方式启动,常见有几种做法,从“简单粗暴”到“生产推荐”如下:
& + nohup(不推荐生产)nohup node app.js > app.log 2>&1 &
nohup:断开终端后不退出&:后台运行ps aux | grep nodekill -9 PID⚠️ 缺点:服务器重启不会自动启动,管理不方便
systemd(✅ 推荐,Debian 官方方式)sudo nano /etc/systemd/system/node-app.service
示例内容:
[Unit]
Description=Node.js App
After=network.target
[Service]
ExecStart=/usr/bin/node /var/www/app/app.js
WorkingDirectory=/var/www/app
User=www-data
Environment=NODE_ENV=production
Restart=always
[Install]
WantedBy=multi-user.target
ExecStart写 绝对路径which node可查看 node 路径
sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app # 开机自启
systemctl status node-app
journalctl -u node-app -f
systemctl restart node-app
✅ 优点:
sudo npm install -g pm2
pm2 start app.js --name my-app
pm2 startup
pm2 save
pm2 list
pm2 logs
pm2 restart my-app
pm2 stop my-app
✅ 优点:
| 方式 | 推荐度 | 场景 |
|---|---|---|
| nohup & | ⭐ | 临时测试 |
| systemd | ⭐⭐⭐⭐⭐ | 生产服务器 |
| PM2 | ⭐⭐⭐⭐ | Node 专用 |
forever(已过时)WorkingDirectoryRestart=always如果你愿意,可以告诉我:
我可以给你定制一份 systemd 配置。