1.0 前言
平常我们写项目线上部署这个步骤是少不了的,常常用到的有 类似阿里云里面的 ECS 机器(可以理解成一台Liunix),或者 公司内部的 Docker 容器,部署完成,我们会面临一个线上的 机器监控问题,比如 CPU 使用率飙升,请求太多,服务器响应不过来,日志太多,需要切割问题,这节我们就讲讲这些方面,最后我们实现一个域名绑定,访问服务的实现。
2.0 ECS 环境
ECS 就是云 Lunix 服务器,前置条件是,我们需要先安装 Node 环境,以下是参考文档:
这样基本环境搭建好了,我们学习的时候,肯定是没有这些环境的,想着在自己本地试试就好,那本地安装好 Node 环境就好了。
3.0 PM2 介绍
我们在服务器上部署的时候,在 ssh 切换到对应目录然后 执行 node app.js 命令,这个时候项目跑起来了,可以访问了,但是问题也出来,只要退出这个命令窗口,服务就不能访问了,这个时候我们就需要守护进程来启动 服务,这样退出窗口,服务还可以访问,这个时候我们就需要 PM2 上场了。
PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 — PM2 官网介绍
上面这句话简介的总结了 PM2 包含的功能,接下来我们看看 PM2 简单使用。
3.0.1 安装
npm install pm2 -g
全局安装,简单的不能再简单,安装好后会自动创建以下目录,看文件名基本就知道干嘛的。
$HOME/.pm2
will contain all PM2 related files$HOME/.pm2/logs
will contain all applications logs$HOME/.pm2/pids
will contain all applications pids$HOME/.pm2/pm2.log
PM2 logs$HOME/.pm2/pm2.pid
PM2 pid$HOME/.pm2/rpc.sock
Socket file for remote commands$HOME/.pm2/pub.sock
Socket file for publishable events$HOME/.pm2/conf.js
PM2 Configuration
3.0.2 基本使用
之前我们启动命令如下:
"scripts": {
"start:prod": "cross-env NODE_ENV=prod && node bin/www",
"lint": "lint-staged"
},
我们执行 npm run start:prod,启动项目,现在我们改成 pm2 启动
"scripts": {
"start:prod": "cross-env NODE_ENV=prod && pm2 start ./bin/www --watch --name koa-test",
"lint": "lint-staged"
},
现在我们执行 npm run start:prod 服务就运行起来了,这个时候我们关闭命令行,http://localhost:3000/ 服务还是可以访问的,接下来我们执行下 pm2 list
3.0.2 启动相关常用参数
--watch
:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。-i --instances
:启用多少个实例,可用于负载均衡。如果-i 0
或者-i max
,则根据当前机器核数确定实例数目。--ignore-watch
:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
-n --name
:应用的名称。查看应用信息的时候可以用到。-o --output <path>
:标准输出日志文件的路径。-e --error <path>
:错误输出日志文件的路径。
完整命令行参数列表,例如:
pm2 start ./bin/www--watch -i 2 --name koa-test
3.0.3 重启
pm2 restart app.js
3.0.4 停止
停止特定的应用。可以先通过pm2 list
获取应用的名字(—name指定的)或者进程id。
pm2 stop app_name|app_id
如果要停止所有应用,可以:
pm2 stop all
3.0.5 删除
npm delete koa-test
3.0.7 查看进程状态
pm2 list
大部分时间我们是结合几个命令一起使用的,比如下面命令:
pm2 delete koa-test || true && pm2 start ./bin/www--watch -i 2 --name koa-test
表示删除名称为 koa-test 的服务,然后启动一个服务名称叫 koa-test,类似重启。
当然 PM2 配置项非常多,这里我也不一一列举,大家在使用的时候可以翻看文档,根据文档来定制化自己的需求。
4.0 小结
这节我们讲述了 ECS 的概念,PM2 的基本使用,在 Node 应用中我们部署用的最多就是 PM2 了,大家可以跟着 Demo ,在本地试试,Demo 地址