📅  最后修改于: 2023-12-03 15:03:47.990000             🧑  作者: Mango
在运维中,我们经常会使用 pm2 来管理 Node.js 程序。当我们需要服务器重启或者应用程序异常退出时,需要手动重新启动 pm2 管理的应用程序,这样会增加很多手动操作,效率不高并且容易出错。而 pm2 控制台提供了一种方便且简单的方法来自动启动应用程序。
pm2 提供了一个插件,可以用来自动启动应用程序,安装方式如下:
pm2 install auto-start
添加至启动项:
pm2 save
这样,pm2 守护进程就会自动在系统启动时自动启动已存在的应用程序。
systemd 是 Linux 中启动及管理系统服务的标准工具,可以用 systemd 来启动 pm2 守护进程,然后由 pm2 来启动应用程序。配置步骤如下:
1. 创建 systemd Unit 文件
创建一个 pm2 文件并添加必要的属性。
sudo nano /etc/systemd/system/pm2.service
然后将以下内容添加到该文件:
[Unit]
Description=PM2 service manager
[Service]
Type=forking
User=<user-name>
WorkingDirectory=/home/<user-name>/my-app
ExecStart=/usr/local/bin/pm2 start
ExecReload=/usr/local/bin/pm2 reload all
ExecStop=/usr/local/bin/pm2 stop all
KillMode=process
Restart=on-failure
RestartSec=2
[Install]
WantedBy=multi-user.target
请将 <user-name>
替换为您要运行应用程序的用户名,并将 /home/<user-name>/my-app
替换为应用程序的路径。您还可以根据需要更改其他属性。
2. 重新加载 systemd 并启用 pm2
完成 pm2 文件的编辑并保存更改后,请重新加载 systemd 并启用 pm2。
sudo systemctl daemon-reload
sudo systemctl enable pm2
sudo systemctl start pm2
您现在可以验证 pm2 是否正在运行,以及您的应用程序是否正在运行。
3. 程序的启动和停止
在通过 systemd 启动 pm2 后,我们已经将 pm2 守护进程自动启动设置好了。现在,如果需要手动启动、停止或重新加载您的应用程序,请使用以下命令:
pm2 start <app-name>
pm2 stop <app-name>
pm2 reload <app-name>
此外,您还可以使用 pm2 的其他命令来管理您的应用程序。
通过上述方式,我们可以实现服务器启动时自动启动 pm2 管理的应用程序,提高了效率并保证了应用程序的稳定性。