在 Debian 上管理 Apache 日志,主要包括查看、轮转、清理、分析和优化几个方面。下面按常见运维场景给你一个完整说明。
Debian 中 Apache 日志通常在:
/var/log/apache2/
常见文件:
| 文件 | 说明 |
|---|---|
access.log |
访问日志 |
error.log |
错误日志 |
other_vhosts_access.log |
虚拟主机访问日志 |
ssl_access.log |
HTTPS 访问日志 |
ssl_error.log |
HTTPS 错误日志 |
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
tail -n 100 /var/log/apache2/error.log
grep "error" /var/log/apache2/error.log
grep "404" /var/log/apache2/access.log
Debian 使用 logrotate 自动管理 Apache 日志,避免磁盘爆满。
/etc/logrotate.d/apache2
示例内容(简化):
/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 www-data adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null
endscript
}
| 参数 | 含义 |
|---|---|
| daily | 每天轮转 |
| rotate 14 | 保留 14 天 |
| compress | 压缩旧日志 |
| notifempty | 空日志不轮转 |
| postrotate | 轮转后重载 Apache |
logrotate -vf /etc/logrotate.d/apache2
⚠️ 不建议直接删除正在写入的日志文件
truncate -s 0 /var/log/apache2/access.log
truncate -s 0 /var/log/apache2/error.log
或删除旧日志:
rm /var/log/apache2/*.gz
编辑 Apache 配置:
/etc/apache2/apache2.conf
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
常见级别:
emerg alert crit error warn notice info debug
✅ 生产环境建议:
LogLevel warn
<VirtualHost *:80>
ServerName example.com
CustomLog ${APACHE_LOG_DIR}/example_access.log combined
ErrorLog ${APACHE_LOG_DIR}/example_error.log
</VirtualHost>
✅ 每个站点单独日志,便于排查
apt install goaccess
goaccess /var/log/apache2/access.log -c
生成 HTML 报表:
goaccess /var/log/apache2/access.log \
--log-format=COMBINED \
-o /var/www/html/report.html
✅ 开启 logrotate
✅ 关闭不必要的日志:
# 临时关闭访问日志
CustomLog /dev/null combined
✅ 使用反向代理(如 Nginx)分担访问日志
✅ 定期监控磁盘:
df -h
du -sh /var/log/apache2
ls -ld /var/log/apache2
chown -R www-data:adm /var/log/apache2
systemctl status apache2
journalctl -xe
如果你愿意,我可以:
直接告诉我你的使用场景即可。