PM2进程管理

PM2 process manager for Node.js
2018/12/4 PM2 => 3.2.2

Installation

npm install pm2 -g

基础命令

pm2 start   // 启动并添加一个进程
pm2 ls  // 显示所有进程
pm2 delete   // 停止并删除指定的进程
// 此进程使用kill 无效,因为存在守护进程,所以手动kill掉某个进程后会自动重启
pm2 stop   // 停止进程
pm2 start   // 启动指定进程
pm2 restart   // 重启指定进程 也可使用正则匹配多个进程

日志

// 1 实时查看某进程日志
pm2 logs 
// 2 当没有指定日志目录时,默认在~/.pm2/logs中存放这所有进程日志历史

pm2 flush 清空所有历史应用日志

负载均衡

pm2 start app.js -i  // 启动指定数量的子进程

配置文件

  1. 使用Generator
pm2 init  // 生成 ecosystem.config.js
// 此时 pm2 start  ||  pm2 start ecosystem.config.js 即可使用配置启动
// ecosystem.config.js
// 配置多个环境
module.exports = {
  apps : [{
    name: "app",
    script: "./app.js",
    // log start
    output: "./out.log",
    error: "./error.log",
    log: "./combined.outerr.log",
    log_type: "json", // 将日志按json打出
    log_date_format: "YYYY-MM-DD",
    merge_logs: true,
    // log end
    // output:  is only standard output (console.log)
    // error: is only error output (console.error)
    // log combines output and error, disabled by default

    // balancing start
    instances: "max",
    // balancing end

    // watch and reload
    watch: true,
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}
// 通过--env 指定环境 
// 当进程被启动后 其环境则一般不可变,可通过--update-env 强制改变环境
  1. 自己设置配置文件 app.json
[{
    "name": "app",
    "script": "./app.js",
    "error_file": "/data/app-logs/argus/err.log",
    "out_file": "/data/app-logs/argus/out.log",
    "exec_mode": "cluster_mode",  // 单点/集群
    "listen_timeout" : 10000,
    "log_date_format" :"YYYY-MM-DD HH:mm:ss.SSS",
    "env": {
        "NODE_ENV": "production"
    }
}]

保存进程列表

// ~/.pm2/dump.pm2  ||  ~/.pm2/dump.pm2.bak
pm2 dump | save  // 保存当前的进程列表
pm2 resurrect   // 恢复之前保存的进程列表

  1. 进程列表用json格式输出
 pm2 prettylist     // print json in a prettified JSON
  1. 配置文件具体参数

https://pm2.io/doc/en/runtime/reference/ecosystem-file/

  1. 配置文件中的部署deploy 使用ssh

https://pm2.io/doc/en/runtime/guide/easy-deploy-with-ssh/

  1. PM2 源码

https://github.com/Unitech/pm2

你可能感兴趣的:(PM2进程管理)