logrotate是debian/ubuntu默认日志轮转工具,需配置/etc/logrotate.d/apache2实现apache日志按天轮转、保留7份、自动重载服务并压缩归档。
apache安装后,默认日志会持续写入 /var/log/apache2/access.log 和 error.log,不加干预容易占满磁盘。logrotate 是 debian/ubuntu 系统默认的日志轮转工具,配置简单、稳定可靠,推荐优先使用。
确认 logrotate 已就位并定位配置位置
Debian/Ubuntu 系统通常已预装 logrotate。可运行以下命令验证:
-
logrotate --version查看是否可用 -
ls /etc/logrotate.d/apache2检查 Apache 专用配置是否存在 - 若不存在,新建配置文件:
sudo touch /etc/logrotate.d/apache2
编写标准轮转规则(以 daily 为例)
用编辑器打开配置文件(如 sudo nano /etc/logrotate.d/apache2),填入以下内容:
/var/log/apache2/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if systemctl is-active --quiet apache2; then
systemctl reload apache2 > /dev/null
fi
endscript
}
关键点说明:
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
-
daily表示每天触发一次轮转;也可换为weekly或size 100M(按大小触发) -
rotate 7保留最近 7 份归档(access.log.1.gz到access.log.7.gz) -
delaycompress避免刚轮转就压缩,让.1保持明文便于紧急查看 -
sharedscripts+postrotate确保多个日志(access/error)只 reload 一次 Apache - 使用
systemctl reload替代旧式/etc/init.d/apache2 reload,更适配现代 systemd 系统
手动测试与验证效果
配置保存后,立即验证是否语法正确、动作可达:
- 强制执行一次轮转:
sudo logrotate -f /etc/logrotate.d/apache2 - 检查日志目录:
ls -lh /var/log/apache2/应出现access.log.1或access.log.1.gz - 确认 Apache 仍在运行:
systemctl is-active apache2,且新日志有写入(tail -f /var/log/apache2/access.log)
补充说明:logrotate 如何自动运行
无需额外设置 cron —— 系统已通过 /etc/cron.daily/logrotate 每日凌晨触发全局轮转。该脚本会自动加载 /etc/logrotate.d/ 下所有配置,包括你的 apache2 文件。如需调整执行时间,可修改 /etc/cron.daily/logrotate 的调用逻辑,或改用 anacron 兼容非 24 小时开机场景。










