在 Debian 上 Apache 日志“丢失”或消失,通常不是真的被删了,而是配置、轮转或权限问题。下面按最常见原因逐一说明:
Debian 默认启用 logrotate 管理 Apache 日志:
/etc/logrotate.d/apache2
默认行为是:
access.log.1、access.log.2.gz✅ 检查是否有旧日志:
ls -lh /var/log/apache2/
你可能只是没看到 access.log,而是看到了 .gz 文件。
检查虚拟主机或全局配置:
grep -R "CustomLog" /etc/apache2/
grep -R "ErrorLog" /etc/apache2/
常见问题:
CustomLog /dev/null示例正确配置:
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
修改后重载:
apache2ctl configtest
systemctl reload apache2
Apache 通常以 www-data 运行:
ps aux | grep apache
检查目录权限:
ls -ld /var/log/apache2
应为:
drwxr-x--- www-data adm
修复示例:
chown -R www-data:adm /var/log/apache2
chmod 750 /var/log/apache2
日志“消失”或停止写入,可能是磁盘满了:
df -h
df -i
如果你用的是:
ErrorLog syslog
日志会进 journalctl 而不是文件:
journalctl -u apache2
修改配置后必须:
systemctl restart apache2
否则旧进程仍按旧路径写。
检查:
crontab -l
ls /etc/cron.daily/
ls -lh /var/log/apache2
apache2ctl -S
journalctl -u apache2 --since "1 hour ago"
df -h
cat /etc/logrotate.d/apache2
如果你愿意,可以贴出:
/var/log/apache2 目录内容我可以帮你精准定位是哪一种原因。