安裝pm2過程
- 安裝pm2
npm install -g pm2 複製程式碼
- 驗證一下
安裝完成!pm2 -v //2.10.4 複製程式碼
介紹一下pm2
PM2的主要特性:
- 內建負載均衡(使用Node cluster 叢集模組)
- 後臺執行
- 0秒停機過載,我理解大概意思是維護升級的時候不需要停機.
- 具有Ubuntu和CentOS 的啟動指令碼
- 停止不穩定的程式(避免無限迴圈)
- 控制檯檢測
- 提供 HTTP API
- 遠端控制和實時的介面API ( Nodejs 模組,允許和PM2程式管理器互動 )。
說白了,就是用來管node的
用法
$ pm2 start app.js # 啟動app專案
$ pm2 list # 列出由pm2管理的所有程式資訊,還會顯示一個程式會被啟動多少次,因為沒處理的異常。
$ pm2 monit # 監視每個node程式的CPU和記憶體的使用情況
$ pm2 logs # 顯示所有程式日誌
$ pm2 stop all # 停止所有程式
$ pm2 restart all # 重啟所有程式
$ pm2 reload all # 0秒停機過載程式 (用於 NETWORKED 程式)
$ pm2 stop 0 # 停止指定的程式
$ pm2 restart 0 # 重啟指定的程式
$ pm2 startup # 產生 init 指令碼 保持程式活著
$ pm2 web # 執行健壯的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 # 殺死指定的程式
$ pm2 delete all # 殺死全部程式
# 執行程式的不同方式:
$ pm2 start app.js -i max # 根據有效CPU數目啟動最大程式數目
$ pm2 start app.js -i 3 # 啟動3個程式
$ pm2 start app.js -x # 用fork模式啟動 app.js 而不是使用 cluster
$ pm2 start app.js -x -- -a 23 # 用fork模式啟動 app.js 並且傳遞引數 (-a 23)
$ pm2 start app.js --name serverone # 啟動一個程式並把它命名為 serverone
$ pm2 stop serverone # 停止 serverone 程式
$ pm2 start app.json # 啟動程式, 在 app.json裡設定選項
$ pm2 start app.js -i max -- -a 23 # 在--之後給 app.js 傳遞引數
$ pm2 start app.js -i max -e err.log -o out.log # 啟動 並 生成一個配置檔案
複製程式碼
linux伺服器環境下設定為開機啟動
pm2 startup
pm2 save
複製程式碼
就會把你啟動的網站資訊存在 ~/.pm2/dump.pm2,例如 /root/.pm2/dump.pm2,下次開機啟動就會自動執行,免去你手動啟動
配置pm2啟動檔案
在專案根目錄新增一個processes.json: 內容如下:
{
"apps": [
{
"name": "mywork",
"cwd": "/srv/node-app/current",
"script": "bin/www",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"error_file": "/var/log/node-app/node-app.stderr.log",
"out_file": "log/node-app.stdout.log",
"pid_file": "pids/node-geo-api.pid",
"instances": 6,
"min_uptime": "200s",
"max_restarts": 10,
"max_memory_restart": "1M",
"cron_restart": "1 0 * * *",
"watch": false,
"merge_logs": true,
"exec_interpreter": "node",
"exec_mode": "fork",
"autorestart": false,
"vizion": false
}
]
}
複製程式碼
說明:
apps:json結構,apps是一個陣列,每一個陣列成員就是對應一個pm2中執行的應用
name:應用程式名稱
cwd:應用程式所在的目錄
script:應用程式的指令碼路徑
log_date_format:
error_file:自定義應用程式的錯誤日誌檔案
out_file:自定義應用程式日誌檔案
pid_file:自定義應用程式的pid檔案
instances:
min_uptime:最小執行時間,這裡設定的是60s即如果應用程式在60s內退出,pm2會認為程式異常退出,此時觸發重啟max_restarts設定數量
max_restarts:設定應用程式異常退出重啟的次數,預設15次(從0開始計數)
cron_restart:定時啟動,解決重啟能解決的問題
watch:是否啟用監控模式,預設是false。如果設定成true,當應用程式變動時,pm2會自動過載。這裡也可以設定你要監控的檔案。
merge_logs:
exec_interpreter:應用程式的指令碼型別,這裡使用的shell,預設是nodejs
exec_mode:應用程式啟動模式,這裡設定的是cluster_mode(叢集),預設是fork
autorestart:啟用/禁用應用程式崩潰或退出時自動重啟
vizion:啟用/禁用vizion特性(版本控制)
複製程式碼
可以通過 pm2 start processes.json
來啟動。