一、前言
PM2支持配置文件方式進行應用服務設置,文件支持的配置格式為Javascript、JSON、YAML。以下主要講述Javascript,JSON這2種格式;
二、配置文件
1.Javascript格式
輸入以下命令可以生產配置文件模板:
pm2 init

pm2 ecosystem

生成是ecosystem.config.js如下:
module.exports = {
apps : [{
name: 'API',
script: 'app.js',
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 start ecosystem.config.js
請注意,使用Javascript配置文件要求文件名結尾為 .config.js
2.json格式
例如命名為config.json:
{
"apps": [{
"name": "test", //名稱
"script": "server.js", //程序入口
"cwd": "./", //根目錄
"instances": 1,
"error_file":"./logs/error.log",//錯誤輸出日志
"out_file":"./logs/out.log", //日志
"log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
}]
}
啟動命令:
pm2 start config.json
也可以把命令寫在package.json里。如下:

通過npm run pm2來啟動
可以根據需要設置任意多個JSON應用程序聲明。
{
"apps": [
{
"name": "testOne",
"script": " testOne/server.js",
"instances": 1,
"log_date_format": "YYYY-MM-DD HH:mm Z",
"max_memory_restart": "500M"
},
{
"name": "testTwo",
"script": " testTwo/server.js",
"instances": 1,
"log_date_format": "YYYY-MM-DD HH:mm Z",
"max_memory_restart": "500M"
}
]
}
3. 常用配置項說明:
apps: json結構,apps是一個數組,每一個數組成員就是對應一個pm2中運行的應用;
name:應用程序名稱;
cwd:應用程序所在的目錄;
script:應用程序的腳本路徑;
log_date_format: 指定日志日期格式,如YYYY-MM-DD HH:mm:ss;
error_file:自定義應用程序的錯誤日志文件,代碼錯誤可在此文件查找;
out_file:自定義應用程序日志文件,如應用打印大量的標准輸出,會導致pm2日志過大;
pid_file:自定義應用程序的pid文件;
interpreter:指定的腳本解釋器;
interpreter_args:傳遞給解釋器的參數;
instances: 應用啟動實例個數,僅在cluster模式有效,默認為fork;
min_uptime:最小運行時間,這里設置的是60s即如果應用程序在60s內退出,pm2會認為程序異常退出,此時觸發重啟max_restarts設置數量;
max_restarts:設置應用程序異常退出重啟的次數,默認15次(從0開始計數);
autorestart :默認為true, 發生異常的情況下自動重啟;
cron_restart:定時啟動,解決重啟能解決的問題;
max_memory_restart:最大內存限制數,超出自動重啟;
watch:是否啟用監控模式,默認是false。如果設置成true,當應用程序變動時,pm2會自動重載。這里也可以設置你要監控的文件。
ignore_watch:忽略監聽的文件夾,支持正則表達式;
merge_logs: 設置追加日志而不是新建日志;
exec_interpreter:應用程序的腳本類型,默認是nodejs;
exec_mode:應用程序啟動模式,支持fork和cluster模式,默認是fork;
autorestart:啟用/禁用應用程序崩潰或退出時自動重啟;
vizion:啟用/禁用vizion特性(版本控制);
env:環境變量,object類型;
force:默認false,如果true,可以重復啟動一個腳本。pm2不建議這么做;
restart_delay:異常重啟情況下,延時重啟時間;
