npm系列:pm2文檔簡單翻譯

今天實現了一個用node寫了一個小網頁放在服務器,爲了解決關閉鏈接後退出node的執行,找了forrver和pm2,權衡之下,選擇了pm2。npm上找到了其文檔,簡單翻譯一下,留備後用。
奈何我做爲一個英語四級都沒有過的學渣,翻譯水平實在有限,有疏漏不通之處,往你們諒解。(其實我就當作一個學習英語的方式了)node

文檔地址linux

PM2是一個帶有負載均衡功能的Node應用的進程管理器。它能夠保持Node應用一直後臺運行,在不中止的前提下更新,優化了系統任務管理。
啓動進程管理十分簡單:git

$ pm2 start app.js

PM2通過了超過1000次的測試。
而且可以運行在linux&MacOSx&Windows等操做系統上。github

pm2.png

Install PM2

$ npm install pm2 -g

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

啓動一個應用

$ npm install pm2 -g

你的程序如今是一個受監控的後臺進程,而且會一直運行下去。
More about Process Managementshell

Update PM2

# 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

pm2-list.png

監聽全部運行的進程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>

More about Process Management

負載平衡和當即重載

當啓動應用的時候使用 -i <instance_number>選項,集羣模式將會啓用。集羣模式將會instance_number而後自動加載 HTTP/TCP/UDP 的均衡器。能夠根據CPU可得到數目在增長性能。
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/內存監控

pm2-monit.png

監視全部進程:

$ 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能夠配置啓動腳本,在每一次系統重啓的時候,保持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

More about startup scripts

模塊系統

PM2內置了一個簡單卻強大的模塊系統,安裝模塊十分簡單:

$ pm2 install <module_name>

這裏有一些兼容的模塊,可以經過PM2管理Nodejs庫:
pm2-logrotate 自動記錄PM2和程序的管理日誌
pm2-webshell 提供一個終端
pm2-server-monit 監控系統運行
Writing your own module

Keymetrics monitoring

application-demo.png

若是你使用PM2管理Nodejs應用,Keymetrics會使你管理簡單,而且能夠是跨服務器。
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

注:

翻譯水平較低,並且使用的並不深刻。隨着之後理解的加深,再逐漸修改翻譯文檔。

相關文章
相關標籤/搜索