什么是PM2,P(rocess)M(anager)2 Runtime,运行时的进程管理器。
为什么要用PM2,作为进程管理者,它提供了大量的便利操作帮助开发者管理他们的应用。
运行如下的命令1
pm2 start app.js
启动一个进程就是如此的简单,一旦启动,它将会永久运行,在机器崩溃或者重启的时候,自动重启。
安装pm2
用npm
1 | npm install pm2 -g |
用yarn1
yarn global add pm2
CLI 自动提醒
安装completion1
pm2 completion install
然后当你输入命令的时候,可以提醒你哪些命令可用。比如输入pm2 re,再按tab键,输出如下内容,提示你re开头的命令有哪些。1
2➜ ~ pm2 re
register reload reloadLogs report reset restart resurrect
如果不知道某个命令有哪些参数,哪些功能,可以使用–help标志。1
2# 查看pm2 restart怎么用
pm2 restart -h
管理多个进程(Manage multiple processes)
PM2会保留您的进程列表,以便能够轻松启动,重启和停止它们。
1 | # start and add a process to your list |
当应用启动后,可以使用应用名来管理你的应用。1
2
3
4
5
6
7
8# stop the process (kill the process but keep it in the process list)
pm2 stop app
# start the process
pm2 start app
# both stop and start
pm2 restart app
同样,当服务器重启时,可以使用startup脚本来启动。
查看日志(Access your logs)
使用pm2 logs来查看所有进程的实时日志,也可以通过进程名(进程ID)来查看指定进程的日志,比如pm2 logs app。
在~/.pm2/logs文件夹下,有进程的所有日志(常规输出/错误输出)
Clusterize
cluster模式可以充分利用服务器CPU,不需要任何代码的改动。
1 | # 使用 -i 参数可以启动cluster模式 |
Ecosystem File
使用Ecosystem File来代替在多个服务器上部署或使用多个命令行参数启动进程,方便轻松管理应用。
生成模版文件
在pm2 3.0以上的版本中,有pm2 init命令,在3.0以下,有pm2 ecosystem命令,都会生成一个ecosystem.config.js文件,内容大致如下:
命令:1
pm2 init # pm2 ecosystem
生成的文件 ecosystem.config.js
1 | module.exports = { |
用法
常规用法
在项目根目录下,可以使用pm2 start命令启动所有进程,默认查找ecosystem.config.js文件,启动所有定义在apps下的进程。
如果文件重命名了,假设为file.api.js,那么启动命令改为pm2 start file.api.js,效果和ecosystem一样。
启动特定的app
假设file.api.js下有app和file的服务可以启动,但是只启动file服务
1 | module.exports = { |
那么启动命令使用–only <app_name>,如下:1
pm2 start file.api.js --only app
环境变量
pm2支持在不同环境下不同的参数,格式: env_
使用–env标志来启动不同的环境:1
2pm2 start file.api.js // 默认development,使用env下的变量
pm2 start file.api.js --env production // 使用env_production下的变量
不可变环境
应用的环境在应用进程创建的时候就定下来,即使重启也不会改变应用的环境,这种行为保证了环境的一致性。
如果要强制更新应用的环境,一定要使用–update-env:1
2
3
4
5# refresh the environment
pm2 restart ecosystem.config.js --update-env
# switch the environment
pm2 restart ecosystem.config.js --env production --update-env