npm系列:pm2文档简单翻译

今天实现了一个用node写了一个小网页放在服务器,为了解决关闭连接后退出node的执行,找了forrver和pm2,权衡之下,选择了pm2。npm上找到了其文档,简单翻译一下,留备后用。
奈何我作为一个英语四级都没有过的学渣,翻译水平实在有限,有疏漏不通之处,往大家谅解。(其实我就当做一个学习英语的方式了)

文档地址

PM2是一个带有负载均衡功能的Node应用的进程管理器。它可以保持Node应用一直后台运行,在不停止的前提下更新,优化了系统任务管理。
启动进程管理十分简单:

$ pm2 start app.js

PM2经过了超过1000次的测试。
并且能够运行在linux&MacOSx&Windows等操作系统上。

pm2.png

Install PM2

$ npm install pm2 -g

当你安装了node之后,npm也会被安装--Installing Node.js with NVM
NVM是一个Nodejs的版本控制器。

启动一个应用

$ npm install pm2 -g

你的程序现在是一个受监控的后台进程,并且会一直运行下去。
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         # 启动四个应用程序实例

                               # 会给每个网络装载网络均衡器

$ 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发布

进程管理器

一点进程启动,你可以查看列表并且轻松的管理:

pm2-list.png

监听所有运行的进程

$ 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

注:

翻译水平较低,而且使用的并不深入。随着以后理解的加深,再逐渐修改翻译文档。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容