PM2实用指南
目录
1 安装nodejs
我就不造轮子了,上大招官方链接
2 安装PM2
2.1 安装
| |
2.2 目录介绍
pm2安装好后,会自动创建下面目录。看文件名基本就知道干嘛的了,就不翻译了。
$HOME/.pm2will contain all PM2 related files$HOME/.pm2/logswill contain all applications logs$HOME/.pm2/pidswill contain all applications pids$HOME/.pm2/pm2.logPM2 logs$HOME/.pm2/pm2.pidPM2 pid$HOME/.pm2/rpc.sockSocket file for remote commands$HOME/.pm2/pub.sockSocket file for publishable events$HOME/.pm2/conf.jsPM2 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 startuppm2 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启动脚本
1sudo env PATH=$PATH:/opt/nodejs/bin /opt/nodejs/lib/node_modules/pm2/bin/pm2 startup systemd -u cc --hp /home/cc启动systemd服务
1systemctl 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_ADDR等来读取配置中生命的变量。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
| |
Cc