你所不知道的pm2
【pm2】
如官網介紹的,pm2是nodejs下先進的,生產程序管理器,
安裝
1 |
npm
install
-g pm2
|
常用命令
1 2 3 4 5 6 |
pm2 start app.js --name demo
pm2 stop demo
pm2 restart demo
pm2 delete demo
pm2 show demo
pm2 list |
熟悉以上命令基本可以滿足日常的使用需求。
【pm2可以作為靜態檔案伺服器】
日常開發中還會碰到一種需求,就是前端會開發一些靜態頁面,
開發完畢後想跑起來,讓其他人遠端看看效果,
這個時候就尷尬了,一般是會把靜態檔案丟給java,php,node的人讓幫忙跑起來,
當然npm也有一些靜態檔案伺服器,例如sts,
使用方法如下:
1 2 |
npm install
-g sts
sts port
|
這裡就可以跑起一個靜態檔案伺服器。
在看pm2文件之前,我的電腦上一直安裝有pm2和sts兩個npm包,
pm2用來啟動nodejs開發的服務,sts用來偶爾啟動靜態檔案伺服器,
看了pm2文件後才發現一直是多此一舉,想想也是,
pm2這麼強大的程序管理工具,怎麼可能不支援靜態檔案伺服器,
使用pm2啟動靜態檔案伺服器的方法如下:
1 2 |
pm2 serve path port
pm2 serve . 9001
|
這樣就可以把當前資料夾下的靜態檔案跑起來了,而且埠號是9001,
同樣也支援進階的使用,如下
1 |
pm2 serve . 9001 --name
test
--
watch
|
這樣就啟動了一個名字為test,埠號為9001,且監聽檔案變化的靜態檔案伺服器
pm2 serve文件:http://pm2.keymetrics.io/docs/usage/expose/
【pm2可以監聽檔案修改】
前端開發久了都會接觸一些監聽檔案修改的工具,
好處是當檔案修改後可以自動重新整理頁面,不需要手動重新整理頁面,或者不需要重啟node,
之前對於靜態檔案的監聽一直使用的browsersync,
這裡有一篇文章介紹:http://uikoo9.com/blog/detail/browsersync
後端的檔案修改之前一直是有修改重啟node,做法比較low,
監聽檔案的需求分為兩類
1.監聽靜態檔案修改,並自動重新整理頁面
2.監聽server檔案修改,並自動重啟服務
對於1,pm2可以監聽靜態檔案,但是並沒有做到自動重新整理頁面這一步,
對於2,browsersync做不到,pm2可以做到,
所以最佳實踐是用pm2啟動node服務,並監聽server檔案的修改,
同時通過pm2 config檔案的方式啟動browsersync,監聽靜態檔案修改
普通的監聽如下
1 |
pm2 start app.js --name
test
--
watch
|
執行後,watching那一項會變成enabled,並且在修改專案下檔案的時候會重啟服務
複雜的監聽需要配置檔案配合,見後面的配置檔案講解。
pm2 watch文件:http://pm2.keymetrics.io/docs/usage/watch-and-restart/
【pm2的monit】
之所以使用pm2這類程序管理工具,而不是直接用node跑起來,
是因為程序公里工具可以更方便的監控一些資訊,包括cpu,記憶體,日誌,異常,其他資訊等,
pm2自帶一個簡單的監控工具,使用方法如下:
1 |
pm2 monit
|
執行後的效果如下
自帶的工具已經可以很好的監控程序了,pm2還提供線上web方式的監控,
首先需要登入這裡:https://app.keymetrics.io
然後按照教程一步一步來,最關鍵的是要在你的伺服器上執行:
1 |
pm2 link ak sk
|
將ak,sk替換為你自己的key即可,
然後就可以在這個網頁看到監控的效果:
有沒有感到效果很贊,不過免費版只能監控4個程序,
上面只是pm2對一些基礎資訊的監控,
pm2還提供一些pm2外掛,安裝這些外掛後可以監控,
例如pm2-mysql外掛,安裝後可以監控pm2程序中使用mysql的情況,
這些外掛包括:
是不是很豐富呢,具體的使用方法也簡單,這裡以pm2-server-monit為例,
在伺服器上安裝:pm2 install pm2-server-monit,
pm2會呼叫npm去下載這個包,下載完畢後會自動跑起來,
這是時候就能看到pm2-server-monit這個module了,並且web端也可以看到監控資訊,
pm2 monit文件:http://pm2.keymetrics.io/docs/usage/monitoring/
pm2 module進階使用:http://pm2.keymetrics.io/docs/advanced/pm2-module-system/
【pm2還可以負載均衡】
看完文件還有一個亮點是pm2支援負載均衡,
正常的pm2啟動專案如下,啟動後只對應一個程序:
1 |
pm2 start app.js --name
test
|
pm2還支援負載均衡,準確的說是單機基於多cpu核心的負載均衡,
1 |
pm2 start app.js --name
test
-i num
|
其中num可以為:
0,max,這個時候會跑滿你的核心,如果你是8核心,pm2就會跑8個程序,
數字,寫幾就會跑幾個程序
這樣啟動後mode會為cluster,如下
這個功能還是比較實用的,如果你的伺服器是多核心的,跑了一個專案,
這個時候就可以用到了,一臺伺服器跑多個程序,比較贊
pm2 cluster文件:http://pm2.keymetrics.io/docs/usage/cluster-mode/
【pm2配置檔案】
pm2啟動方式分為命令列+引數啟動,配置檔案啟動,如下
1 |
pm2 start config.js
|
大部分命令都可以作用到配置檔案上,
常用的配置檔案項:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
module.exports = {
apps : [{
// 啟動後的name,相當於:pm2 start app.js --name 71_nova
name :
'71_nova'
,
// 啟動的入口
script :
'app.js'
,
// app.js的位置
cwd :
'z:/workspaces/_nova_04_api/webroot-dev/'
,
// 負載均衡模式,使用2個核心,相當於:pm2 start app.js -i 2
instances :
'2'
,
exec_mode :
'cluster'
,
// 監聽檔案修改,相當於:pm2 start app.js --watch
watch : [
'server'
],
ignore_watch : [
'server/fore'
],
// 最大記憶體佔用,相當於:pm2 start app.js --max_memory_restart 20M
max_memory_restart :
'100M'
,
// 日誌相關
log_date_format :
'YYYY-MM-DD HH:mm Z'
,
error_file :
'd:/error.log'
,
out_file :
'd:/out.log'
}]
};
|
pm2 config文件:http://pm2.keymetrics.io/docs/usage/application-declaration/
【pm2命令】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
//
安裝
npm
install
pm2 -g
//
更新 - 儲存當前程序
pm2 save
//
更新 - 下載
npm
install
pm2 -g
//
更新 - 執行
pm2 update
//
啟動
pm2 start app.js
//
啟動 - 設定name
pm2 start app.js --name
test
//
啟動 - cluster mode
pm2 start app.js -i 2
//
停止
pm2 stop
test
|
id
pm2 stop all
//
刪除
pm2 delete
test
|
id
pm2 delete all
//
重啟
pm2 restart
test
|
id
pm2 restart all
//
重新整理,平滑重啟,失敗後退化到restart
pm2 reload
test
|
id
pm2 reload all
//
檢視 - 程序列表
pm2 list
pm2 l
//
檢視 - 某個程序
pm2 show
test
|
id
pm2 info
test
|
id
//
版本
pm2 -
v
|
【更多】
狀態管理:http://pm2.keymetrics.io/docs/usage/signals-clean-restart/
環境管理:http://pm2.keymetrics.io/docs/usage/environment/
日誌管理:http://pm2.keymetrics.io/docs/usage/log-management/
部署管理:http://pm2.keymetrics.io/docs/usage/deployment/
程序通訊:
http://pm2.keymetrics.io/docs/usage/process-metrics/
http://pm2.keymetrics.io/docs/usage/process-actions/
更多:http://pm2.keymetrics.io/docs/usage/quick-start/
http://uikoo9.com/更多精彩內容
求打賞(長按圖片即可識別)~ |
捐助列表:http://uikoo9.com/donate/ |