Apache2.2から2.4に更新した際に行った事

先日、このWebサーバーのPHPを5.3から5.6にアップデートした際に、必要に迫られApacheを2.2から2.4に更新しました。

すると、設定やアクセス制御の記述方法が変わっていて、当初、上手く動作しませんでした。

今後また同様の問題に対応する機会があるやもしれません。行った対処を書き残しておく事にします。

アクセス制御に関する記述を変更

Apacheのエラーログに下記のようなログが出力されていました。

以前、このサイトで利用しているWordpressのxmlrpc.phpに多数のアクセスを行い、負荷を掛けてDDoS攻撃の踏み台にしようとした輩が現れた事がありました。その際、xmlrpc.phpに対するアクセスを制御する為、.htaccessに下記のような記述を追加しました。

このうち、Jetpack by WordPress.comプラグインを利用する為、Automatic社のIPアドレスだけ許可を行うようにしていました。

調べると、この記述方法は2.4では利用できなくなったとの事で、Automatic社がxmlrpc.phpにアクセスできずにログが出力されていたようです。

下記のように書き換えました。

MPMを変更

Apacheのエラーログに下記のようなログが出力されていました。

2.2ではprefork MPMを用いていましたが、2.4ではprefork MPMが利用できなくなっていました(組み込めば利用できるようですが、ソースコードからコンパイルしないといけないような記述を目にしたのでこれは利用しない事にしました)。代わりにevent MPMがデフォルトで利用できるようになっているので、それを利用するよう設定を変更しました。

mpm設定用ファイルを作成し、それに設定を記述しました。

このサイトはAmazon Web Services EC2のt2microで運営しています。非力なインスタンスなので、この設定を行わないとメモリを使い果たしてインスタンスがフリーズしてしまいます。その為、実行するスレッドやプロセス数を最低限度に留めています。

mod_sslをインストール

Apacheのエラーログに下記のようなログが出力されていました。

Apache2.4用のmod_sslがインストールされていない為、このログが出力されていたようです。

mod_sslをインストールしました。

Proxyを利用しない

Apahceのエラーログに下記のようなログが出力されていました。

調べたところ、これは/etc/httpd/conf.modules.d/00-proxy.confに記述されたモジュールがロードされた際に出力されるそうです。

このWebサイトではProxyを利用しないので、00-proxy.confファイルを00-proxy.conf.unusedとリネームし、モジュールをロードしないよう設定しました。

最後に

2.2から思ったよりも変更があったり、設定方法が変わっていて戸惑いました。

これから少しずつ2.4の機能を学んで、少しずつ最適化していきたいと思います。