下がそのリスト例
各設定ファイルの中身(記述)
----------------- httpd -----------------
/var/log/httpd/access_log {
missingok → ログファイルが存在しない場合にエラーを出力しない
postrotate → endscriptとの間に書いたコマンドをローテーション後に実行
/usr/bin/killall -HUP httpd → apache再起動(reload的な再起動)
apacheをソースコンパイル・インストールでバージョンアップした場合
/usr/bin/killall -HUP httpd の記述ではログがローテーションしなかった
そこで、新しいhttpdのある場所に変更しました
/usr/bin/killall -HUP /usr/local/apache2/bin/httpd
この記述に直してログローテーションが出るようになりました
残りの「error_log」などについても同様に直す必要があります
endscript
}
/var/log/httpd/agent_log {
missingok
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/httpd/error_log {
missingok
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/httpd/referer_log {
missingok
postrotate
/usr/bin/killall -HUP httpd
endscript
}
----------------- httpd end---------------
apacheの再起動をpostrotateとendscriptの間にこのように記述する場合がある
/sbin/service httpd reload > /dev/null 2>/dev/null || true
はログの吐き出しを再始動するために、apacheを再起動する必要がある。
apacheの再起動には、restart、reload、graceful がある。
(ただ、reloadだとapacheの設定が間違っていてもスルーするので
stop&startの方がいいみたいだ。。。)
Apacheで設定ファイルを変更した後の再起動ですが、大きく分けると「restart」、「reload」、「graceful」があります。このオプションの違いですが、以前の職場では以下のようなルールでした。
- サービス影響が少ないかたちでの再起動は「graceful」を使う
- サービス影響をあまり気にしなくても良い再起動は「restart」を使う
- 設定ファイルの読み直しのみは「reload」を使う
gracefulを利用した場合は、以下のような処理でApacheが再起動します
- 子プロセスは、現在のリクエストが終了後に終了します
- 親プロセスは設定ファイルを読み直し、変更した設定が反映されます
- 子プロセスが徐々になくなるに従って、 新しい子プロセスが起動されます
実行中のリクエストの処理を中止させたくない場合には、「graceful」を使用します
※graceful 再起動時は、再起動前に構文チェックが行われます。 構文エラーがあればエラーが表示され、再起動は行われませんので、この方法での再起動はオススメです
syslogローテートの記述例下記は変更なしでOKでした----------------- syslogd -----------------
/var/log/messages {
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
/var/log/secure {
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
/var/log/maillog {
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
/var/log/spooler {
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
/var/log/boot.log {
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
----------------- syslogd end--------------
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。