在 Ubuntu 系統中,使用 PHP-FPM 時,可以通過配置 logrotate 工具來實現日志輪轉。以下是配置步驟:
確保 logrotate 已經安裝:
在終端中運行以下命令來檢查 logrotate 是否已經安裝:
logrotate --version
如果沒有安裝,請運行以下命令來安裝:
sudo apt-get update
sudo apt-get install logrotate
創建 logrotate 配置文件:
在 /etc/logrotate.d/
目錄下創建一個新的配置文件,例如 php-fpm.conf
:
sudo nano /etc/logrotate.d/php-fpm
編輯配置文件:
在打開的配置文件中,添加以下內容:
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /run/php/php7.4-fpm.pid ]; then
sudo kill -USR2 `cat /run/php/php7.4-fpm.pid`
fi
endscript
}
請注意,你需要根據你的 PHP-FPM 版本和安裝路徑來修改上述配置。例如,如果你使用的是 PHP 7.2,那么你需要將 /run/php/php7.4-fpm.pid
替換為 /run/php/php7.2-fpm.pid
。
配置說明:
daily
: 每天輪轉日志。missingok
: 如果日志文件不存在,不會產生錯誤。rotate 7
: 保留 7 個輪轉日志。compress
: 壓縮輪轉后的日志文件。notifempty
: 如果日志文件為空,不進行輪轉。create 0640 www-data adm
: 創建新的日志文件,權限為 0640,屬主為 www-data,屬組為 adm。sharedscripts
: 如果有多個日志文件,只執行一次 postrotate 腳本。postrotate
和 endscript
之間的腳本會在輪轉日志后執行。這里我們發送 USR2 信號給 PHP-FPM 主進程,通知它重新打開日志文件。測試配置:
保存并關閉配置文件后,運行以下命令來測試 logrotate 配置是否正確:
sudo logrotate -f /etc/logrotate.d/php-fpm
如果沒有錯誤信息,說明配置正確。
設置定時任務:
logrotate 默認每天凌晨執行一次輪轉任務。你可以編輯 /etc/cron.daily/logrotate
文件,修改其中的配置來調整輪轉任務的時間。
現在,你已經成功配置了 Ubuntu 下 PHP-FPM 的日志輪轉。