在 CentOS 系统中,Apache 日志切割通常是通过 logrotate 工具来实现的。logrotate 是一个用于管理日志文件的工具,可以自动压缩、删除和邮件通知日志文件。以下是如何在 CentOS 上配置 Apache 日志切割的方法:
-
确保 logrotate 已经安装:
在 CentOS 7 及以上版本中,logrotate 已经预装。如果没有,请运行以下命令安装:
sudo yum install logrotate在 CentOS 6 中,您需要先启用 EPEL 仓库,然后运行以下命令安装:
sudo yum install epel-release sudo yum install logrotate -
创建 logrotate 配置文件:
在
/etc/logrotate.d/目录下创建一个名为httpd的配置文件:sudo vi /etc/logrotate.d/httpd -
编辑配置文件:
在打开的配置文件中,添加以下内容:
/var/log/httpd/*.log { daily missingok rotate 7 compress notifempty create 640 root adm sharedscripts postrotate if /etc/init.d/httpd status > /dev/null ; then \ /etc/init.d/httpd reload > /dev/null; \ fi; endscript }这个配置表示:
- 每天切割日志文件(daily)
- 如果日志文件丢失,不要报错(missingok)
- 保留最近 7 天的日志文件(rotate 7)
- 压缩旧的日志文件(compress)
- 如果日志文件为空,不进行切割(notifempty)
- 创建新的日志文件,权限为 640,属主为 root,属组为 adm(create 640 root adm)
- 在切割日志文件之前,先执行 sharedscripts(sharedscripts)
- 切割完成后,重新加载 Apache 服务(postrotate)
-
测试配置:
运行以下命令测试 logrotate 配置是否正确:
sudo logrotate -d /etc/logrotate.d/httpd如果没有错误信息,说明配置正确。
-
手动执行日志切割:
运行以下命令手动执行日志切割:
sudo logrotate /etc/logrotate.d/httpd
现在,Apache 日志切割已经配置完成。logrotate 将根据配置文件中的设置自动切割日志文件。您还可以通过修改 /etc/logrotate.conf 文件来自定义 logrotate 的全局设置。