在 Debian 上分割(轮转)Apache 日志,通常不建议手动分割,而是使用 logrotate,这是 Debian 系统默认采用的标准方式。下面按常见场景说明。
默认路径一般是:
/var/log/apache2/access.log
/var/log/apache2/error.log
虚拟主机日志可能在:
/var/log/apache2/your-site-access.log
/var/log/apache2/your-site-error.log
Debian 安装 Apache 后会自动生成:
/etc/logrotate.d/apache2
查看内容:
cat /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 2>&1 || true
endscript
}
| 参数 | 含义 |
|---|---|
daily |
每天分割 |
rotate 14 |
保留 14 个旧日志 |
compress |
使用 gzip 压缩 |
delaycompress |
延迟一次压缩 |
notifempty |
空日志不分割 |
create |
新建日志文件并设置权限 |
postrotate |
分割后让 Apache 重新打开日志 |
如果你想立刻测试:
sudo logrotate -f /etc/logrotate.d/apache2
强制轮转一次日志。
假设你有:
/var/log/apache2/mysite-access.log
可以新建配置:
sudo nano /etc/logrotate.d/mysite
内容示例:
/var/log/apache2/mysite-*.log {
daily
rotate 30
compress
missingok
notifempty
create 640 www-data adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null 2>&1 || true
endscript
}
如果你不想用 logrotate,也可以在 Apache 配置中使用 rotatelogs(不推荐新手):
CustomLog "|/usr/bin/rotatelogs /var/log/apache2/access.%Y-%m-%d.log 86400" combined
⚠️ 缺点:
检查:
ls /var/log/apache2/
确认是否有 .gz 文件。
确保 postrotate 中包含:
systemctl reload apache2
日志文件应属于:
www-data:adm
✅ 最好的方式:
使用 Debian 自带的
logrotate+ Apache 默认配置
✅ 不要做的事:
mv 日志文件如果你愿意,可以贴出你的:
我可以帮你定制一套最合适的日志轮转方案。