今天偶然发现一个部署 Node 生产环境的神器,pm2.5,哦,不,是PM2
pm2 是一个带有负载均衡功能的 Node 应用的进程管理器
它有如下特点:
- 后台运行
- 内建负载均衡
- 无间断重载
- 具有启动脚本
- 停止不稳定的进程
- 强大的控制台检测
- 远程控制和实时的接口API
下载
1 | $ npm install pm2 -g |
创建应用
1 | $ pm2 start index.js # 快速启动应用 |
当看到类似的信息,并且 status=online
时,代表应用启动成功
更多命令如下
1 | $ pm2 start | restart | stop index.js # 启动、重启、停止 |
配置文件
pm2 的启动参数有很多,每次输入这些参数也是很烦人的,我们可以将这些参数放到配置文件中,然后直接启动配置文件即可,创建文件 pm2_config.json
1 | { |
1 | $ pm2 start pm2_config.json |
文件格式支持很多种,如 yml, js, json5
,更多配置见文档
目录文件
pm2 启动一次后就会生成如下目录,相关日志、pid、配置等都在其中
- $HOME/.pm2 will contain all PM2 related files
- $HOME/.pm2/logs will contain all applications logs
- $HOME/.pm2/pids will contain all applications pids
- $HOME/.pm2/pm2.log PM2 logs
- $HOME/.pm2/pm2.pid PM2 pid
- $HOME/.pm2/rpc.sock Socket file for remote commands
- $HOME/.pm2/pub.sock Socket file for publishable events
- $HOME/.pm2/conf.js PM2 Configuration
应用列表
1 | $ pm2 list |
执行该命令,会显示上图一样的信息,也就是应用列表 pm2 (ls | l)
都可以
1 | $ pm2 logs jlist # 使用 json 格式在一行中展示 |
查看日志
1 | $ pm2 logs # 查看所有进程日志 |
更多命令
1 | $ pm2 logs [app-name | id] # 查看指定应用日志 |
监控
1 | $ pm2 monit # 检测当前进程 CPU、内存、日志 |
当输入上述命令时,会出现类似上图的界面,在这里我们可以清楚的看到当前进行列表、日志、活跃度、进程详情等信息,使用 左右
来控制面板的焦点,使用 上下键
来滚动屏幕查看信息
keymetrics
如果配合 keymetrics 来使用,监控将变的更加强大
输入注册命令
1 | $ pm2 register |
根据命令行提示一步步完善注册信息,然后运行
1 | $ pm2 monitor [app-name] |
或
1 | $ pm2 web |
会在返回的进程列表中看到一个地址
进入该地址,并使用刚注册的信息登陆,就可以看到一个更加强大的检测系统
自启动
1 | $ pm2 startup # 开机自启动 |
或者指定自己的系统
1 | $ pm2 startup [ubuntu | ubuntu14 | ubuntu12 | centos | centos6 | arch | oracle | amazon | macos | darwin | freebsd | systemd | systemv | upstart | launchd | rcd | openrc] |
备份和恢复
假如出现机器出现崩溃,那 pm2 进程信息很可能丢失,但是我们可以利用备份来避免这种情况
1 | $ pm2 (save | dump) |
保存完以后我们利用 kill
来模拟 pm2 丢失的情况
1 | $ pm2 kill |
接下来使用恢复命令
1 | $ pm2 resurrect |
这样我们又可以愉快的开发了
其他常用命令
更多的进程命令如下
1 | $ pm2 (show | describe) (app-name| id) # 显示进程详情 |
pm2 还有很多强大的功能是我没有提到的,你需要经常使用 pm2 -h /pm2 start -h
等命令查看帮助文档,来更好的完成工作,或者干脆扒一遍文档
