pm2 设置服务进程开机启动

12 min read

全局安装pm2

npm install pm2 -g

找到项目的目录,使用pm2进行启动
执行命令pm2 start 项目启动文件进行启动

pm2 start app.js

执行命令pm2 save保存现有列表数据,开机后会自动加载已保存的应用列表进行启动

pm2 save

设置开机启动

执行命令pm2 startup进行设置开机启动
输出以下信息就表明已经设置成功

pm2 startup
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/src/node-v10.15.3-linux-x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/local/src/node-v10.15.3-linux-x64/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/src/node-v10.15.3-linux-x64/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/src/node-v10.15.3-linux-x64/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd
[root@centos7 server]#

centos7 可以通过systemctl查看服务状态

centos7 可以通过systemctl查看服务状态

[root@centos7 server]# systemctl status pm2-root

● pm2-root.service - PM2 process manager
   Loaded: loaded (/etc/systemd/system/pm2-root.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://pm2.keymetrics.io/

app指pm2创建的项目名

pm2 show app # 显示应用程序的所有信息
pm2 -h # 查看pm2帮助信息,显示命令用法
pm2 start app.js -n project # 将应用设置别名为project
pm2 list # 显示所有项目
pm2 stop app # 停止应用服务
pm2 restart app # 重启应用服务
pm2 delete app # 在进程中删除应用
pm2 status # 查看状态
pm2 monit # 查看占用的CPU和内存