温馨提示×

怎么分割Debian Apache日志

小樊
43
2026-08-12 02:06:56
栏目: 智能运维

在 Debian 上分割(轮转)Apache 日志,通常不建议手动分割,而是使用 logrotate,这是 Debian 系统默认采用的标准方式。下面按常见场景说明。


一、Debian 中 Apache 日志的位置

默认路径一般是:

/var/log/apache2/access.log
/var/log/apache2/error.log

虚拟主机日志可能在:

/var/log/apache2/your-site-access.log
/var/log/apache2/your-site-error.log

二、使用 logrotate(推荐 ✅)

1. 查看已有的 Apache logrotate 配置

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
}

2. 常用参数说明

参数 含义
daily 每天分割
rotate 14 保留 14 个旧日志
compress 使用 gzip 压缩
delaycompress 延迟一次压缩
notifempty 空日志不分割
create 新建日志文件并设置权限
postrotate 分割后让 Apache 重新打开日志

三、立即手动测试 logrotate

如果你想立刻测试

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
}

五、Apache 自带方式(rotatelogs,不常用)

如果你不想用 logrotate,也可以在 Apache 配置中使用 rotatelogs(不推荐新手):

CustomLog "|/usr/bin/rotatelogs /var/log/apache2/access.%Y-%m-%d.log 86400" combined

⚠️ 缺点:

  • 配置复杂
  • 不如 logrotate 通用
  • 不利于统一管理

六、常见问题

1. 日志不分割?

检查:

ls /var/log/apache2/

确认是否有 .gz 文件。

2. Apache 没重新打开日志?

确保 postrotate 中包含:

systemctl reload apache2

3. 权限问题?

日志文件应属于:

www-data:adm

七、总结(推荐做法 ✅)

最好的方式

使用 Debian 自带的 logrotate + Apache 默认配置

不要做的事

  • 手动 mv 日志文件
  • 直接删除正在写入的日志

如果你愿意,可以贴出你的:

  • Apache 版本
  • 虚拟主机配置
  • 当前日志路径

我可以帮你定制一套最合适的日志轮转方案。

0