pm2简单介绍

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-01 05:14:49

非常简洁的一个使用记录,没有去做深究.先挖个坑.

介绍

pm2forever一样,都可以作为nodejs的守护程序,当然不仅仅是nodejs.但相对比来说pm2的配置和图形化以及插件都做的不错.

pm2 list:



pm2的控制台,这部分花钱才能使用大部分功能.

安装

1
npm install -g pm2

pm2使用

12345
cd staticpm2 start app.js  --name "static" -e ~/logs/static_err.log -o logs/static_out.log --log-date-format "YYYY-MM-DD HH:mm Z"cd apipm2 start app.js  --name "api" --log-date-format "YYYY-MM-DD HH:mm Z" -e logs/api_err.log -o ~/logs/api_out.log

配置文件的使用

上面那样写,太麻烦,可以使用配置方式 pm2 start pm2.json

12345678910111213
{  "apps":[{    "name":"test_api",    "cwd":"/root/code/test-api",    "args":"--port=1550",    "env":{      "NODE_ENV":"test"    },    "script":"app.js",    "error_file": "/root/code/logs/test_api_err.log",    "out_file": "/root/code/logs/test_api_out.log"  }]}

提示

  1. 没有相互依赖关系的程序要单独自己一个配置,因为reload的时候,会造成所有程序重新加载.
    比如,上面的staticapi是有关联的,他们应该放在一个配置文件中.op是一个独立的业务,那就应该自己建立一个独立的配置文件.实际中,也是每个独立应用都有自己的配置文件
  2. pm2 中的配置,只能修改,不能删除,可能使用的extend的方式

比如: 一开始我设置了DEBUG=remind 然后删除这个配置,再reload,debug依然为remind,所以只好修改为debug=- 这样就不会污染log了

  1. 注意一下环境变量参数的使用方式

只启动某个app

1234
$ pm2 start   ecosystem.config.js --only api-app$ pm2 restart ecosystem.config.js --only api-app$ pm2 reload  ecosystem.config.js --only api-app$ pm2 delete  ecosystem.config.js --only api-app

使用pm2-logrotate

当正式上线后,日志文件会变得慢慢庞大.通过pm2-logrotate,可以对日志文件进行归档.

安装

1
pm2 install pm2-logrotate

配置

可以进行自定义配置,参数请查看github

123
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-sspm2 set pm2-logrotate:max_size 1Mpm2 set pm2-logrotate:workerInterval 1800

结果如下:

123456789
[PM2] Module pm2-logrotate restarted== pm2-logrotate ==┌────────────────┬─────────────────────┐│ key            │ value               │├────────────────┼─────────────────────┤│ dateFormat     │ YYYY-MM-DD_HH-mm-ss ││ max_size       │ 1M                  ││ workerInterval │ 1800                │└────────────────┴─────────────────────┘

重启服务

重启服务命令为pm2 restart XXX.但是这样会终端nodejs程序,导致服务终端,在程序重新启动之前就无法处理请求了.

幸好,pm2提供了信号传递.pm2 sendSignal SIGUSR2 XXX,程序对信号进行处理.比如程序先fork一个子进程提供服务,然后在将子进程重启,从而达到了热更新.当然这需要程序进行一下简单的处理. 具体查看官方文档

原文:大专栏  pm2简单介绍


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!