pm2 start npm -- start這條命令是pm2的萬能命令,pm2 start <json>,就是這一系列命令中的最豪華命令。這個json我們可以理解為一個任務參數描述文件。通過這個json文件,我們把在命令行里面不好描述的各種參數放到一個json文件里面來。
pm2 start <json>.json
自定義啟動文件,創建一個test.json的示例文件,格式如下:
{ "apps":[ { "name": "test", "cwd": "/data/wwwroot/nodejs", "script": "./test.sh", "exec_interpreter": "bash", "min_uptime": "60s", "max_restarts": 30, "exec_mode" : "cluster_mode", "error_file" : "./test-err.log", "out_file": "./test-out.log", "pid_file": "./test.pid"
"watch": false } ]}
參數說明:
- apps:json結構,apps是一個數組,每一個數組成員就是對應一個pm2中運行的應用
- name:應用程序的名稱
- cwd:應用程序所在的目錄
- script:應用程序的腳本路徑
- exec_interpreter:應用程序的腳本類型,這里使用的shell,默認是nodejs
- min_uptime:最小運行時間,這里設置的是60s即如果應用程序在60s內退出,pm2會認為程序異常退出,此時觸發重啟max_restarts設置數量
- max_restarts:設置應用程序異常退出重啟的次數,默認15次(從0開始計數)
- exec_mode:應用程序啟動模式,這里設置的是cluster_mode(集群),默認是fork
- error_file:自定義應用程序的錯誤日志文件
- out_file:自定義應用程序日志文件
- pid_file:自定義應用程序的pid文件
- watch:是否啟用監控模式,默認是false。如果設置成true,當應用程序變動時,pm2會自動重載。這里也可以設置你要監控的文件。
運行實例:已上面的test.json為例
pm2 start test.json
最精簡版本
{ "name": "manage", //項目名稱
"script": "./bin/www", //要執行的腳本
"cwd":"./", //項目所在目錄
}
設置文件監控版本,文件變動,就重啟服務
{ "name": "manage", //項目名稱
"script": "./bin/www", //要執行的腳本
"cwd":"./", //項目所在目錄
"watch":[ //添加受監控的文件,以便自動更新
"models", "routes" ], "ignore_watch" : [ //不監視的文件
"node_modules", "client/img" ], "watch_options": { //監視配置,具體見 http://pm2.keymetrics.io/docs/usage/watch-and-restart/
"followSymlinks": false } }
設置log位置
{ "name": "manage", //項目名稱
"script": "./bin/www", //要執行的腳本
"cwd":"./", //項目所在目錄
"log_file": "<yourpath>/combined.outerr.log", "out_file": "<yourpath>/out.log", "error_file": "<yourpath>/err.log", }