在 Ubuntu 上,Apache 日志过大是一个很常见的问题,通常不是“Bug”,而是配置或使用方式导致的。下面按「常见原因 → 说明 → 解决建议」给你梳理一下。
这是 90% 情况的主因。
Ubuntu 使用 logrotate 管理日志,但:
结果:
/var/log/apache2/access.log
/var/log/apache2/error.log
一直追加,从不切割。
✅ 检查:
ls -lh /var/log/apache2/
cat /etc/logrotate.d/apache2
✅ 手动测试:
sudo logrotate -d /etc/logrotate.d/apache2
sudo logrotate -f /etc/logrotate.d/apache2
如果是:
access.log 会飞速增长。
✅ 查看日志增长速度:
sudo tail -f /var/log/apache2/access.log
Apache 默认:
LogLevel warn
但如果你或某些程序改成:
LogLevel debug
error.log 会爆炸。
✅ 检查:
grep LogLevel /etc/apache2/apache2.conf
✅ 建议:
LogLevel warn
常见现象:
✅ 查看 TOP IP:
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head
例如你改了:
CustomLog /home/www/logs/access.log combined
但 /home/www/logs 没配置 logrotate。
Docker 默认:
结果宿主机看起来“没日志”,但磁盘被占满。
sudo truncate -s 0 /var/log/apache2/access.log
sudo truncate -s 0 /var/log/apache2/error.log
sudo systemctl status logrotate
关闭某些日志:
CustomLog /dev/null combined
或只记录必要信息。
/etc/logrotate.d/apache2 关键项:
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null
endscript
你可以贴出:
ls -lh /var/log/apache2/cat /etc/logrotate.d/apache2我可以直接帮你判断是哪一种原因,并给出精确修改方案。