pm2的配置文件

PM2 是 node 进程管理工具,可以利用它来简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。这篇文章主要介绍pm2配置文件的相关写法,文件支持的配置格式为Javascript、JSON、YAML,以下主要讲述Javascript,JSON这2种格式。

1.Javascript格式

输入以下命令可以生产配置文件模板:

pm2 init

 然后执行:

pm2 ecosystem

生成是ecosystem.config.js如下:

module.exports = {
  apps : [{
    name: 'api',
    script: 'app.js',
    args: 'one two',
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    }
  }],

  deploy : {
    production : {
      user : 'node',
      host : '212.83.163.1',
      ref  : 'origin/master',
      repo : 'git@github.com:repo.git',
      path : '/var/www/production',
      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
    }
  }
};

当然如果不使用命令,我们可以直接在项目根目录创建ecosystem.config.js配置文件。

可以根据需要修改配置内容,启动命令:

pm2 start ecosystem.config.js

请注意,使用Javascript配置文件要求文件名结尾为 .config.js。其实ecosystem.config.js可以不用写,直接pm2 start也能启动。

2.json格式

在根目录新建文件ecosystem.config.json。数据示例如下:

{
    "apps": [{
        "name": "test",  //名称
        "script": "server.js", //程序入口
        "cwd": "./",     //根目录
        exec_mode: 'cluster', //启动模式
        "instances": 1,
        "error_file":"./logs/error.log",//错误输出日志
        "out_file":"./logs/out.log",  //日志
        "log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
     }]
 }

启动命令:

pm2 start ecosystem.config.json

也可以把命令写在package.json里。如下:

"scripts": {
    //...
    "pm2":"pm2 start ecosystem.config.json"
}

这样就可以使用npm来启动:

npm run pm2

3. 常用配置项说明:

name:应用程序名称;

cwd:应用程序所在的目录;

script:应用程序的脚本路径;

log_date_format: 指定日志日期格式,如YYYY-MM-DD HH:mm:ss;

error_file:自定义应用程序的错误日志文件,代码错误可在此文件查找;

out_file:自定义应用程序日志文件,如应用打印大量的标准输出,会导致pm2日志过大;

pid_file:自定义应用程序的pid文件;

interpreter:指定的脚本解释器;

interpreter_args:传递给解释器的参数;

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

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

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

autorestart :默认为true, 发生异常的情况下自动重启;

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

max_memory_restart:最大内存限制数,超出自动重启;

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

ignore_watch:忽略监听的文件夹,支持正则表达式;

merge_logs: 设置追加日志而不是新建日志;

exec_interpreter:应用程序的脚本类型,默认是nodejs;

exec_mode:应用程序启动模式,支持fork和cluster模式,默认是fork;

autorestart:启用/禁用应用程序崩溃或退出时自动重启;

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

env:环境变量,object类型;

force:默认false,如果true,可以重复启动一个脚本。pm2不建议这么做;

restart_delay:异常重启情况下,延时重启时间;

4.pm2 启动模式 fork 和 cluster 的区别


fork模式,单实例多进程,常用于多语言混编,比如php、python等,不支持端口复用,需要自己做应用的端口分配和负载均衡的子进程业务代码。

缺点就是单服务器实例容易由于异常会导致服务器实例崩溃。

cluster模式,多实例多进程,但是只支持node,端口可以复用,不需要额外的端口配置,0代码实现负载均衡。

优点就是由于多实例机制,可以保证服务器的容错性,就算出现异常也不会使多个服务器实例同时崩溃。

共同点,由于都是多进程,都需要消息机制或数据持久化来实现数据共享。

PM2 是一个进程管理工具,可以帮助我们管理和监控 Node.js 应用程序。PM2 使用一个配置文件来指定应用程序的相关设置。下面是一个 PM2 配置文件的详解: 1. `name`:设置应用程序的名称,用于在日志和监控中进行标识。 2. `script`:指定要运行的 Node.js 脚本或应用程序的入口文件。 3. `args`:传递给脚本的命令行参数。 4. `instances`:指定要启动的应用程序实例的数量,默认为 1。 5. `exec_mode`:指定应用程序运行的模式,有两种可选值:fork(默认)和 cluster。 6. `max_memory_restart`:当应用程序占用的内存超过指定值时,自动重启应用程序。 7. `watch`:启用文件变动监视功能,当文件变动时自动重启应用程序。 8. `ignore_watch`:指定不需要监视变动的文件或目录。 9. `log_date_format`:设置日志输出的时间格式。 10. `error_file` 和 `out_file`:指定错误日志和标准输出日志的文件路径。 11. `env`:设置环境变量,可以在应用程序中使用 process.env 访问。 12. `merge_logs`:合并所有实例的日志到一个文件中。 13. `cron_restart`:使用 cron 表达式定期重启应用程序。 14. `autorestart`:在应用程序崩溃时自动重启。 15. `restart_delay` 和 `exp_backoff_restart_delay`:设置重启的延迟时间。 以上是配置文件中的一些常用选项,你可以根据自己的需求进行配置。使用 PM2 启动应用程序时,可以通过 `pm2 start app.js -n MyApp --watch` 这样的命令来指定参数,也可以将参数写在配置文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值