Skip to main content

配置文件

配置文件

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

生成配置

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

$ pm2 init simple

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

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

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

使用配置文件

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

# Start all applications
pm2 start ecosystem.config.js

# Stop all
pm2 stop ecosystem.config.js

# Restart all
pm2 restart ecosystem.config.js

# Reload all
pm2 reload ecosystem.config.js

# Delete all
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 的别名

高级特性

字段类型示例描述
instancesnumber-1要启动的应用实例数量
exec_modestring“cluster”启动应用程序的模式,可以是“cluster”或“fork”,默认fork
watchboolean 或 []true启用监视和重启功能,如果文件夹或子文件夹中的文件发生更改,您的应用程序将重新加载
ignore_watchlist[[\/\]./”, “node_modules”]通过监视功能忽略某些文件或文件夹名称的正则表达式列表
max_memory_restartstring“150M”如果超过指定的内存量,您的应用程序将重新启动。可以是“10M”、“100K”、“2G”等等……
envobject{“NODE_ENV”: “development”, “ID”: “42”}将出现在您的应用程序中的 env 变量
env_object{“NODE_ENV”: “production”, “ID”: “89”}在执行pm2时注入,pm2 restart app.yml --env
source_map_supportbooleantrue默认为 true,[enable/disable源映射文件]
instance_varstring“NODE_APP_INSTANCE”查看文档
filter_envarray 或 string[ “REACT_” ]排除以“REACT_”开头的全局变量,并且不允许它们渗透到集群中。

日志相关

字段类型示例描述
log_date_format(string)“YYYY-MM-DD HH:mm Z”日志日期格式
error_file(string)错误文件路径 (默认为:$HOME/.pm2/logs/XXXerr.log)
out_file(string)输出文件路径 (默认为:$HOME/.pm2/logs/XXXout.log)
combine_logsbooleantrue如果设置为 true,则避免在日志文件末尾添加进程 ID
merge_logsbooleantruecombine_logs的别名
pid_file(string)进程id文件路径 (默认为:$HOME/.pm2/pid/app-pm_id.pid)

控制相关

字段类型示例描述
min_uptime(number)最小正常运行时间
listen_timeoutnumber8000超时重新加载(单位:毫秒)
kill_timeoutnumber1600超时发出SIGKILL信号,以供杀死进程(单位:毫秒)
shutdown_with_messagebooleanfalse使用process.send(‘shutdown’)关闭应用程序,而不是process.kill(pid, SIGINT)
wait_readybooleanfalse等待process.send(‘ready’),而不是重新加载等待监听事件
max_restartsnumber10最大重启次数
restart_delaynumber4000重启延迟时间(单位:毫秒)
autorestartbooleanfalse自动重启
cron_restartstring“1 0 * * *”定时重启
vizionbooleanfalse如果为false, PM2启动时将不带viszion特性(版本控制元数据)
post_updatelist[“npm install”, “echo launching the app”]从Keymetrics仪表板执行Pull/Upgrade操作后将执行的命令列表
forcebooleantrue默认为false。如果为true,则可以多次启动相同的脚本

部署相关

字段类型示例描述
keyString$HOME/.sshSSH key 路径
userStringSSH 用户
host[String]SSH 主机
ssh_optionsString 或 [String]没有命令行标志的SSH选项
refStringGIT remote/branch
repoStringGIT remote
pathString服务器路径
pre-setupString在本地机器上预先设置的命令或脚本路径
post-setupString在本地机器上安装后设置的命令或脚本路径
pre-deploy-localString本地预部署
post-deployString后部署

注意事项

使用JSON应用声明时传递的所有命令行选项将被删除。

CWD

cwd:您的 JSON 声明不需要与您的脚本一起存在。如果您希望在脚本以外的位置维护 JSON(s),您将需要使用该cwd功能(注意,这对于使用符号链接的 capistrano 样式目录结构非常有用)。文件可以是相对于cwd目录的,也可以是绝对的。