少しハマッたのでメモしておきます。
サーバのリソースモニタリングツールを使えば、CPU/メモリ使用率やロードアベレージ、Netstatなどのたくさんの項目をモニタリングできます。もちろんWebサーバのステータスもです。ところが僕のサイトで、ある日から急にApacheのステータスが取れなくなっていました。。ま、真っ白。。
(Muninを使用、他にもCactiやGangriaなどいくつかツールはあります)
WebサーバのステータスはApache2(mod_status)だと /server-status を見ます。ここにアクセスできなくなったのはどうやらWordPress本体をアップデートしたときだったようで、原因はWordPressによる .htaccess 強制書き換えです。その書き換え方なんですが、差分チェックなどもなく強制的に上書きする仕様のようです。どういうことかというと、まず、WordPressによって .htaccess に書き込まれるディレクティブを以下に示します。
1 2 3 4 5 6 7 8 9 10 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
僕はここに自分でいくつかルールを追記していました。その中には /server-status のルールもありました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteRule ^server-status$ - [L] # server-status へのアクセスはrewriteしない RewriteRule ^labs/ - [L] RewriteRule ^mod/ - [L ## あといろいろ、省略 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
で、WordPress本体をアップデートしたときに追記した部分が全部なくなっていたようです。。とりあえず server-status の為のルールをもう一度追記すると、Apacheのステータスが取れてMuninのグラフもきちんと表示されるようになりました。たぶん # BEGIN WordPress
から # END WordPress
の中に自分でルールを書いちゃうとマズイみたいです。そういうのは .htaccess じゃなくて httpd.conf の方に書けということですね。
One thought