ソースコンパイルのApacheでアクセスログをローテートさせたい

» 2001年08月22日 00時00分 公開
[木田佳克ITmedia]

この記事は会員限定です。会員登録すると全てご覧いただけます。

 ソースからのコンパイルを行ったApacheでは、インストール(make install)後でもlogrotateのスケジュールに含まれない。ここではlogrotateに加える方法を解説しよう。

 Apache単体でも「Apacheのログファイルを定期的に分割させたい〜rotatelogs編〜」で解説したように、「rotatelogs」と呼ばれるスクリプトが用意されている。しかし、「ログローテートツール「logrotate」を使いこなしたい」で紹介しているように、logrotateツールで一括管理したほうが、管理上も分かりやすいだろう。

 手順は簡単であり、次のようにapacheファイルを作成すればよい。ここでは毎月ローテートを実行し、50世代のバックアップ保存を行うという設定を挙げている。

# vi /etc/logrotate.d/apache
/usr/local/apache/logs/access_log {
rotate 50
monthly
postrotate
/usr/bin/kill -HUP `/bin/cat /usr/local/apache/logs/httpd.pid`
endscript
}
/usr/local/apache/logs/error_log {
rotate 50
monthly
postrotate
/usr/bin/kill -HUP `/bin/cat /usr/local/apache/logs/httpd.pid`
endscript
}

 念のため、killでプロセス再起動ができるかを可能しておくとよいだろう。次のように、番号が一致しているかを調べればよい。

# cat /usr/local/apache/logs/httpd.pid
513
# ps ax|grep httpd
 513 ?  S  0:00 /usr/local/apache/bin/httpd
 515 ?  S  0:03 /usr/local/apache/bin/httpd
 516 ?  S  0:04 /usr/local/apache/bin/httpd
〜以下略〜

 表示されるhttpdプロセスで、いちばん若い番号が一致していればよい。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ