今天实现了一个用node写了一个小网页放在服务器,为了解决关闭连接后退出node的执行,找了forrver和pm2,权衡之下,选择了pm2。npm上找到了其文档,简单翻译一下,留备后用。
奈何我作为一个英语四级都没有过的学渣,翻译水平实在有限,有疏漏不通之处,往大家谅解。(其实我就当做一个学习英语的方式了)
PM2是一个带有负载均衡功能的Node应用的进程管理器。它可以保持Node应用一直后台运行,在不停止的前提下更新,优化了系统任务管理。
启动进程管理十分简单:
$ pm2 start app.js
PM2经过了超过1000次的测试。
并且能够运行在linux&MacOSx&Windows等操作系统上。
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
管理进程很简洁:
$ 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
CPU/内存监控
监视所有进程:
$ 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
Keymetrics monitoring
如果你使用PM2管理Nodejs应用,Keymetrics会使你管理简单,并且可以是跨服务器。
Discover the monitoring dashboard for PM2
十分感谢,希望您能喜欢PM2
More about PM2
Application Declaration via JS files
PM2 on Heroku/Azure/App Engine
CHANGELOG
Contributors
注:
翻译水平较低,而且使用的并不深入。随着以后理解的加深,再逐渐修改翻译文档。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。