zoukankan      html  css  js  c++  java
  • PM2学习(二)配置文件&环境管理

    配置文件

    简单说明

    • 配置文件里的设置项,跟命令行参数基本是一一对应的。
    • 可以选择yaml或者json文件,就看个人喜好。
    • 如果启动的时候指定了配置文件,那么命令行参数会被忽略。(个别参数除外,比如--env)

    举个简单例子,完整配置说明请参考官方文档

    {
      "name"        : "fis-receiver",  // 应用名称
      "script"      : "./bin/www",  // 实际启动脚本
      "cwd"         : "./",  // 当前工作路径
      "watch": [  // 监控变化的目录,一旦变化,自动重启
        "bin",
        "routers"
      ],
      "ignore_watch" : [  // 从监控目录中排除
        "node_modules", 
        "logs",
        "public"
      ],
      "watch_options": {
        "followSymlinks": false
      },
      "error_file" : "./logs/app-err.log",  // 错误日志路径
      "out_file"   : "./logs/app-out.log",  // 普通日志路径
      "env": {
          "NODE_ENV": "production"  // 环境参数,当前指定为生产环境
      }
    }
    • watch可以是布尔值,路径数组或表示路径的字符串。默认为false。
    • ignore_watch可以是一个路径数组或一个字符串,它将被chokidar解释为glob或正则表达式。
    • watch_options是一个替代chokidar的选项的对象。有关定义,请参阅chokidar文档

    也可以使用pm2 init命令,创建一个ecosystem.config.js文件,其中已经有默认的配置。

    module.exports = {
      apps : [{
        name: 'API',
        script: 'app.js',
    
        // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
        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'
        }
      }
    };

    环境管理

    在实际项目开发中,我们的应用经常需要在多个环境下部署,比如开发环境、测试环境、生产环境等。在不同环境下,有时候配置项会有差异,比如链接的数据库地址不同等。

    对于这种场景,pm2也是可以很好支持的。首先通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参数指定运行的环境。

    环境配置声明

    首先,在配置文件中,通过env选项声明多个环境配置。简单说明下:

    • env为默认的环境配置(生产环境),env_devenv_test则分别是开发、测试环境。可以看到,不同环境下的NODE_ENVREMOTE_ADDR字段的值是不同的。
    • 在应用中,可以通过process.env.REMOTE_ADDR等来读取配置中生命的变量。
      "env": {
        "NODE_ENV": "production",
        "REMOTE_ADDR": "http://www.example.com/"
      },
      "env_dev": {
        "NODE_ENV": "development",
        "REMOTE_ADDR": "http://wdev.example.com/"
      },
      "env_test": {
        "NODE_ENV": "test",
        "REMOTE_ADDR": "http://wtest.example.com/"
      }

    启动指明环境

    假设通过下面启动脚本(开发环境),那么,此时process.env.REMOTE_ADDR的值就是相应的 http://wdev.example.com/ ,可以自己试验下。

    pm2 start app.js --env dev

    对于我们init生成的ecosystem.config.js文件,我们可以将其修改成

    {
      env: {
        NODE_ENV: 'dev'
      },
      env_development: {
        NODE_ENV: 'dev'
      },
      env_production: {
        NODE_ENV: 'prod'
      }
    }

    他们对应的启动命令分别为:

    • pm2 start ecosystem.config.js --watch --env

    • pm2 start ecosystem.config.js --watch --env development

    • pm2 start ecosystem.config.js --watch --env production

     

  • 相关阅读:
    爬取阳光问政平台
    CrawlSpider爬取腾讯招聘信息
    LinkExtractor
    镜像源列表
    screen命令总结
    PHP解决中文乱码问题
    Linux查找大文件或目录
    CentOS6/7系列防火墙管理
    删除win10冗余的服务
    解决win10安装wireshark新版本,欢迎界面卡顿情况
  • 原文地址:https://www.cnblogs.com/kunmomo/p/15002365.html
Copyright © 2011-2022 走看看