logrotateのインストール
apacheのログの肥大化を防ぐlogrotateというローテーションシステムを導入します。
# pkg search logrotate
logrotate-3.13.0_2 Daemon to rotate, compress, remove, and mail system log files
# pkg install -y logrotate-3.13.0_2
logrotateインストール
logrotate.confの編集
# cd /usr/local/etc
# cp logrotate.conf.sample logrotate.conf
logrotateサンプルファイルを設定ファイルとして使います。
# ee logrotate.conf
/var/log/lastlog {
monthly
rotate 1
}
#/var/log/lastlog {
# monthly
# rotate 1
#}
#でコメントアウト
設定ファイルの作成
logrotate.confの中に include /usr/local/etc/logrotate.dと書かれています。
logrotate.dというディレクトリから設定ファイルを読み込むようになっているので、このディレクトリと設定ファイルを作成します。
# mkdir /usr/local/etc/logrotate.d
# ee /usr/local/etc/logrotate.d/apache24
/var/log/httpd-error.log
/var/log/httpd-access.log {
daily
rotate 4
create
nocompress
missingok
sharedscripts
postrotate
/usr/local/etc/rc.d/apache24 graceful
endscript
}
create | ローテーション後に空のログファイルを作成 |
nocompress | ローテーションしたログを圧縮しない |
missingok | ログファイルがなくてもエラーを出さずに実行 |
sharedscriots | 複数指定したログファイルに対してpostrotateやprerotateで指定したコマンドを実行 |
postrptate~endscript | 間に指定したコマンドをローテーション後に実行 |
cronに登録
# ee /etc/crontab
35 0 * * * /usr/local/sbin/logrotate -v /usr/local/etc/logrotate.conf > /dev/null 2>&1
毎日0時35分にログローテーション実行。
> /dev/null 2>&1はローテーション実行時の成功とエラーメッセージ両方のメールを無効化します。
logrotateでapacheが落ちる際の対策へ
2025.01.25追記
最近logrotate時にapacheが落ちるようになりました。
logrotateでapacheが落ちる際の対策へ