在 CentOS 上让 Node.js 程序开机启动,常见有以下 几种方式,按推荐程度从高到低给你说明。
例如你的项目在:
/opt/myapp
启动命令:
node /opt/myapp/app.js
sudo vi /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node /opt/myapp/app.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
⚠️ 注意:
ExecStart必须是 绝对路径- 可用
which node查看 node 路径
sudo systemctl daemon-reexec
sudo systemctl enable myapp
sudo systemctl start myapp
systemctl status myapp
journalctl -u myapp -f
npm install -g pm2
pm2 start /opt/myapp/app.js --name myapp
pm2 startup
pm2 save
PM2 会自动创建 systemd 服务。
使用 rc.local:
vi /etc/rc.d/rc.local
添加:
/usr/bin/node /opt/myapp/app.js >> /var/log/myapp.log 2>&1 &
赋予执行权限:
chmod +x /etc/rc.d/rc.local
使用绝对路径:
which node
在 service 文件中加:
Environment=NODE_ENV=production
| 方式 | 推荐度 | 说明 |
|---|---|---|
| systemd | ⭐⭐⭐⭐⭐ | 官方标准 |
| PM2 | ⭐⭐⭐⭐ | Node 专用 |
| rc.local | ⭐ | 旧系统 |
如果你愿意,可以告诉我:
我可以给你精准配置示例。