FreeBSD - メンテナンス・トラブルシュート - newsyslog・crontab - Apache
1. 概要 「apache」のログローテーションについて考えてみます。 「apache」のログは、以下の特徴があります。 ・大量である ・種類が多い ・アクセスの解析をしたいので一定の期間はのこしておきたい ・プロセスを再起動しないと同じログファイルに出力し続ける ひとつひとつ解説しますと。 「大量である」というのは、まあここのサイトのように日にせいぜい数万しかアクセスがなければ大したことはないのですが、日に数百万のアクセスがあると大変な量になります。 ひとつのサーバ内の相対値では他のログに比べると格段に多くなります。 「種類が多い」 わたしの設定の場合、以下の種類のログを出しています。出さなくていいものもありますが・・・。 ・通常のアクセスログ ・エラーログ ・SSL へのリクエストのログ ・PHP のログ 種類が多いので、わたしは出力先のディレクトリを。 /var/log でなく、ひとつ階層を下げて下記のディレクトリに保存するようにしています。 /var/log/www 「アクセスの解析をしたいので一定の期間はのこしておきたい」ので、わたしは、1ヶ月単位で3年間残すようにしています。 「プロセスを再起動しないと同じログファイルに出力し続ける」ちゅうのは。 別のページにも書いていますが、「apache」は、ログファイルがローテーションされても最初につかんだファイルにずっとログを書き続けます。 なので、シグナルを送って、「apache」を再起動させる必要がありますので、その指定をしなければなりません。 2. 記述例 前項の条件をふまえて /usr/local/etc/newsyslog.conf.d/apache.conf を作成して、下記のように記述しています。 # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/www/*.log www:www 600 36 * $M1D0 BG /var/run/httpd.pid 月1回、36ヶ月分。 ワイルドカードを使用してまとめ、「apache」のプロセスを再起動しています。
/var/log
/var/log/www
/usr/local/etc/newsyslog.conf.d/apache.conf
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/www/*.log www:www 600 36 * $M1D0 BG /var/run/httpd.pid