直接通过node app来启动,如果报错了可能直接停在整个运行, supervisor感觉只是拿来用作开发环境的。 目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种。
使用场合:
- supervisor是开发环境用。
- forever管理多个站点,每个站点访问量不大,不需要监控。
- pm2 网站访问量比较大,需要完整的监控界面
pm2主要特性:
- 内建负载均衡(使用Node cluster 集群模块)
- 后台运行
- 0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
- 具有Ubuntu和CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互
nodejs pm2使用
平时启动项目时,使用命令npm start去启动一个项目,但是如果程序遇到严重的bug后,会自动退出,而不会懂得重新启动项目,pm2就可以解决该问题
- 在某个文件夹中,创建app.js
在app.js中输入以下文本
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });   res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
- 全局安装pm2
npm install -g pm2 或者 yarn global add pm2
就在代码的位置执行命令,命令执行完成后,则app.js就在后台运行了
我们在启动任务时,也可以指定任务的多少
我们可以通过pm2 list查看运行的任务
也可以通过pm2 restart all重启所有任务
通过命令pm2 stop all停止所有任务
常用的命令如下:
$ 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 0 # 停止指定的进程
$ pm2 stop all # 停止所有进程
$ pm2 restart 0 # 重启指定的进程
$ pm2 restart all # 重启所有进程
$ pm2 delete 0 # 杀死指定的进程
$ pm2 delete all # 杀死全部进程
$ pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 startup # 产生 init 脚本 保持进程活着
$ pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615)