今天實現(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)上。
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ā)布
進程管理器
一點進程啟動,你可以查看列表并且輕松的管理:
監(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>
負載平衡和立即重載
當啟動應用的時候使用 -i <instance_number>選項,集群模式將會啟用。集群模式將會instance_number然后自動加載 HTTP/TCP/UDP 的均衡器。可以根據(jù)CPU可獲得數(shù)目在增加性能。
PM2支持所有的Nodejs框架,并且任何Node.js程序不用修改任何代碼即能運行
主要命令:
$ 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)控
監(jiān)視所有進程:
$ pm2 monit
日志工具
即時地展示詳細的進程日志。有 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
配置啟動腳本
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
模塊系統(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
如果你使用PM2管理Nodejs應用,Keymetrics會使你管理簡單,并且可以是跨服務(wù)器。
Discover the monitoring dashboard for PM2
十分感謝,希望您能喜歡PM2
More about PM2
Application Declaration via JS files
PM2 on Heroku/Azure/App Engine
CHANGELOG
Contributors
注:
翻譯水平較低,而且使用的并不深入。隨著以后理解的加深,再逐漸修改翻譯文檔。