在 CentOS 上让 Node.js 程序开机自启,常见有几种方式,按系统版本和习惯选一个就行。
假设:
/usr/bin/node/opt/myapp/opt/myapp/app.js先确认 node 路径:
which node
sudo vi /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
ExecStart=/usr/bin/node /opt/myapp/app.js
WorkingDirectory=/opt/myapp
Restart=always
User=root
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
如果是普通用户运行,把
User=root改成你的用户名
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
查看状态:
systemctl status myapp
vi /etc/init.d/myapp
示例:
#!/bin/bash
# chkconfig: 2345 80 90
# description: node app
case "$1" in
start)
/usr/bin/node /opt/myapp/app.js &
;;
stop)
pkill node
;;
esac
exit 0
chmod +x /etc/init.d/myapp
chkconfig --add myapp
chkconfig myapp on
npm install -g pm2
pm2 start /opt/myapp/app.js
pm2 startup
pm2 save
CentOS 下 PM2 会自动生成 systemd 服务
Environment=如果你愿意,可以告诉我:
cat /etc/redhat-release)我可以给你完全对应的配置。