Ubuntu16.0.4 PM2 學習筆記(待補充)
阿新 • • 發佈:2018-12-25
概述
簡介
PM2(Process Manager 2 )是具有內建負載均衡器的Node.js應用程式的生產執行時和程序管理器。 它允許您永久保持應用程式活躍,無需停機即可重新載入它們,並促進常見的Devops任務。
主要特性:
- 內建負載均衡(使用Node cluster 叢集模組)
- 後臺執行
- 0秒停機過載,我理解大概意思是維護升級的時候不需要停機.
- 具有Ubuntu和CentOS 的啟動指令碼
- 停止不穩定的程序(避免無限迴圈)
- 控制檯檢測
- 提供 HTTP API
- 遠端控制和實時的介面API ( Nodejs 模組,允許和PM2程序管理器互動 )
官方描述主要特性:
- 持久化:一旦開始使用,您的應用將達到持久化,在崩潰和機器重啟時自啟動。
- 流程管理:您所有的應用都被守護程序,例如,在後臺持續執行。
- 日誌管理:應用程式日誌儲存在伺服器的硬碟中~/.pm2/logs/
- 負載均衡:PM2可以通過建立共享同一伺服器埠的多個子程序來擴充套件您的應用程式。這樣做還允許您以零秒停機時間重新啟動應用程式。
- 終端監控:可以在終端中監控您的應用程式並檢查應用程式執行狀況(CPU使用率,使用的記憶體,請求/分鐘等)。
- SSH部署:自動部署,避免逐個在所有伺服器中進行ssh。
- 靜態服務:支援靜態伺服器功能
多平臺支援:適用於Linux(穩定)和macOS(穩定)和Windows(穩定)
作者:cs380637384
來源:CSDN
原文:https://blog.csdn.net/cs380637384/article/details/82682799
版權宣告:本文為博主原創文章,轉載請附上博文連結!
指南
安裝
使用Root賬戶全域性安裝pm2
npm install pm2 -g
目錄介紹
pm2安裝好後,會自動建立下面目錄。看檔名基本就知道幹嘛的了,就不翻譯了。
$HOME/.pm2
will contain all PM2 related files$HOME/.pm2/logs
$HOME/.pm2/pids
will contain all applications pids$HOME/.pm2/pm2.log
PM2 logs-$HOME/.pm2/pm2.pid
PM2 pid$HOME/.pm2/rpc.sock
Socket file for remote commands$HOME/.pm2/pub.sock
Socket file for publishable events$HOME/.pm2/conf.js
PM2 Configuration
入門教程
快速開始
常用指令
啟動
引數說明:
--watch
:監聽應用目錄的變化,一旦發生變化,自動重啟。如果要精確監聽、不見聽的目錄,最好通過配置檔案。-i --instances
:啟用多少個例項,可用於負載均衡。如果-i 0或者-i max,則根據當前機器核數確定例項數目。-
--ignore-watch
:排除監聽的目錄/檔案,可以是特定的檔名,也可以是正則。比如–ignore-watch=“test node_modules “some scripts””-n --name
:應用的名稱。檢視應用資訊的時候可以用到。-o --output <path>
:標準輸出日誌檔案的路徑。-e --error <path>
:錯誤輸出日誌檔案的路徑。--interpreter <interpreter>
:the interpreter pm2 should use for executing app (bash, python…)。比如你用的coffee script來編寫應用。
示例:
pm2 start app.js --watch -i 2
完整引數列表:
-h, --help output usage information
-V, --version output the version number
-v --version get version
-s --silent hide all messages
-m --mini-list display a compacted list without formatting
-f --force force actions
-n --name <name> set a <name> for script
-i --instances <number> launch [number] instances (for networked app)(load balanced)
-l --log [path] specify entire log file (error and out are both included)
-o --output <path> specify out log file
-e --error <path> specify error log file
-p --pid <pid> specify pid file
--max-memory-restart <memory> specify max memory amount used to autorestart (in megaoctets)
--env <environment_name> specify environment to get specific env variables (for JSON declaration)
-x --execute-command execute a program using fork system
-u --user <username> define user when generating startup script
-c --cron <cron_pattern> restart a running process based on a cron pattern
-w --write write configuration in local folder
--interpreter <interpreter> the interpreter pm2 should use for executing app (bash, python...)
--log-date-format <momentjs format> add custom prefix timestamp to logs
--no-daemon run pm2 daemon in the foreground if it doesn't exist already
--merge-logs merge logs from different instances but keep error and out separated
--watch watch application folder for changes
--ignore-watch <folders|files> folder/files to be ignored watching, chould be a specific name or regex - e.g. --ignore-watch="test node_modules "some scripts""
--node-args <node_args> space delimited arguments to pass to node in cluster mode - e.g. --node-args="--debug=7001 --trace-deprecation"
--no-color skip colors
--no-vizion skip vizion features (versioning control)
--no-autorestart do not automatically restart apps
重啟、過載
重啟
pm2 restart app.js
0秒停機重新載入
pm2 reload app.js //重新啟動所有程序,始終保持至少一個程序在執行
pm2 gracefulReload all //優雅地以群集模式重新載入所有應用程式
停止
停止特定的應用。可以先通過pm2 list獲取應用的名字(–name指定的)或者程序id。
pm2 stop all //停止所有應用
pm2 stop [AppName] //根據應用名停止指定應用
pm2 stop [ID] //根據應用id停止指定應用
刪除
pm2 delete all //關閉並刪除應用
pm2 delete [AppName] //根據應用名關閉並刪除應用
pm2 delete [ID] //根據應用ID關閉並刪除應用
檢視程序狀態
pm2 list
檢視某個程序的資訊
pm2 describe 0
顯示應用程式資訊
pm2 show [Name] //根據name檢視
pm2 show [ID] //根據id檢視
日誌檢視
預設情況下,所有日誌都被儲存到 $HOME/.pm2/logs
。
pm2 logs //檢視所有應用日誌
pm2 logs [Name] //根據指定應用名檢視應用日誌
pm2 logs [ID] //根據指定應用ID檢視應用日誌
pm2 flush //清空所有應用日誌
output
只是標準輸出 (console.log
)
error
只是錯誤輸出 (console.error
)
log
結合了 output 和 error, 預設是禁用的
配置檔案
生成配置檔案
cd到你的工程目錄,輸入如下指令,生成例項的Javascript格式的配置檔案。(.config.js檔案)
pm2 ecosystem //生成一個示例JSON配置檔案
pm2 init
配置檔案這塊支援JavaScript格式、Json格式、Json5格式、Yaml格式,這裡我只列Json格式。具體參考幫助文件:傳送門
JSON格式
具體引數配置參考地址:傳送門
{
"apps" : [{
"name" : "worker",
"script" : "./worker.js",
"watch" : true,
"env": {
"NODE_ENV": "development"
},
"env_production" : {
"NODE_ENV": "production"
}
},{
"name" : "api-app",
"script" : "./api.js",
"instances" : 4,
"exec_mode" : "cluster"
}]
}
自動重啟(監聽模式)
這裡是監控整個專案的檔案,如果只想監聽指定檔案和目錄,建議通過配置檔案的watch
、ignore_watch
欄位來設定。詳細的配置請檢視官方文件:傳送門
pm2 start app.js --watch //當檔案發生變化,自動重啟
開機啟動
pm2 startup