在 Ubuntu 上“守护(daemonize / 后台稳定运行)Node.js 服务”,常见有几种方式,从简单到生产级依次是:
nohup node app.js > app.log 2>&1 &
✅ 适合:临时测试
sudo nano /etc/systemd/system/myapp.service
内容示例:
[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
⚠️ 确保
node路径正确(which node)
sudo systemctl daemon-reexec
sudo systemctl enable myapp
sudo systemctl start myapp
systemctl status myapp
journalctl -u myapp -f
sudo systemctl restart myapp
✅ 优点:
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
✅ 优点:
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "app.js"]
配合:
docker restart=always| 场景 | 推荐 |
|---|---|
| 学习 / 测试 | nohup |
| 单台服务器 | systemd / PM2 |
| 多服务 / 微服务 | Docker |
| 生产环境 | systemd + PM2 / Docker |
如果你愿意,可以告诉我:
npm start我可以直接帮你写一份可用的 systemd 或 PM2 配置。