Apache2.4に移行してみた

  • 投稿日:
  • by
  • カテゴリ:
  • ハッシュタグ:

Apache2.2系のメンテナンス終了が今年の6月30日になるかも?という記事を書きましたが、ギリギリ間に合いました。
nginxはインストールしてあるものの、やっぱり自宅サーバーを立ち上げて以来15年以上連れ添った Apacheから離れる勇気はありませんでした。

参考にしたのは『Apache 2.2から2.4に移行 – admin note』です。
とはいえ、やはりすんなりとはいきませんでした。
まずウチでは Apache2.2-worker-mpmが入っていたので、portmasterによるアップグレードインストールは

root@www:~ # portmaster -o www/apache24 www/apache22-worker-mpm

となります。

次に Apache2.2の設定ファイル( httpd.confおよび extraディレクトリの中)を 2.4にコピーするのはやめたほうがいいです。 面倒でも 2.2の設定ファイルを見ながら、2.4の設定ファイルに反映するようにしましょう。

あと 2.4の httpd.confでは、モジュールのロードは最小限しか有効になってません。
自分は以下のモジュールのコメントアウト(行頭の#)を外しました。

mod_file_cache.so
mod_cache.so
mod_cache_disk.so
mod_cache_socache.so
mod_socache_shmcb.so
mod_socache_dbm.so
mod_socache_memcache.so
mod_include.so
mod_mime_magic.so
mod_ssl.so
mod_status.so
mod_info.so
mod_cgid.so (mpm_event_moduleまたはmpm_worker_moduleを使う場合)
mod_cgi.so (mpm_prefork_moduleを使う場合)
mod_vhost_alias.so
mod_rewrite.so

apache-2.4.1をソースからインストール及びベンチマーク|FreeBSD|@OMAKASE

Multi Processing Moduleという名称からも分かるように、mpm とは apache の並列処理を行うmoduleです。
apache-2.4.1 の mpm には、マルチプロセスの prefork と、マルチスレッドの worker と、今回追加されたマルチスレッド+非同期の event があります。
追加された event_mpm は一部非同期型のIO処理をしていて、nginx ライクなアーキテクチャとなっている。

FreeBSDのportsから入れた Apache2.4は preforkが有効になっています。
マルチコアの場合は、マルチスレッドよりもマルチプロセスの方が処理速度が速いのかしらん?
とりあえず preforkのまま使ってます。

それから、2.4系といえばアクセス許可。

【apache】2.4系はアクセス許可の設定の書き方が違うので注意 at softelメモ

アクセス許可の仕方が変わっていた。下のように書き換えたら上手くいきました。

他には

apache2.confにNameVirtualHostを書いたらNameVirtualHost has no effect and will be removed in the next releaseと言われました - Qiita

次のリリースでなくなるよって言われました。
どうやら今度からNameVirtualHostは書かなくても、VirtualHostが動くみたいです。
NameVirtualHostは消してもOK!!

など。

とりあえずはなんとか動いているようです。 これであと5年は大丈夫かな?
HTTP/2対応の準備も整ったので、ヒマを見つけてやっていこうと思います。