PM2 对 Node 项目进行线上部署与配置

pm2 是一个带有负载均衡功能的 Node 应用的进程管理器。

1. pm2 主要特点

  • 内建负载均衡(使用Node cluster 集群模块)
  • 保持后台运行
  • 进程守护,系统崩溃后自动重启
  • 启动多进程,充分利用CPU和内存
  • 自带日志记录功能
  • 控制台检测
  • 提供 HTTP API

2. pm2 安装及常用命令

安装

$ npm install pm2 -g   // 全局安装
$ pm2 --version  // 查看版本

pm2 命令

启动(入口文件为app.js, 配置文件为pm2.conf.json):

// 直接启动
$ pm2 start app.js

// 通过配置文件启动
$ pm2 start app.js

查看启动历史:

$ pm2 list

重启:

修改代码后需要执行:

$ pm2 restart <AppName>/<id>

<!--  <AppName>/<id> 可通过 pm2 list 查看-->

停止进程(可重新启动)

$ pm2 stop <AppName>/<id>

删除进程(不可重新启动)

$ pm2 delete <AppName>/<id>

其他命令

pm2 info <AppName>/<id>  // 查看进程详细信息
pm2 log <AppName>/<id>   // 查看进程日志, 执行后,可进行线上调试,查看打印日志
pm2 monit <AppName>/<id>  // 打开监控 logs

3. pm2 常用配置

根目录下,新建空文件 /logs/err.log 和 /logs/out.log

新建配置文件 pm2.conf.json

pm2.conf.json:

{
    "apps": {
        "name": "pm2-test-server", // 起个进程名,即AppName
        "script": "app.js",  // 启动的入口文件(koa2项目中为/bin/www.js)
        "watch": true,      // 监听文件变化,自动重启
        "ignore_watch": [   // 不需要监听的文件
            "node_modules",
            "logs"
        ],
        "instances": 4,   // 设置多进程
        "error_file": "logs/err.log",  // 错误日志存储的文件
        "out_file": "logs/out.log",    // console.log()打印的都会放进去
        "log_date_format": "YYYY-MM-DD HH:mm:ss" // 给每行日志标记一个时间
    }
}

修改package.json:

{
  "name": "pm2-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
  
    ... 
    
    "cross-env": "^5.2.0",
    "nodemon": "^1.19.1"
    
    ...
    
  }
}

配置完后,执行下面命令,即可启动项目

$ npm run prd
posted @ 2019-06-10 14:52  Mr.曹  阅读(5380)  评论(0编辑  收藏  举报