写node的时候,每次代码改动,保存完,需要频繁的手动ctrl + c
,node app.js
,这样太麻烦了,现在推荐一个保存后可自动运行的工具:PM2
PM2是什么
PM2(Process Manager)是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。 它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的Devops任务。
PM2的主要特性:
- 内建负载均衡(使用Node cluster 集群模块)
- 后台运行
- 0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
- 具有Ubuntu和CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )
PM2安装
//全局安装pm2,依赖node和npm npm install pm2 -g
PM2使用
假设你的服务端启动文件为app.js
,
pm2 start app.js
:启动pm2 list
:列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常pm2 monit
:监视每个node进程的CPU和内存的使用情况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 而不是使用 clusterpm2 start app.js -x -- -a 23
用fork模式启动 app.js 并且传递参数 (-a 23)pm2 start app.js --name serverone
启动一个进程并把它命名为 serveronepm2 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
启动 并 生成一个配置文件