本文记录了使用ecosystem部署应用,并且处理因PM2日志文件过大导致服务器磁盘空间耗尽的问题解决过程。通过安装并配置pm2-logrotate插件实现了日志文件的自动化管理,确保了服务器的稳定运行。
# ecosystem配置
// 在nodejs/nextjs项目根目录创建 ecosystem.config.js
module.exports = {
apps: [
{
name: 'my-app-name',
script: './server.js', // 服务启动脚本
watch: false, // 禁用文件监视,提高性能
instances: 2, // 指定要启动的实例数量 // 0 和 max 同义
exec_mode: 'cluster', // 启用集群模式,指定要启动的实例数量
// 启用文件日志记录
output: './logs/app-out.log', // 标准输出日志文件
error: './logs/app-error.log', // 错误日志文件
// log: './logs/combined.log', // 合并日志文件(可选)
// 日志配置
log_date_format: 'YYYY-MM-DD HH:mm Z',
merge_logs: false, // 为每个实例单独日志
time: true, // 在日志中添加时间戳
env: {}
}
]
}
@前端进阶之旅: 代码已经复制到剪贴板
一级部署应用
pm2-runtime ecosystem.config.js
@前端进阶之旅: 代码已经复制到剪贴板
# pm2日志管理logrotate
永久解决日志文件过大,使用日志管理用的插件 pm2-logrotate
安装插件pm2-logrotate
pm2 install pm2-logrotate
@前端进阶之旅: 代码已经复制到剪贴板
查看日志配置
$ pm2 conf pm2-logrotate
Module: pm2-logrotate
$ pm2 set pm2-logrotate:max_size 10M
$ pm2 set pm2-logrotate:retain 50
$ pm2 set pm2-logrotate:compress false
$ pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
$ pm2 set pm2-logrotate:workerInterval 1
$ pm2 set pm2-logrotate:rotateInterval 0 0 * * *
$ pm2 set pm2-logrotate:rotateModule true
Modul