生态系统文件

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

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

创建模版

创建一个ecosystem.config.js模版:

pm2 init

这个命令会生成:

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

更多可用的配置选项,查看生态系统文件参考

生态系统文件使用

常规

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

pm2 start

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

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

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

针对指定的应用

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

pm2 start --only app

环境变量

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

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

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`

不可变的环境

进程一旦添加到进程列表,那么这个进程的环境就不会再改变。使用:

因此,如果进程重启时与当前环境不同或有了的新生态系统文件,进程环境不会改变。

这是为了确保应用重启时能够保持一致。

更新环境

那么,如果想要强制更新环境,使用--update-env参数:

# refresh the environment
pm2 restart ecosystem.config.js --update-env

# switch the environment
pm2 restart ecosystem.config.js --env production --update-env

下一步

进程管理