今天實現了一個用node寫了一個小網頁放在服務器,爲了解決關閉鏈接後退出node的執行,找了forrver和pm2,權衡之下,選擇了pm2。npm上找到了其文檔,簡單翻譯一下,留備後用。
奈何我做爲一個英語四級都沒有過的學渣,翻譯水平實在有限,有疏漏不通之處,往你們諒解。(其實我就當作一個學習英語的方式了)node
文檔地址linux
PM2是一個帶有負載均衡功能的Node應用的進程管理器。它能夠保持Node應用一直後臺運行,在不中止的前提下更新,優化了系統任務管理。
啓動進程管理十分簡單:git
$ pm2 start app.js
PM2通過了超過1000次的測試。
而且可以運行在linux&MacOSx&Windows等操做系統上。github
$ npm install pm2 -g
當你安裝了node以後,npm也會被安裝--Installing Node.js with NVM
NVM是一個Nodejs的版本控制器。web
$ npm install pm2 -g
你的程序如今是一個受監控的後臺進程,而且會一直運行下去。
More about Process Managementshell
# Install latest pm2 version $ npm install pm2 -g # Save process list, exit old PM2 & restore all processes $ pm2 update
PM2更新是無縫的npm
命令概述json
# 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 # 啓動四個應用程序實例 # 會給每一個網絡裝載網絡均衡器 $ 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" # 啓動應用,而且命名‘api’ $ 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 # 關閉並刪除全部應用 $ 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 # 版本發佈, git推送和npm發佈
一點進程啓動,你能夠查看列表而且輕鬆的管理:api
監聽全部運行的進程bash
$ 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 的均衡器。能夠根據CPU可得到數目在增長性能。
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
監視全部進程:
$ 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能夠配置啓動腳本,在每一次系統重啓的時候,保持PM2和進程的運行。
支持的系統: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
PM2內置了一個簡單卻強大的模塊系統,安裝模塊十分簡單:
$ pm2 install <module_name>
這裏有一些兼容的模塊,可以經過PM2管理Nodejs庫:
pm2-logrotate 自動記錄PM2和程序的管理日誌
pm2-webshell 提供一個終端
pm2-server-monit 監控系統運行
Writing your own module
若是你使用PM2管理Nodejs應用,Keymetrics會使你管理簡單,而且能夠是跨服務器。
Discover the monitoring dashboard for PM2
十分感謝,但願您能喜歡PM2
Application Declaration via JS files
PM2 on Heroku/Azure/App Engine
翻譯水平較低,並且使用的並不深刻。隨着之後理解的加深,再逐漸修改翻譯文檔。