在 CentOS 上设置 Node.js 开机自启,常见有三种方式,推荐使用 systemd(CentOS 7+)。下面按常用场景给你说明。
假设你有一个 Node.js 项目:
/opt/myapp
├── app.js
├── package.json
确认 Node.js 路径:
which node
例如:
/usr/bin/node
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=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
✅ 如果你用的是
npm start:
ExecStart=/usr/bin/npm start
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp
✅ 重启服务器测试:
reboot
npm install -g pm2
cd /opt/myapp
pm2 start app.js --name myapp
pm2 startup
执行后会提示一条命令,类似:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root
✅ 直接复制执行
pm2 save
重启测试:
reboot
pm2 list
CentOS 6 使用 chkconfig:
vi /etc/init.d/myapp
然后:
chkconfig --add myapp
chkconfig myapp on
⚠️ 建议升级系统
journalctl -u myapp -f
which node
netstat -tunlp | grep 3000
| 场景 | 推荐方式 |
|---|---|
| 单服务、系统级 | ✅ systemd |
| 多 Node 项目 | ✅ PM2 |
| CentOS 6 | ⚠️ chkconfig |
如果你愿意,可以把 CentOS 版本 + Node 版本 + 启动方式(node / npm / pm2) 发我,我可以帮你 直接写一份可用的 service 文件 ✅