前言
最近開始在嘗試在 server 架設後端 node 服務,除了 screen 可以幫助我進行終端機的畫面切換之外,勢必還需要一套協助我監控服務和自動重啟服務以防服務中斷的工具,於是就找到了這一款好用又強大的工具 pm2。以下就簡單做一下筆記吧。
什麼是 pm2
pm2 是一個管理 node 服務的工具,可以簡單實現服務狀態監控、自動重啟和負載平衡等功能。
安裝 pm2
我們使用 npm 進行 pm2 的全域安裝。
npm install pm2@latest -g
使用 pm2 啟用 node 服務
假設要啟用的服務檔案是 app.js,則先 cd 到 app.js 的位置後,使用 pm2 start
。
pm2 start app.js --name app_name --watch true
後面附帶的參數意思如下:
--name
:指定 app 名稱,方便辨識。--watch
:檔案有變動時自動重啟。
監控 node 服務狀態
pm2 提供了儀表板的功能,方便讓我們查看所有服務的狀態。
pm2 monit
取得服務清單
可以列出 pm2 所運行的所有 node 服務,包含 name 和 id。
pm2 list
查看特定服務的即時 log
pm2 logs app_name|app_id --watch
重新啟動 node 服務
pm2 restart app_name|app_id
停止 node 服務
pm2 stop app_name|app_id
開機自動執行 pm2
首先要設定 pm2 在 server 重啟後自動執行。
pm2 startup
[PM2] You have to run this command as root. Execute the following command:
sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>
若有出現一串指令,記得將這指令複製起來並貼上 terminal 執行:
sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>
然後執行 save
,將目前 pm2 運行的服務給儲存起來,這樣下次重開 pm2 時就會自動啟動這些服務。
pm2 save
負載平衡(叢集模式)
pm2 自動偵測 server 的 CPU 核數,啟動最大能負荷的 process。
-i
後面接希望啟動 process 數量, 0 或 max 默認 CPU 能負荷的 process 最大值。
pm2 start app.js -i 5 # 指定數量
pm2 start app.js -i max # 默認最大值
參考文章