在CentOS上实现Node.js应用程序的自动重启,可以使用以下几种方法:
- 使用PM2(推荐)
PM2是一个功能强大的Node.js进程管理器,可以帮助您在CentOS上实现Node.js应用程序的自动重启。首先,您需要安装PM2:
sudo yum install -y nodejs npm sudo npm install pm2@latest -g
接下来,使用PM2启动您的Node.js应用程序:
pm2 start app.js --name my-app
现在,您的应用程序将在后台运行,并在发生故障时自动重启。您还可以使用以下命令查看应用程序的状态:
pm2 status
要设置PM2在系统启动时自动运行,请执行以下命令:
pm2 startup
然后,保存当前的PM2进程列表,以便在系统重启后恢复:
pm2 save
- 使用Systemd
创建一个新的Systemd服务文件:
sudo vi /etc/systemd/system/my-app.service
将以下内容粘贴到文件中,用您的实际应用程序路径和用户替换/path/to/your/app.js
和your-user
:
[Unit] Description=My Node.js App After=syslog.target network.target [Service] User=your-user WorkingDirectory=/path/to/your/app ExecStart=/usr/bin/node /path/to/your/app.js Restart=always [Install] WantedBy=multi-user.target
保存并退出文件。
启用并启动新创建的服务:
sudo systemctl enable my-app.service sudo systemctl start my-app.service
现在,您的Node.js应用程序将在系统启动时自动运行,并在发生故障时自动重启。
- 使用Supervisor
首先,安装Supervisor:
sudo yum install -y epel-release sudo yum install -y supervisor
接下来,创建一个新的Supervisor配置文件:
sudo vi /etc/supervisord.d/my-app.conf
将以下内容粘贴到文件中,用您的实际应用程序路径替换/path/to/your/app.js
:
[program:my-app] command=/usr/bin/node /path/to/your/app.js autostart=true autorestart=true stderr_logfile=/var/log/my-app.err.log stdout_logfile=/var/log/my-app.out.log user=your-user
保存并退出文件。
重新启动Supervisor以应用更改:
sudo systemctl restart supervisord
现在,您的Node.js应用程序将在系统启动时自动运行,并在发生故障时自动重启。您还可以使用以下命令查看应用程序的状态:
sudo supervisorctl status my-app