felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

使用 pm2 来部署 nodejs 项目 #79

Open felix-cao opened 6 years ago

felix-cao commented 6 years ago

一、 nvm 安装 node.js

nvm 是 Node Version Manager 的简称, 我们可能同时在进行2个项目,而2个不同的项目所使用的node版本又是不一样的,或者是要用更新的node版本进行试验和学习。这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,而nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换,而这个正是nvm的价值所在,详情可以查看 NVM 的 github

安装 nvm

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

某些情况下, 无法访问 raw.githubusercontent.com 去这里 👇,输入raw.githubusercontent.com 进行查询: https://site.ip138.com/

image

找一个或多个IP加入/etc/hosts

安装 node.js 的最新版本

$ nvm install node

二、安装 pm2

pm2 官网, 官网的描述是这样的

PM2 Runtime is a Production Process Manager for Node.js applications with a built-in Load Balancer. It allows you to keep applications alive forever, to reload them without downtime and facilitate common Devops tasks.

PM2 是一个带有负载均衡功能的Node应用的进程管理器。可以把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载。

pm2的主要特性:

1、内建负载均衡(使用Node cluster 集群模块) 2、后台运行 3、0秒停机重载 4、具有Ubuntu和CentOS 的启动脚本 5、停止不稳定的进程(避免无限循环) 6、控制台检测 7、提供 HTTP API 8、远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

pm2 安装

npm install -g pm2

三、 使用方法

$ pm2 start ./dist/server.js 启动app项目 $ 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 而不是使用 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 启动 并 生成一个配置文件