Apache日志滚动依赖logrotate工具实现,无需修改源码或重启服务;需确认logrotate已安装、配置专用规则文件、设置正确权限与postrotate信号,并通过sudo logrotate -vf手动验证。

确认 logrotate 已就位
大多数 Linux 发行版(Ubuntu、Debian、CentOS、RHEL)默认已安装 logrotate。运行以下命令验证:
logrotate --version
若提示命令未找到,按系统安装:
- Ubuntu/Debian:sudo apt-get install logrotate
- CentOS/RHEL:sudo yum install logrotate(或 dnf install logrotate)
编辑 Apache 专用轮转配置
配置文件路径因系统而异:
- Ubuntu/Debian:/etc/logrotate.d/apache2
- CentOS/RHEL:/etc/logrotate.d/httpd
用 nano 或 vim 打开并写入标准规则(以 Ubuntu 为例):
/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -f /var/run/apache2.pid ]; then
kill -USR1 $(cat /var/run/apache2.pid)
fi
endscript
}
关键点说明:
- daily:每天执行一次轮转;高流量站点可改 hourly(需配合 cron 配置)
- rotate 14:保留最近 14 个归档(如 access.log.1.gz 到 access.log.14.gz)
- delaycompress:确保正在写入的 access.log.1 不被立即压缩,避免 I/O 冲突
- create 640 root adm:新日志文件权限必须匹配 Apache 进程写入需求(adm 组是 Ubuntu 默认日志组)
- postrotate 中 kill -USR1:通知 Apache 关闭旧句柄、打开新日志文件,比 reload 更轻量、不中断连接
手动测试配置是否生效
别等明天 cron 触发,先用强制模式验证:
sudo logrotate -vf /etc/logrotate.d/apache2
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
加 -v 查看详细步骤,加 -f 忽略时间判断。成功时你会看到类似:
rotating pattern: /var/log/apache2/*.log daily, log count 14, compress...
renaming /var/log/apache2/access.log to /var/log/apache2/access.log.1
creating new /var/log/apache2/access.log mode = 0640 uid = 0 gid = 4
若报错,常见原因有:权限不足(检查 /var/log/apache2 目录属主)、pid 文件路径错误(确认 /var/run/apache2.pid 存在)、Apache 未运行(USR1 信号会失败,但不影响轮转本身)。
确认自动机制已启用
logrotate 通常由系统级 cron 每日调用:
检查 /etc/cron.daily/logrotate 是否存在且可执行。内容应类似:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
该脚本会加载全局配置(/etc/logrotate.conf)并遍历 /etc/logrotate.d/ 下所有配置文件。无需额外添加 crontab 条目。
注意:如果你在 /etc/logrotate.d/ 下新增了配置,它会自动被纳入每日调度,无需重启任何服务。

















