教程 > pm2 教程 > pm2 基础 阅读:4

pm2 配置文件

使用 PM2 管理多个应用程序时,使用一个 JS 配置文件来组织它们。


生成配置

要生成示例配置文件,可以键入以下命令:

$ pm2 init simple

这将生成一个默认的配置文件 ecosystem.config.js:

ecosystem.config.js

module.exports = {
  apps : [{
    name   : "server1",
    script : "./server.js"
  }]
}

如果正在创建自己的配置文件,请确保它以 .config.js 结尾,以便 PM2 能够将其识别为配置文件。


使用配置文件

与操作应用程序相比,我们可以无缝启动/停止/重启/删除配置文件中包含的所有应用程序:

启动所有的应用程序

$ pm2 start ecosystem.config.js

停止所有应用程序

$ pm2 stop ecosystem.config.js

重启所有应用程序

$ pm2 restart ecosystem.config.js

重载所有应用程序

$ pm2 reload ecosystem.config.js

删除所有应用程序

$ pm2 delete ecosystem.config.js

应用于特定的应用程序

我们还可以通过使用选项 --only <app_name> 指定应用程序名称对特定应用程序进行操作:

$ pm2 start   ecosystem.config.js --only api-app

注意:**--only** 选项也适用于启动/重启/停止/删除

甚至可以通过指定用逗号分隔的每个应用程序名称来指定要对其执行操作的多个应用程序:

$ pm2 start ecosystem.config.js --only "api-app,worker-app"

切换环境

可以通过 env_* 选项指定不同的环境变量集。

示例

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

现在要在不同环境中的变量之间切换,请指定 --env [env name] 选项:

$ pm2 start process.json --env production
$ pm2 restart process.json --env development

配置文件可用属性

可以使用以下属性调整应用程序行为和配置:

通用属性

字段 类型 示例 描述
name (string) “my-api” 应用程序名称 (默认为脚本名称)
script (string) ”./api/app.js” 相对于 pm2 start 的脚本路径
cwd (string) “/var/www/” 将启动您的应用程序的目录
args (string) “-a 13 -b 12” 包含通过 CLI 传递给脚本的所有参数的字符串
interpreter (string) “/usr/bin/python” 解释器绝对路径(默认为 node )
interpreter_args (string) ”–harmony” 传递给解释器的选项
node_args (string) interpreter_args的别名

高级特性

字段 类型 示例 描述
instances number -1 要启动的应用程序实例数
exec_mode string “cluster” 启动应用程序的模式,可以是“cluster”或“fork”,默认fork
watch boolean or [] true 启用监视和重启功能,如果文件夹或子文件夹中的文件发生更改,您的应用程序将重新加载
ignore_watch list [”[/\]./”, “node_modules”] 通过监视功能忽略某些文件或文件夹名称的正则表达式列表
max_memory_restart string “150M” 如果超过指定的内存量,您的应用程序将重新启动。 人性化的格式:可以是“10M”、“100K”、“2G”等等……
env object {“NODE_ENV”: “development”, “ID”: “42”} env variables which will appear in your app
env_ object {“NODE_ENV”: “production”, “ID”: “89”} 在执行 pm2 restart app.yml --env 时注入
source_map_support boolean true 默认为 true,[启用/禁用源映射文件]
instance_var string “NODE_APP_INSTANCE” 查看文档
filter_env array of string [ “REACT_” ] 排除以“REACT_”开头的全局变量,并且不允许它们渗透到集群中。

日志文件

字段 类型 示例 描述
error_file (string) 指定错误日志文件 (默认 $HOME/.pm2/logs/XXXerr.log)
out_file (string) 指定标准输出日志文件 (默认 $HOME/.pm2/logs/XXXout.log)
pid_file (string) 指定pid进程文件 (默认 $HOME/.pm2/pid/app-pm_id.pid)
merge_logs boolean true 如果设置为 true,则避免使用进程 id 后缀日志文件
log_date_format (string) “YYYY-MM-DD HH:mm Z” 日志时间日期格式

控制流

字段 类型 示例 描述
min_uptime (string) 被视为启动的应用程序的最小正常运行时间
listen_timeout number 8000 如果应用程序未在侦听,则强制重新加载之前的时间(以毫秒为单位)
kill_timeout number 1600 发送最终 SIGKILL 之前的时间(以毫秒为单位)
shutdown_with_message boolean false 使用 process.send(‘shutdown’) 而不是 process.kill(pid, SIGINT) 关闭应用程序
wait_ready boolean false 等待 process.send(‘ready’) 而不是重新加载等待监听事件
max_restarts number 10 在您的应用程序被视为错误并停止重新启动之前,连续不稳定重新启动的次数(小于 1 秒间隔或通过 min_uptime 自定义时间)
restart_delay number 4000 在重新启动崩溃的应用程序之前等待的时间(以毫秒为单位)。 默认为 0。
autorestart boolean false 默认为 true 。 如果为 false,如果应用程序崩溃或和平结束,PM2 将不会重新启动您的应用程序
cron_restart string “1 0 * * *” 使用 cron 模式定时任务来重新启动你的应用程序。 应用程序必须正在运行才能使 cron 功能正常工作
vizion boolean false 默认为真。 如果为 false,PM2 将在没有 vizion 功能的情况下启动(版本控制元数据)
post_update list [“npm install”, “echo launching the app”] 从 Keymetrics 控制面板执行 Pull/Upgrade 操作后将执行的命令列表
force boolean true 默认为 false。 如果为 true,可以多次启动同一个脚本,这通常是 PM2 不允许的

查看笔记