如何限制EC2上php-fpm的access.log大小或配置logrotate?
限制PHP-FPM访问日志大小的方法
PHP-FPM本身没有内置的日志轮转或大小限制配置,我们可以用Linux系统默认的logrotate工具来解决这个问题,这是处理日志文件过大的标准方案。
步骤1:创建logrotate配置文件
在/etc/logrotate.d/目录下创建针对该日志的专属配置文件,比如命名为php-fpm-wordpress:
sudo nano /etc/logrotate.d/php-fpm-wordpress
写入以下配置内容:
/var/log/wordpress.access.log { # 可选规则:按时间轮转(每天一次),若要按大小轮转,替换为 size 100M(超过100M触发轮转) daily # 日志文件不存在时不抛出错误 missingok # 保留最近7份轮转后的日志文件 rotate 7 # 对旧日志进行压缩 compress # 延迟压缩,保留最新的一份旧日志不压缩(方便排查近期问题) delaycompress # 空文件不执行轮转操作 notifempty # 轮转后创建新日志文件,设置权限、属主和属组(根据实际环境调整,www-data是PHP-FPM常用运行用户) create 640 www-data adm # 轮转后通知PHP-FPM重新打开日志文件,避免继续写入旧文件的inode postrotate kill -USR1 $(cat /var/run/php-fpm.pid) endscript }
步骤2:验证并测试配置
先执行调试模式,检查配置是否存在语法错误:
sudo logrotate -d /etc/logrotate.d/php-fpm-wordpress输出无报错则说明配置有效。
强制执行一次轮转,验证实际效果:
sudo logrotate -f /etc/logrotate.d/php-fpm-wordpress执行后查看
/var/log/目录,会生成wordpress.access.log.1(开启压缩后后续会自动转为.gz格式),原日志文件会被重置为空。
步骤3:调整PHP-FPM PID文件路径(若需)
如果执行kill命令时报错,说明PID文件路径不正确。可以查看PHP-FPM主配置文件(比如/etc/php-fpm.conf)里的pid配置项,找到实际的PID文件路径,替换postrotate中的路径即可。例如:
kill -USR1 $(cat /var/run/php/php8.1-fpm.pid)
补充说明
- 系统默认的
logrotate会通过cron每日自动执行(对应脚本位于/etc/cron.daily/logrotate),配置完成后会自动按规则轮转日志。 - 可根据需求调整轮转频率(如
weekly每周、monthly每月)或保留日志的数量(修改rotate后的数字)。
内容的提问来源于stack exchange,提问作者Miles
相关产品推荐
相关产品推荐

