npm系列:pm2文檔簡單翻譯

今天實現(xiàn)了一個用node寫了一個小網(wǎng)頁放在服務(wù)器,為了解決關(guān)閉連接后退出node的執(zhí)行,找了forrver和pm2,權(quán)衡之下,選擇了pm2。npm上找到了其文檔,簡單翻譯一下,留備后用。
奈何我作為一個英語四級都沒有過的學渣,翻譯水平實在有限,有疏漏不通之處,往大家諒解。(其實我就當做一個學習英語的方式了)

文檔地址

PM2是一個帶有負載均衡功能的Node應用的進程管理器。它可以保持Node應用一直后臺運行,在不停止的前提下更新,優(yōu)化了系統(tǒng)任務(wù)管理。
啟動進程管理十分簡單:

$ pm2 start app.js

PM2經(jīng)過了超過1000次的測試。
并且能夠運行在linux&MacOSx&Windows等操作系統(tǒng)上。

pm2.png

Install PM2

$ npm install pm2 -g

當你安裝了node之后,npm也會被安裝--Installing Node.js with NVM
NVM是一個Nodejs的版本控制器。

啟動一個應用

$ npm install pm2 -g

你的程序現(xiàn)在是一個受監(jiān)控的后臺進程,并且會一直運行下去。
More about Process Management

Update PM2

# Install latest pm2 version

$ npm install pm2 -g
# Save process list, exit old PM2 & restore all processes
$ pm2 update

PM2更新是無縫的

主要特點

命令概述

# General

$ npm install pm2 -g           # 安裝 PM2

$ pm2 start app.js             #啟動, Daemonize and auto-restart application (Node)

$ pm2 start app.py             # 啟動, Daemonize and auto-restart application (Python)

$ pm2 start npm -- start       # 啟動, Daemonize and auto-restart Node application

 
# Cluster Mode (Node.js only)
$ pm2 start app.js -i 4         # 啟動四個應用程序?qū)嵗?
                               # 會給每個網(wǎng)絡(luò)裝載網(wǎng)絡(luò)均衡器

$ pm2 reload all               # 立即重啟所有工作進程

$ pm2 scale [app-name] 10       # 使用10個工作進程

 
# Process Monitoring
$ pm2 list                     # 列出所有PM2啟動的進程

$ pm2 monit                     # 列出每個程序的詳細情況和CPU使用情況

$ pm2 show [app-name]           # 列出程序的所有信息

 
# Log management
$ pm2 logs                     # 列出應用的日志

$ pm2 logs [app-name]           # 列出某個app的日志

$ pm2 logs --json               # 使用json格式列出日志

$ pm2 flush
$ pm2 reloadLogs
 
# Process State Management
$ pm2 start app.js --name="api" # 啟動應用,并且命名‘a(chǎn)pi’

$ pm2 start app.js -- -a 34     # Start app and pass option "-a 34" as argument
$ pm2 start app.js --watch     # 當文件改變的時候重新啟動應用

$ pm2 start script.sh           # 啟動bash腳本

$ pm2 start app.json           # 啟動所有app.json中聲明的程序

$ pm2 reset [app-name]         # Reset all counters

$ pm2 stop all                 # 停止所有應用

$ pm2 stop 0                   # 停止id為0的進程

$ pm2 restart all               # 重啟所有應用

$ pm2 gracefulReload all       # Graceful reload all apps in cluster mode
$ pm2 delete all               # 關(guān)閉并刪除所有應用

$ pm2 delete 0                 # 刪除id為0的程序

 
# Startup/Boot management
$ pm2 startup                   # Detect init system, generate and configure pm2 boot on startup
$ pm2 save                     # Save current process list
$ pm2 resurrect                 # Restore previously save processes
$ pm2 unstartup                 # Disable and remove startup system
 
$ pm2 update                   # Save processes, kill PM2 and restore processes
$ pm2 generate                 # Generate a sample json configuration file
 
# Deployment
$ pm2 deploy app.json prod setup   # Setup "prod" remote server
$ pm2 deploy app.json prod         # Update "prod" remote server
$ pm2 deploy app.json prod revert 2 # Revert "prod" remote server by 2
 
# Module system
$ pm2 module:generate [name]   # Generate sample module with name [name]

$ pm2 install pm2-logrotate     # 安裝模塊 (here a log rotation system)

$ pm2 uninstall pm2-logrotate   # 卸載模塊

$ pm2 publish                   # 版本發(fā)布, git推送和npm發(fā)布

進程管理器

一點進程啟動,你可以查看列表并且輕松的管理:

pm2-list.png

監(jiān)聽所有運行的進程

$ pm2 list

管理進程很簡潔:

$ pm2 stop     <app_name|id|'all'|json_conf>
$ pm2 restart <app_name|id|'all'|json_conf>
$ pm2 delete   <app_name|id|'all'|json_conf>

查看更多的進程信息:

$ pm2 describe <id|app_name>

More about Process Management

負載平衡和立即重載

當啟動應用的時候使用 -i <instance_number>選項,集群模式將會啟用。集群模式將會instance_number然后自動加載 HTTP/TCP/UDP 的均衡器。可以根據(jù)CPU可獲得數(shù)目在增加性能。
PM2支持所有的Nodejs框架,并且任何Node.js程序不用修改任何代碼即能運行

cluster-support.png

主要命令:

$ pm2 start app.js -i max # Enable load-balancer and start 'max' instances (cpu nb)
$ pm2 reload all           # Zero second dowtime reload
$ pm2 scale <app_name> <instance_number> # Increase / Decrease process number

More informations about how PM2 make clustering easy

CPU/內(nèi)存監(jiān)控

pm2-monit.png

監(jiān)視所有進程:

$ pm2 monit

日志工具

pm2-logs.png

即時地展示詳細的進程日志。有 Standard, Raw, JSON和formated
輸出可以使用:

$ pm2 logs ['all'|app_name|app_id] [--json] [--format] [--raw]`

例子:

$ pm2 logs APP-NAME       # Display APP-NAME logs
$ pm2 logs --json         # JSON output
$ pm2 logs --format       # Formated output 
$ pm2 flush               # Flush all logs
$ pm2 reloadLogs         # Reload all logs

More about log management

配置啟動腳本

PM2可以配置啟動腳本,在每一次系統(tǒng)重啟的時候,保持PM2和進程的運行。
支持的系統(tǒng):systemd (Ubuntu 16, CentOS, Arch), upstart (Ubuntu 14/12), launchd (MacOSx, Darwin), rc.d (FreeBSD).

# Auto detect init system + generate and setup PM2 boot at server startup

$ pm2 startup

# Manually specify the startup system
# Can be: systemd, upstart, launchd, rcd
$ pm2 startup [platform]
 
# Disable and remove PM2 boot at server startup
$ pm2 unstartup

再重啟的時候,保存進程列表:

pm2 save

More about startup scripts

模塊系統(tǒng)

PM2內(nèi)置了一個簡單卻強大的模塊系統(tǒng),安裝模塊十分簡單:

$ pm2 install <module_name>

這里有一些兼容的模塊,能夠通過PM2管理Nodejs庫:
pm2-logrotate 自動記錄PM2和程序的管理日志
pm2-webshell 提供一個終端
pm2-server-monit 監(jiān)控系統(tǒng)運行
Writing your own module

Keymetrics monitoring

application-demo.png

如果你使用PM2管理Nodejs應用,Keymetrics會使你管理簡單,并且可以是跨服務(wù)器。
Discover the monitoring dashboard for PM2
十分感謝,希望您能喜歡PM2

More about PM2

Application Declaration via JS files

Watch & Restart

PM2 API

Deployment workflow

PM2 on Heroku/Azure/App Engine

PM2 auto completion

Using PM2 in ElasticBeanStalk

CHANGELOG

CHANGELOG

Contributors

Contributors

注:

翻譯水平較低,而且使用的并不深入。隨著以后理解的加深,再逐漸修改翻譯文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內(nèi)容