在 Ubuntu 上让 Node.js 程序开机自启动,推荐用 systemd(Ubuntu 16.04+ 默认)。下面给你几种常见方式,从最推荐到简单但不推荐。
假设你的项目在:
/opt/myapp
启动命令是:
node /opt/myapp/index.js
sudo nano /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node /opt/myapp/index.js
Restart=on-failure
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
⚠️
User不要用 root(除非必须)
ExecStart里的 node 路径用which node查
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 index.js --name myapp
pm2 startup
pm2 save
✅ 简单、好管理、适合开发/生产
sudo nano /etc/rc.local
加一行:
node /opt/myapp/index.js &
Ubuntu 新版本可能默认禁用 rc.local
| 场景 | 推荐 |
|---|---|
| 生产服务 | systemd |
| Node 项目 | PM2 |
| 临时测试 | nohup |
如果你告诉我:
我可以给你完全对应你环境的配置。