在 Debian 上让 Node.js 程序开机自启动,常见有几种方式,下面按推荐程度给你说明。
假设你的 Node 程序:
/opt/myapp/app.js
sudo nano /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=My Node.js App
After=network.target
[Service]
ExecStart=/usr/bin/node /opt/myapp/app.js
WorkingDirectory=/opt/myapp
User=www-data
Environment=NODE_ENV=production
Restart=on-failure
[Install]
WantedBy=multi-user.target
⚠️
User不要用 root,除非必要
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
systemctl status myapp
journalctl -u myapp -f
✅ 开机自动启动,崩溃自动重启
npm install -g pm2
pm2 start app.js --name myapp
pm2 startup
按提示执行它给出的命令(通常是 systemctl enable pm2-root)
pm2 save
✅ 重启后会自动恢复
sudo nano /etc/rc.local
/usr/bin/node /opt/myapp/app.js &
⚠️ Debian 新版本默认可能禁用 rc.local
✅ Node 路径要用绝对路径:
which node
✅ 日志一定要看:
journalctl -u myapp
✅ 端口权限问题(80/443 需要权限)
| 场景 | 推荐 |
|---|---|
| 生产服务器 | ✅ systemd |
| 快速部署 | ✅ PM2 |
| 临时测试 | ❌ rc.local |
如果你愿意,可以告诉我:
我可以直接帮你写一份完整的 service 文件。