PM2是一个强大的、广泛使用的、功能丰富的、适用于Node.js应用程序的管理器。每次服务器启动/重新启动时,使用PM2可以重新启动PM2所管理的进程。PM2的主要功能之一是支持启动脚本(根据服务器上的默认初始化系统动态生成),它会在每次服务器重启时重新启动PM2和应用进程。
启动脚本将PM2设置为init系统下的服务。当服务器重新启动时,它会自动重新启动PM2,然后PM2会重新启动它正在管理的所有Node.js 应用程序/进程。
在本文中,小编简单介绍如何将PM2作为服务部署以可靠的管理Node.js应用程序。另外,测试系统使用systemd服务和系统管理器,并且所有命令都将以root身份执行(在必要时使用sudo使有权限的用户可以调用它)。
为Init系统生成PM2启动脚本
PM2旨在与Linux系统上的默认初始化系统(它可以自动检测)一起工作,以生成启动脚本并将PM2配置为可以在系统启动时重新启动的服务
要生成启动脚本,只需以root身份运行以下命令:
# pm2 startup
上述命令告诉PM2来检测可用的INIT系统,生成配置和启用启动系统。
此外,还可以像这样显式指定init系统:
# pm2 startup systems
要确认PM2启动服务在systemd下启动并运行,请运行以下命令(将pm2-root.service替换为你的服务的实际名称,检查上一个命令的输出):
# systemctl status pm2-root.service
启动Node.js应用程序/进程
接下来,要使用PM2启动Node.js应用程序,如下所示。如果已经通过PM2启动并运行的话,,可以跳过这一步:
# cd /var/www/backend/api-v1-staging/ # pm2 start src/bin/www.js -n api-service-staging
接下来,需要通过运行以下命令来注册/保存要使用PM2管理的当前进程列表,以便它们在系统启动时(每次定期或服务器意外重新启动时)重新生成:
# pm2 保存
验证PM2启动时自动启动的Node.js应用程序
最后,需要测试设置是否正常工作。重新启动系统,并检查所有Node.js进程是否都在PM2下运行。
# pm2 ls 或者 # pm2 status
请注意,可以通过运行以下命令手动复活进程:
# pm2 resurrect
禁用启动系统
可以通过运行unstartup子命令来禁用启动系统,如下所示。
# pm2 unstartup 或者 # pm2 startup systemd
要更新启动脚本,首先禁用它,然后运行一下命令再次启动它。
# pm2 unstartup # pm2 startup