nodejs部署配置pm2

1,527 阅读2分钟

直接通过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就可以解决该问题

  1. 在某个文件夹中,创建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/');
  1. 全局安装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)