如果直接通過node app來啟動,如果報錯了可能直接停在整個執行,supervisor感覺只是拿來用作開發環境的。再網上找到pm2.目前似乎最常見的線上部署nodejs專案的有forever,pm2這兩種。
使用場合:
- supervisor
是開發環境用 - forever
管理多個站點,每個站點訪問量不大,不需要監控。 - nodemon
是開發環境使用,修改自動重啟。 - pm2
網站訪問量比較大,需要完整的監控介面。
PM2的主要特性
- 內建負載均衡(使用Node cluster 叢集模組)
- 後臺執行
- 0秒停機過載,我理解大概意思是維護升級的時候不需要停機.
- 具有Ubuntu和CentOS 的啟動指令碼
- 停止不穩定的程式(避免無限迴圈)
- 控制檯檢測
- 提供 HTTP API
- 遠端控制和實時的介面API ( Nodejs 模組,允許和PM2程式管理器互動 )
linux下安裝使用方法
- 安裝node npm 這裡不詳細描述了
- 安裝pm2
npm install pm2@latest -g
安裝好之後 需要配置全域性環境
ln -s opt/node.js/node-v10.13.0-linux-x64/bin/pm2 /usr/local/bin/
opt/node.js/node-v10.13.0-linux-x64/bin/pm2是我node安裝目錄 /usr/local/bin/全域性環境配置目錄
pm2 list //這個命令本身是列舉出所有用pm2啟動的程式
[root@WeiHuSrv /]# pm2 list
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ app │ 0 │ 1.0.0 │ fork │ 17362 │ online │ 0 │ 42m │ 0% │ 35.1 MB │ root │ disabled │
└──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
出現這個就成功啦
PM2 常用命令
$ 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:8080)
$ 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 啟動 並 生成一個配置檔案
關於pm2遠端部署到多臺機器,參考:
http://pm2.keymetrics.io/docs…
官網: