PM2实用指南
目录
1 安装nodejs
我就不造轮子了,上大招官方链接
2 安装PM2
2.1 安装
|
|
2.2 目录介绍
pm2安装好后,会自动创建下面目录。看文件名基本就知道干嘛的了,就不翻译了。
$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
2.3 常用命令
- 启动服务
- Usage:
pm2 start appname [option]
- option:
--watch
:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。-i --instances
:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。--ignore-watch
:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如–ignore-watch=“test node_modules “some scripts””-n --name
:应用的名称。查看应用信息的时候可以用到。-o --output <path>
:标准输出日志文件的路径。-e --error <path>
:错误输出日志文件的路径。--node-args <args>
: 传入到nodejs的参数--interpreter <interpreter>
:the interpreter pm2 should use for executing app (bash, python…)。比如你用的coffee script来编写应用。
- Usage:
- 重启服务
- Usage:
pm2 restart appname
- Usage:
- 停止服务
- Usage:
pm2 stop appname|appid
停止一个服务pm2 stop all
停止所有服务
- Usage:
- 删除服务
- Usage:
pm2 delete appname|appid|all
- Usage:
- 保存当前已经启动了的服务
- Usage:
pm2 save
- Usage:
- 设置开机自启的配置
Usage:
pm2 startup
pm2 startup
以后会得到以下提示1 2 3
[PM2] Init System found: upstart [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/opt/nodejs/bin /opt/nodejs/lib/node_modules/pm2/bin/pm2 startup systemd -u cc --hp /home/cc
按照上边的提示设置systemd启动脚本
1
sudo env PATH=$PATH:/opt/nodejs/bin /opt/nodejs/lib/node_modules/pm2/bin/pm2 startup systemd -u cc --hp /home/cc
启动systemd服务
1
systemctl enable pm2-cc
- 查看进程
- Usage:
pm2 list
- Usage:
- 查看某个进程状态
- Usage:
pm2 describe appid
- Usage:
- 查看日志
- Usage:
pm2 logs
- Usage:
3 启动服务配置文件
- 配置文件里的设置项,跟命令行参数基本是一一对应的。
- 可以选择
yaml
或者json
文件, 看个人喜好json
格式的配置文件,pm2
当作普通的js
文件来处理,所以可以在里面添加注释或者编写代码,这对于动态调整配置很有好处。
参考官方文档中的例子:
|
|
4 环境切换
4.1 环境配置声明
首先,在配置文件中,通过env选项声明多个环境配置。简单说明下:
env为默认的环境配置(生产环境),
env_dev
、env_test
则分别是开发、测试环境。可以看到,不同环境下的NODE_ENV
、REMOTE_ADDR
字段的值是不同的。在应用中,可以通过
process.env.REMOTE_ADD
R等来读取配置中生命的变量。1 2 3 4 5 6 7 8 9 10 11 12
"env": { "NODE_ENV": "production", "REMOTE_ADDR": "http://www.example.com/" }, "env_dev": { "NODE_ENV": "development", "REMOTE_ADDR": "http://wdev.example.com/" }, "env_test": { "NODE_ENV": "test", "REMOTE_ADDR": "http://wtest.example.com/" }
4.2 启动指明环境
假设通过下面启动脚本(开发环境),那么,此时process.env.REMOTE_ADDR的值就是相应的 http://wdev.example.com/。
|
|
5 负载均衡
命令如下,表示开启三个进程。如果-i 0,则会根据机器当前核数自动开启尽可能多的进程。 参考
|
|
6 更新PM2
|
|