Apache HTTPサーバはモジュールを取り込むことで機能の拡張ができるように設計されています。 モジュールを組み込む方法には2種類あり、本体のコンパイル時に組み込む方法と、実行時に必要なモジュールをロードさせる方法があります。 後者ではDynamic Shared Object(DSO)という機能を用いて共有ライブラリの形にしておいたオブジェクトを設定ファイルに従って読み込みます。 この仕組みはmod_soというモジュールで実現されるのでmod_soは本体のコンパイル時に静的に組み込んでおく必要があります。
静的に組み込めば少しだけ実行速度が速くなるようですが、普通に使う分にはほとんどメリットはないようです。
httpdをコンパイルする時にconfigureオプションで指定します。例えばdavモジュールを組み込む場合にはオプションに--enable-davを付けます。
$ ./configure --enable-dav
例えばmod_rewriteモジュールを組み込むとします。 mod_rewriteのソースはhttpdのソースファイルに含まれています。
$ httpd-2.2.16/modules/mappers/mod_rewrite.cモジュールのコンパイルにはapxsを使います。
$ apxs -c mod_rewrite.c $ apxs -i -a -n rewrite mod_rewrite.lahttpd.confには自動的に
LoadModule rewrite_module modules/mod_rewrite.soが追記され、モジュールとなる共有ライブラリもapacheのディレクトリのmodules以下にインストールされます。
モジュールを有効にするにはhttpdを再起動します。
# apachectl restart
動的、静的を問わず組み込まれているモジュールを確認するには httpd にオプション-Mを付けて実行します。
$ httpd -M core_module (static) authn_file_module (static) authn_default_module (static) (中略) alias_module (static) so_module (static) php5_module (shared) rewrite_module (shared) Syntax OK静的なモジュールには (static)、DSOモジュールには(shared) が付きます。
