優化 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 日志存儲,確保系統的穩定性和性能。