Apacheが出力するログのローテーション設定を説明します。
前提条件
- 作業は、root権限を持つユーザで実施します。
- RHEL 7 / RHEL 8 / CentOS 7 /CentOS 8で手順は共通です。
- OSおよびApacheは、以下のバージョンで検証しています。
# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
# uname -r
4.18.0-80.el8.x86_64
# httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Oct 7 2019 21:42:02
設定ファイルのバックアップ
以下のコマンドを実行し、変更前の設定ファイルをバックアップします。
# cp /etc/httpd/conf/httpd.conf{,.`date +"%Y%m%d"`}
設定手順
viなどのテキストエディタで、logrotateのApache用設定ファイルを開きます。
# vi /etc/logrotate.d/httpd
ローテーション設定
以下の3つのパラメータを追加します。rotate 30
は、要件に応じて数字を変更してください。過去ログを圧縮したくない場合は、compress
の設定は不要です。
daily
← ローテーション周期をデフォルトの週次から日次に変更rotate 30
← ローテーション後の過去ログを30世代保持するcompress
← ローテーション後のログを圧縮する(delaycompressが既に設定されているので2世代目以降が圧縮対象)
変更箇所は、以下の通りです。
/var/log/httpd/*log {
(略)
↓
/var/log/httpd/*log {
daily
rotate 30
compress
(略)
設定内容の確認
以下のコマンドを実行し、設定ファイルの文法に問題がないか確認します。文法が正しければ、何も表示されません。エラーが表示される場合は、メッセージに従ってファイルを修正します。
# logrotate -d /etc/logrotate.d/httpd 2>&1 | grep 'error:'
設定の反映
Apacheのログをローテーションしているlogrotateは、cronにより定期的に実行されます。その際に設定を都度読み込むため、手動の設定反映は不要です。