介绍
PM2 是一个守护进程管理器,可以帮助您管理应用程序并使其保持在线状态。 PM2 入门非常简单,它提供了一个简单直观的 CLI,可以轻松看到所有进程的状态。
PM2 就是 Node 的一个包,可以使用 npm 或 yarn 轻松安装。可能是因为他是由 JavaScript 而发的,所有更多的作为部署 Node 后端而广泛使用,但是他并不是只能用于 Node 项目。
安装
1
2
3
4
| # npm
npm install pm2@latest -g
# or yarn
yarn global add pm2
|
使用
PM2 使用起来非常简单,他的文档也相当详细,主要分为命令行方式和配置文件方式。
命令行方式
1
2
3
4
| pm2 start app.js
pm2 start bashscript.sh
pm2 start python-app.py --watch
pm2 start binary-file -- --port 1520
|
命令行方式可以在命令行直接传入参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| # 指定应用程序名称
--name <app_name>
# 指定服务端口号
--port <80>
# 指定实例数,用于集群(cluster)模式
-i --instances <number>
# 文件更改时观察并重新启动应用程序,主要用于开发的时候,文件变化不需要手动重启。
--watch
# 设置应用程序重新加载的内存阈值,超过这个阈值他会自动重启,避免内存溢出。
--max-memory-restart <200MB>
# 指定日志文件
--log <log_path>
# 向脚本传递额外参数
-- arg1 arg2 arg3
# 自动重启之间的延迟
--restart-delay <delay in ms>
# 在日志前添加时间
--time
# 不自动重启应用程序,默认如果程序出现问题他会重新启动。
--no-autorestart
# 指定强制重启的cron,设置重启计划
--cron <cron_pattern>
# 附加到应用程序日志
--no-daemon
# 选择环境,这个参数一般用于配置文件启动,配置文件里配置不同的环境参数,注意格式:env_pro对应:--env pro
--env
|
配置文件方式
1
2
3
| # 生成初始化配置文件 ecosystem.config.js
# 上面的参数皆可以在配置文件里进行配置
pm2 ecosystem
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # ecosystem.config.js
module.exports = {
apps : [{
name: "app",
script: "./app.js",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}, {
name: 'worker',
script: 'worker.js'
}]
}
|
1
2
| pm2 start ecosystem.config.js # 默认环境 env
pm2 start ecosystem.config.js --env production # 用于选择不同的环境,env_production
|
其他命令
1
2
3
4
5
| # 进程管理
pm2 restart app_name
pm2 reload app_name
pm2 stop app_name
pm2 delete app_name
|
1
2
| # 查看状态
pm2 [list|ls|status] # 表现一样,别名
|
1
2
3
| # 查看日志
pm2 logs
pm2 logs --lines 200
|
1
2
3
| # 监控
pm2 monit # 终端监控,不需要浏览器
pm2 plus # web端监控,更好看但是需要浏览器也有无浏览器模式。
|
模式
PM2 有两种模式:
遇到的问题
我在部署项目的时候因为项目中使用了修改环境变量的功能,又用了cluster,导致项目表现不一致的问题,这是因为每个实例都是隔离的,通过应用功能修改的都是自己的环境变量,所有相互不能同步,导致表现不一致。
我在用 PM2 部署yarn项目的时候,直接使用 yarn start
命令,而在Cluster模式下始终失败,可能是因为 Cluser 只能是 Node 项目,最终使用 node app.js
方式成功。
参考资料
GitHub地址
官网文档