优化 CentOS 上的 PHP 日志存储可以通过以下几种方法来实现:
日志轮转可以防止日志文件过大,确保日志文件不会占用过多磁盘空间。CentOS 默认使用 logrotate
工具来管理日志轮转。
logrotate
编辑 /etc/logrotate.d/php-fpm
或 /etc/logrotate.d/apache2
(取决于你使用的 Web 服务器)文件,添加或修改以下配置:
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}
daily
: 每天轮转一次日志。missingok
: 如果日志文件丢失,不会报错。rotate 7
: 保留 7 天的日志文件。compress
: 压缩旧日志文件。notifempty
: 如果日志文件为空,不进行轮转。create 640 root adm
: 创建新日志文件时的权限和所有者。如果你有多个 PHP 应用程序或服务,可以为每个应用程序或服务配置单独的日志文件。
编辑 /etc/php-fpm.d/www.conf
文件,找到 access.log
和 error.log
的配置:
access.log = /var/log/php-fpm/www-access.log
error.log = /var/log/php-fpm/www-error.log
然后按照上述 logrotate
配置进行轮转。
根据需要调整 PHP 的日志级别,减少不必要的日志记录。
编辑 php.ini
文件,找到 error_reporting
和 display_errors
配置:
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
考虑使用外部日志服务(如 ELK Stack、Graylog 或 Splunk)来集中管理和分析日志。这样可以减轻本地服务器的负担,并提供更强大的日志分析功能。
定期手动清理旧的日志文件,确保磁盘空间不会被耗尽。
find /var/log/php-fpm -type f -name "*.log" -mtime +7 -exec rm {} \;
设置磁盘空间监控和警报,确保在磁盘空间不足时及时采取措施。
df
和 cron
监控磁盘空间创建一个脚本 /usr/local/bin/monitor_disk.sh
:
#!/bin/bash
THRESHOLD=90
DISK_USAGE=$(df -h / | awk 'NR==2{print $5}' | cut -d'%' -f1)
if [ $DISK_USAGE -ge $THRESHOLD ]; then
echo "Disk space usage is above $THRESHOLD%. Please take action."
# 发送警报邮件或其他通知
fi
赋予脚本执行权限:
chmod +x /usr/local/bin/monitor_disk.sh
将脚本添加到 cron
任务中,每小时运行一次:
0 * * * * /usr/local/bin/monitor_disk.sh >> /var/log/disk_monitor.log 2>&1
通过以上方法,你可以有效地优化 CentOS 上的 PHP 日志存储,确保系统的稳定性和性能。