Linux系统搭建pm2环境管理node进程

Linux系统搭建pm2环境管理node进程

安装

安装PM2

npm install -g pm2

查看版本

pm2 -v

PM2常用命令


#查看进程
pm2 list

#启动app.js应用程序(app.js自定义配置)
pm2 start <app.js>

#停止所有程序
pm2 stop all

#重启app.js应用程序
pm2 restart <app.js>

#关闭并删除所有应用
pm2 delete all

#保存当前应用列表
pm2 save

#创建开机自启动命令
pm2 startup 

#设置开机自启动
systemctl enable pm2-root

#实时查看日志
pm2 logs

配置PM2

配置方式

运行命令pm2 ecosystempm2 init,默认会生成ecosystem.config.js配置文件

自定义ecosystem.config.js

    {
      "apps": [{
        "name": "app",                          #程序名称
        "script": "./",                         #启动脚本
        "cwd": "./",                            #程序目录
        "watch":[                               #需要监控的目录,一旦变化自动重启
            "views"
        ],
      "env": {
      "NODE_ENV": "production"                  #环境参数,当前指定为生产环境
        }
        "error_file":"./logs/err.log",          #错误日志路径
        "out_file":"./logs/out.log",            #普通日志路径
        "log_date_format":"YYYY-MM-DD HH:mm Z"  #日期格式
        }]
    }

PM2常用配置项解析

1. apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用

2. name:应用程序名称"app"

3. cwd:应用程序所在的目录"./"

4. script:应用程序的脚本路径"./"

5. log_date_format: 日志文件名输出日期格式"YYYY-MM-DD HH:mm Z"

6. error_file:自定义应用程序的错误日志文件"./logs/app-err.log",

7. out_file:自定义应用程序日志文件"./logs/app-out.log"

8. instances: 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max

9. min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量

10. max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)

11. cron_restart:定时启动,解决重启能解决的问题

12. watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。

13. "ignore_watch": [                           // 不用监听的文件
            "node_modules",
            "logs"
        ],
13. merge_logs:// 设置追加日志而不是新建日志

14. exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs

15. exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork

16. autorestart:启用/禁用应用程序崩溃或退出时自动重启,默认为true, 发生异常的情况下自动重启

17. vizion:启用/禁用vizion特性(版本控制)

18. "args": "", // 传递给脚本的参数

19. env: {
        PM2_SERVE_PATH: "./apidoc",    //静态服务路径
        PM2_SERVE_PORT: 8080,   //静态服务器访问端口
        NODE_ENV: 'development' //启动默认模式
      },

20. env_production : {
        NODE_ENV: 'production'  //使用production模式 pm2 start ecosystem.config.js --env production
      },

查看日志

日志目录

/root/.pm2/logs

manager-server-error-0.log   #manager-server程序内的错误日志

manager-server-out-0.log     #manager-server程序内的普通日志

trade-server-error-1.log     #trade-server程序内的错误日志

trade-server-out-1.log       #trade-server程序内的普通日志

以上日志名称及路径可进入配置文件自定义修改

日志管理

为了更方便阅读查找log,可以进行一下操作:

  • 增加时间格式
  • 修改log存放路径
  • 合并error-log和out-log,指向同目录下的一个log文件
  • 增加日志分割

修改配置文件ecosystem.config.js如下注释处

module.exports = {
    apps: [
        {
            name: "manager-server",
            script: "./dist/src/index.js",
            cwd:"./manager-server",
            node_args: "-r dotenv/config",
            args: "dotenv_config_path=../.env",
            instances: 1,
            autorestart: true,
            watch: false,
            log_date_format: "YYYY-MM-DD HH:mm:ss",                     #增加时间格式
            error_file: "/var/log/kingnewoptions/manager-server.log",   #按需求修改路径,指向同一log文件
            out_file: "/var/log/kingnewoptions/manager-server.log",     #同上
            merge_logs: true,                                           #合并日志
        },
        {
            name: "trade-server",
            script: "./dist/src/index.js",
            cwd:"./trade-server",
            node_args: "-r dotenv/config",
            args: "dotenv_config_path=../.env",
            instances: 1,
            autorestart: true,
            watch: false,
            log_date_format: "YYYY-MM-DD HH:mm:ss",                     #增加时间格式
            error_file: "/var/log/kingnewoptions/trade-server.log",     #按需求修改路径,指向同一log文件
            out_file: "/var/log/kingnewoptions/trade-server.log",       #同上
            merge_logs: true,                                           #合并日志
        }]
};

增加日志分割功能需安装工具pm2-logrotate

安装命令

pm2 install pm2-logrotate

安装完成后就可以设置参数,例如:设置日志最大容量为10M

[root@wfq Kingnewoptions]# pm2 set pm2-logrotate:max_size 10M    #设置日志最大容量为10M 
[PM2] Module pm2-logrotate restarted
== pm2-logrotate ==
┌────────────────┬─────────────────────┐
│ key            │ value               │
├────────────────┼─────────────────────┤
│ max_size       │ 10M                 │              #日志最大为10M,超过就会分割
│ dateFormat     │ YYYY-MM-DD_HH-mm-ss │              #日志文件名日期格式
│ retain         │ 30                  │              #保留文件个数
│ compress       │ false#是否压缩日志
│ workerInterval │ 30                  │              #监控日志尺寸
│ rotateInterval │ 0 0 * * *           │              #设置强制分割,默认为每天0点分割
│ rotateModule   │ true#是否分割pm2本身日志
└────────────────┴─────────────────────┘

以上是参数解释,都为默认参数,可根据需求配置参数,设置完成后需重启pm2生效,执行 pm2 restart,如报错,可先删掉进程再启动,先pm2 delete allpm2 start

你可能感兴趣的:(Linux环境,pm2)