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
安装
代码语言:javascript复制npm i pm2 -g
配置文件
默认配置
代码语言:javascript复制// binpm2AppConf.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 ,则重启
}
开发环境配置
代码语言:javascript复制// binpm2-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