在Ubuntu系統中,PHP日志輪轉策略通常是通過配置 logrotate 來實現的。logrotate 是一個系統工具,用于管理日志文件的輪轉、壓縮、刪除等操作,以避免日志文件過大導致系統存儲空間不足或性能下降。
安裝Logrotate:
確保你的系統上已經安裝了 logrotate。如果沒有安裝,可以使用以下命令進行安裝:
sudo apt-get install logrotate # Debian/Ubuntu
sudo yum install logrotate # CentOS/RHEL
創建或編輯Logrotate配置文件:
通常,logrotate 的配置文件位于 /etc/logrotate.d/ 目錄下。你可以創建一個新的配置文件或者編輯現有的配置文件。例如,創建一個新的配置文件 /etc/logrotate.d/php-app:
sudo touch /etc/logrotate.d/php-app
sudo nano /etc/logrotate.d/php-app
配置Logrotate規則:
在 php-app 文件中添加以下內容:
/path/to/your/php/app/logs/*.log {
daily rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/php-fpm/php-fpm.sock ]; then
kill -USR2 $(cat /var/run/php-fpm/php-fpm.pid)
fi
endscript
}
配置項解釋:
/path/to/your/php/app/logs/*.log:指定需要輪轉的日志文件路徑。daily:每天輪轉一次日志文件。rotate 7:保留最近7天的日志文件。compress:壓縮舊的日志文件。delaycompress:不立即壓縮日志文件,而是在下一次輪轉時壓縮。missingok:如果日志文件不存在,不會產生錯誤。notifempty:只有日志文件不為空時才進行輪轉。create 0640 www-data adm:創建新的日志文件,權限為 0640,屬主為 www-data,屬組為 adm。sharedscripts:如果多個日志文件使用相同的配置,只執行一次 postrotate 腳本。postrotate:在日志文件輪轉后執行的腳本。這里假設你使用的是 PHP-FPM,通過發送 USR2 信號通知 PHP-FPM 重新打開日志文件。測試配置:
在保存并退出編輯器后,測試 logrotate 配置是否正確:
sudo logrotate -d /etc/logrotate.d/php-app
如果沒有錯誤信息,說明配置文件沒有問題。
啟用自動輪轉:
確保 logrotate 服務在系統啟動時自動運行:
sudo systemctl enable logrotate
sudo systemctl start logrotate
現在,你的 PHP 應用日志應該會自動輪轉,并且每天保留最近 7 天的日志文件。你可以根據需要調整配置項以滿足你的具體需求。
通過以上步驟,你可以在 Ubuntu 系統中配置 PHP 日志輪轉,以確保日志文件的管理既高效又安全。