pm2
特点
- 进程守护 - 稳定
- 多进程 - 高效
- 日志记录 - 问题可追溯
指令
- 启动:pm2 start xxx.js
- 重启:pm2 restart <id/name>
- 重载:pm2 reload
- 列表:pm2 list
- 日志:pm2 logs <id/name>
- 停止:pm2 stop <id/name>
- 删除:pm2 delete <id/name>
- 监控:pm2 monit
安装
npm i pm2 -g
配置文件
默认配置
// bin\pm2AppConf.js
const os = require('os')
const cpuCoreLength = os.cpus().length // CPU 几核
module.exports = {
name: 'biz-editor-server', // 服务名称
script: 'bin/www', // 服务启动入口
// watch: true, // 无特殊情况,不用实时监听文件,否则可能会导致很多 restart
ignore_watch: ['node_modules', '__test__', 'logs'], // 监听排除目录
instances: cpuCoreLength, // 进程数量 本地测试 一个即可
error_file: './logs/err.log', // 错误日志目录
out_file: './logs/out.log', // 日志目录
log_date_format: 'YYYY-MM-DD HH:mm:ss Z', // Z 表示使用当前时区的时间格式
combine_logs: true, // 多个实例,合并日志
max_memory_restart: '300M', // 内存占用超过 300M ,则重启
}
开发环境配置
// bin\pm2-prd-dev.config.js
const appConf = require('./pm2AppConf')
// 为了测试方便,pm2 进程设置为 1
appConf.instances = 1
module.exports = {
apps: [appConf],
}
添加命令,临时改为 NODE_ENV=dev
// package.json
"scripts": {
"prd-dev": "cross-env NODE_ENV=dev pm2 start bin/pm2-prd-dev.config.js",
},
指令演示
启动服务 npm run prd-dev
查看列表 pm2 list
日志 pm2 logs
监控 pm2 monit
停止 pm2 stop 0
删除 pm2 delete 0
pm2 日志拆分
安装插件
使用 pm2 进行安装
pm2 install pm2-logrotate
安装完以后, 通过 pm2 list 可以查看到 pm2-logrotate 的进程。
rotateInterval 的设置遵循 crontab 的定时规则。
nginx
nginx 介绍
nginx 一直是 web server 的必备神器,以稳定和高性能著称。
- 静态服务(
html,css,js等静态资源访问) - 反向代理
- 负载均衡(课程用不到)
Access log
安装 nginx
👉👉 nginx 官方下载
下载完后直接解压,然后进入解压目录,打开 cmd,执行 start nginx.exe
浏览器访问 http://127.0.0.1/ , 出现如下界面证明启动成功。
常用命令
- 启动:nginx
- 重启:nginx -s reload
- 停止:nginx -s stop
- 测试配置文件:nginx -t
- 指定配置文件:nginx -c xxx.conf