PM2介绍
PM2是Node应用进程管理器。可以利用它来简化很多node应用管理的繁琐任务。如:性能监控、自动重启、负载均衡等。因为在工作中遇到服务器重启后,需要一个一个去重新启动每个服务,这样不仅繁琐、效率低,而且容易遗忘开启一些服务。
PM2的主要特性
- 内容负载均衡(使用 Node cluster 集群模块)
- 后台运行
- 0秒停机重载
- 具有Ubuntu和CenteOS的启动脚本
- 停止不稳定的进程(避免无线循环)
- 控制台检测
- 提供HTTP API
- 远程控制和实时的接口API(Nodejs模块,允许和PM2进程管理器交互)
示例
创建一个node服务端:
- 创建一个空的文件夹
- 使用vscode打开,然后在此文件夹下新建好几个.js文件
- 在此文件夹下初始化npm
npm init -y - 填入如下代码:
// 第一个js文件 const express = require('express') const app = express() app.get('/index', (req, res) => { res.send({ code: 200, msg: '请求成功!', }) }) app.listen(9999, () => { console.log('9999已运行') }) // 第二个 const express = require('express') const app = express() app.get('/index2', (req, res) => { res.send({ code: 200, msg: '请求成功!', }) }) app.listen(8888, () => { console.log('8888已运行') }) ...... - 启动每一个node服务
node index[n].js
你会发现,我们每次启动一个node服务就得新开一个终端,而且每次都要在终端内执行node index[n].js命令,显得非常繁琐。
安装PM2
- 安装
npm install -g pm2 - 检查是否安装成功
pm2 -v
使用pm2启动node服务
-
进入到项目目录下
-
使用PM2来启动node服务
pm2 start index[n].js使用PM2我们不再需要开多个终端来运行多个node服务,而且可以清晰明了的看见有多少个以及具体是哪个node服务在运行中。
字段 说明 name 这个node服务运行的哪个文件 status 这个node服务的运行状态,是否正在运行中。
常用命令
-
查看运行日志:
pm2 log | pm2 monit -
查看进程列表:
pm2 list -
停止某个服务:
pm2 stop <name>|<id>
停掉服务之后,我们就无法进行访问了。
-
重启服务:
pm2 restart <id>|<name>重启之后我们又可以进行访问了:
-
重启所有服务:
pm2 restart all -
删除进程
pm2 delete <id>|<name> -
改变文件内容自动重启服务
pm2 start <name>.js --watch输入这个命令,当你对所监听的服务的文件内容修改,pm2会自动帮你重新启动。
-
为服务分配线程
pm2 start <name>.js --watch -i max|number分配多少个线程这个取决于你的电脑配置。max表示分配最大线程。
认识服务器
我们可以购买:阿里云、腾讯云、百度云等等。
买完服务器之后一定记得先重置一下服务器密码。
-
服务器信息
- ip地址:分为公网ip和内网ip,公网ip对外,内网ip对内,一般我们通过公网ip去访问我们的服务器。
- 域名:配域名和dns解析,让域名解析到服务器的公网ip地址上面,然后我们就可以通过域名机进行访问服务器。
- 镜像信息:服务器的系统镜像,比如:CentOS(linux服务器)、Ubuntu(linux服务器)、windows服务器。
- DDos攻击状态:DDos是一种攻击手段,通常用于将网站挤爆。
-
防火墙:
- HTTP:TCP协议,默认端口80
- HTTPS:TCP协议,默认端口443
- SSH:TCP协议,默认端口22,用于连接服务器