什么是PM2

	pm2 是一个带有负载均衡功能的Node应用的进程管理器.

特性

	内建负载均衡(使用Node cluster 集群模块)
	后台运行
	0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
	具有Ubuntu和CentOS 的启动脚本
	停止不稳定的进程(避免无限循环)
	控制台检测
	提供 HTTP API
	远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 

安装和使用

安装
npm install -g pm2

使用
pm2 start app.js -i 4 
# 后台运行pm2,启动4个app.js  
# 也可以把'max' 参数传递给 start    
# 正确的进程数目依赖于Cpu的核心数目

pm2 start app.js --name my-api	 # 命名进程
pm2 list               			 # 显示所有进程状态
pm2 monit              			 # 监视所有进程
pm2 logs               			 #  显示所有进程日志
pm2 stop all           			 # 停止所有进程
pm2 restart all        			 # 重启所有进程
pm2 reload all         			 # 0秒停机重载进程 (用于 NETWORKED 进程)
pm2 stop 0             		 	 # 停止指定的进程
pm2 restart 0          			 # 重启指定的进程
pm2 startup            			 # 产生 init 脚本 保持进程活着
pm2 web                			 # 运行健壮的 computer API endpoint (http://localhost:9615)
pm2 delete 0           			 # 杀死指定的进程
pm2 delete all         	 		 # 杀死全部进程 

运行进程的不同方式:

pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目
pm2 start app.js -i 3 # 启动3个进程
pm2 start app.js -x #用fork模式启动 app.js 而不是使用 cluster
pm2 start app.js -x – -a 23 # 用fork模式启动 app.js 并且传递参数 (-a 23)
pm2 start app.js --name serverone # 启动一个进程并把它命名为 serverone
pm2 stop serverone # 停止 serverone 进程
pm2 start app.json # 启动进程, 在 app.json里设置选项
pm2 start app.js -i max – -a 23 #在–之后给 app.js 传递参数
pm2 start app.js -i max -e err.log -o out.log # 启动 并 生成一个配置文件
你也可以执行用其他语言编写的app ( fork 模式):
pm2 start my-bash-script.sh -x --interpreter bash
pm2 start my-python-script.py -x --interpreter python

pm2.json

{
  "apps": [{
    "name": "demo;", // pm2监听的时候名称
    "script": "production.js", //pm2启动的哪个文件
    "cwd": "", 
    "exec_mode": "fork",
    "max_memory_restart": "1G",
    "autorestart": true,
    "node_args": [],
    "args": [],
    "env": {
    }
  }]
}

[源引]https://github.com/Unitech/pm2点击前往

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐