PM2 生态系统文件 ecosystem.config.js

PM2 配置文件: 生态系统文件 ecosystem.config.js

当在多个服务器上部署或使用多个CLI参数时,使用生态系统文件来替代命令行启动应用,将会更加方便。

生态系统文件的目的是收集应用所有的配置选项和环境变量。


创建一个 ecosystem.config.js:

pm2 init

这个命令会生成:

module.exports = {
 apps: [{
  script: 'index.js',
  watch: '.'
 }, {
  script: './service-worker/',
  watch: ['./service-worker']
 }],

 deploy: {
  production: {
   user: 'SSH_USERNAME',
   host: 'SSH_HOSTMACHINE',
   ref: 'origin/master',
   repo: 'GIT_REPOSITORY',
   path: 'DESTINATION_PATH',
   'pre-deploy-local': '',
   'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
   'pre-setup': ''
  }
 }
};

备注:

1. apps 里可以有多个 app

2. 可以使用 pm2 deploy 快速部署 deploy 字段定义的远程服务器,自动化部署,避免在一个接一个地通过ssh连接服务器。更多,可以查看 https://github.com/shipengqi/PM2-docs-Zh-CN/blob/master/guide/deploy_with_ssh.md


设置

module.exports = {
 apps: [{
  name: 'cnrestfulapi',
  script: './server.js',
  watch: '.',
  ignore_watch: ['node_modules', 'build', 'logs'],
  out_file: './logs/out.log', // 日志输出
  error_file: './logs/error.log', // 错误日志
  max_memory_restart: '2G', // 超过多大内存自动重启,仅防止内存泄露,根据自己的业务设置
  exec_mode: 'cluster', // 开启多线程模式,用于负载均衡
  instances: 'max', // 启用多少个实例,可用于负载均衡
  autorestart: true // 程序崩溃后自动重启
 }]
};


1. watch 启用或禁用观察模式 Boolean,Array,String。监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。

2. exec_mode 设置执行模式,可能的值为:"fork" 或 "cluster"。

3. instances 指定集群模式下启动的实例数,值可以为 一个整数。指定开启集群的进程数量。或者“max”,自动检测可用CPU的数量并运行相同数量的进程。


使用

在你的源代码工作目录中,使用下面的命令可以将所有应用程序添加到进程列表中:

pm2 start

这个命令会运行定义在ecosystem.config.js文件(运行pm2 init生成)中的所有应用。


你也可以从指定目录中加载生态系统文件:

pm2 start /path/to/ecosystem.config.js


针对指定的应用

只针对生态系统文件中定义的指定应用:

pm2 start --only app


环境变量

可以为多个环境声明变量, 环境变量的key必须遵守这种格式env_<environment-name>。

例如,下面例子中的app进程会在两个环境中启动:development和production。

module.exports = {
 apps : [{
  name: "app",
  script: "./app.js",
  env: {
   NODE_ENV: "development",
  },
  env_production: {
   NODE_ENV: "production",
  }
 }]
}


要在特定环境下启动应用,请使用--env标志,如上面的例子:

pm2 start ecosystem.config.js          # uses variables from `env`
pm2 start ecosystem.config.js --env production # uses variables from `env_production`



参考:

https://github.com/shipengqi/PM2-docs-Zh-CN/blob/master/guide/ecosystem_file.md

https://github.com/shipengqi/PM2-docs-Zh-CN/blob/master/reference/ecosystem_file.md

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
Node.js stream 流
CRSF 跨站脚本攻击已死,使用 Same-Site Cookies 来防范 CSRF
JavaScript 原生拖放
Web 自定义组件
WordPress 修改 RESTful API 的请求和响应
Debian11 安装笔记3:安装 MySQL 5.7
Express 使用 body-parser 处理 HTTP 请求
WordPress 按自定义排序的两种方法