ついでにapacheもログローテーション

Zopeのログ・ローテーションで気になって調べてみたらapacheも全くローテーションされておらずとんでもない(というほどでもないが)サイズになっていた。というわけで、こちらもnewsyslog.confに設定追加。
/var/log/httpd-access.log 644 7 * @T00 J /var/run/httpd.pid /var/log/httpd-error.log
644 7 * @T00 J /var/run/httpd.pid
こちらは@T00の設定で毎日0時にログをロ…

Zopeのログ・ローテーションで気になって調べてみたらapacheも全くローテーションされておらずとんでもない(というほどでもないが)サイズになっていた。というわけで、こちらもnewsyslog.confに設定追加。

/var/log/httpd-access.log 644 7 * @T00 J /var/run/httpd.pid
/var/log/httpd-error.log 644 7 * @T00 J /var/run/httpd.pid

こちらは@T00の設定で毎日0時にログをローテーションして1週間保管する設定に。FreeBSDのportsからインストールしたapacheは/var/run/httpd.pidにデフォルトでpidを書き出すので、設定変更していたら注意すること。

ログのローテーションがちゃんと出来てるかは後日ちゃんとチェックしないといけないか。

ついでに、httpd-error.logを見たら、cgiが呼び出されるたびにjcode.plが妙なエラーを吐いていることに気が付く。たぶんjcode.plが古いせいだろう。長年メンテナンスしてないからなあ。というわけで、japanese/jcode.plをportsからインストールし、cgiに記入してあった

require ‘./jcode.pl’;

require ‘jcode.pl’;

に変更してcgiと同ディレクトリに置いてあった古いjcode.plからportsからインストールされた新しいjcode.plを参照する様に変更したところ、エラーを吐き出さなくなった。めでたしめでたし。

ついでに、cgiにおかしなアクセスをするスパマーをはじく為に書いている拒否ディレクティブが長くなってきてうっとうしくなってきたので、cgi-binセクションを別ファイルに切り分けることに。portsからインストールされるapache22は/usr/local/etc/apache22/Includes内においた*.confファイルを最期に一気に全て読み込むようになっているので、cgi-binセクションを別ファイルにしてcgi-bin.confとしてこのディレクトリに置いて、本体のhttpd.confからセクションを丸ごとコメントアウト。これで、cgi-binに追加の拒否ディレクティブを書き足すのが楽になるよ。

Zopeのログローテーション

サーバーのディスクがぱんぱんになっていたので何が原因かと調べていたら、どうも稼働時からZopeのログがまったくローテーションされていないのでログが膨大なサイズに膨れ上がっていた。というわけで、ちょこちょこ調べてログがローテーションされるように設定。
具体的にはFreeBSDにはnewsyslogというログをローテーションするシステムがあるので、その設定ファイルである/etc/newsyslog.confに記述を追加。
/usr/local/www/Zope29/log/Z2.log www:w…

サーバーのディスクがぱんぱんになっていたので何が原因かと調べていたら、どうも稼働時からZopeのログがまったくローテーションされていないのでログが膨大なサイズに膨れ上がっていた。というわけで、ちょこちょこ調べてログがローテーションされるように設定。

具体的にはFreeBSDにはnewsyslogというログをローテーションするシステムがあるので、その設定ファイルである/etc/newsyslog.confに記述を追加。

/usr/local/www/Zope29/log/Z2.log www:wheel 644 5 5000 * J /usr/local/www/Zope29/var/Z2.pid
/usr/local/www/Zope29/log/event.log www:wheel 644 5 5000 * J /usr/local/www/Zope29/var/Z2.pid

これでZopeのログが5MBに達するごとにローテーションしてからZopeのプロセスにログの再始動を促してくれる。ミソはZopeが書き出すpidファイルを参照してnewsyslogにどのプロセスに再始動のシグナルを送ればよいかを教えてあげること。デフォルトではSIGUSR1を送るらしい。SIGUSR1によるログの再始動に対応していないプロセスの場合はSIGHUP1を送る様に設定の最期にシグナルのナンバーを記述すればいいのだろうか?

rootでnewsyslog -Fで強制的にログをローテーションするテストが出来るので動作確認。

でも、最大の圧迫の原因は何年もデータベースのパックをしてなかったためにデータベースがロールバック用のアンドゥデータでぱんぱんに膨れ上がっていたためでした。こっちも自動で定期パックするようにした方がいいのかもしれないけど、あんまり高頻度にパックするとたまにデータベースが壊れるらしいので、当面は手動のままでいこう。毎日のdfの出力結果を注視しておかないと。