拡張モジュール組み込みはDSOで動的にできる

 Table1に示したもので組み込み状態が「○」となっているのが、Apacheを標準構成でコンパイルした際に利用されるモジュールだ。標準状態では、Fig.1に示すようにApacheが動作する。

Fig.1■標準動作状態のモジュール

Apache本体
コア(http_core)
モジュール群
 mod_alias   mod_access    mod_auth
 mod_actions  mod_setenvif   mod_env
 mod_include  mod_dir      mod_mime
 mod_autoindex mod_log_config  mod_status
 mod_userdir  mod_nagotiation  mod_cgi

 コンパイル時には、幾つかの設定をすることでTable1に示したものの中で「×」となっているモジュールを組み込んだり、Apacheには標準で含まれないモジュールを組み込むことが可能だ。

 Fig.1は、コンパイル時にモジュールを組み込んだものだが、Apacheではもう1つのモジュール組み込み方法として「DSO(Dynamic Shared Object)」を使ったモジュールの動的な組み込みがサポートされている。

 DSOを使った動的な(設定ファイルによる編集で制御)組み込みを提供するのは、mod_soモジュールだ。mod_soモジュールを組み込み、DSOを使って動的にモジュールを組み込む場合、その構成は、Fig.2のようになる。

Fig.2■DSOを使ったモジュールの組み込み

Apache本体
コア(http_core)
モジュール群
 任意のモジュール
 mod_soモジュール
必要に応じて動的に組み込む
DSOモジュール群
 任意のモジュール

 Fig.2のようにDSOを利用する場合には、mod_soモジュールが必要に応じて組み込まれるようにコンパイルされたモジュールを読み込む。どのモジュールをDSOとして組み込むかは、設定ファイルで変更が可能だ。

 Fig.1のようにコンパイル時にモジュールを組み込んだ場合には、後からモジュール(機能)を取り外すことはできない。しかし、Fig.2のようにDSOとしてモジュールをコンパイルした場合には、Apacheの設定ファイル(httpd.conf)を編集するだけで自由にモジュール(機能)の選択ができるのだ。

 よってApacheのさまざまなモジュールを試してみたいということであれば、モジュールをDSOとしてコンパイルしておくのがよいだろう。Red Hat LinuxやTurbolinuxでインストールされるRPMパッケージのApacheでは、標準でDSOによる組み込みになっている。

 しかし、DSOを使ってモジュールを組み込む方法は、コンパイル時にApacheに組み込む手段に比べパフォーマンスが落ちる。なぜならば、DSOによるモジュールは、呼び出す際にmod_soモジュールを経由する必要があるためだ。よって頻繁に使うモジュールについては、コンパイル時に組み込んでしまったほうがよい。

 なお、すべてのモジュールがDSOに対応しているわけではない。Apacheに付属しているモジュールは(mod_soモジュール自身を除き)、すべてDSOに対応しているものの、広くオープンソースで配布されるモジュールによってはDSOに対応せず、コンパイル時にのみ組み込めるものもある。


上記のFig.2を見ると明らかなように、DSOを使うためにはmod_soモジュールをApacheに組み込んでおかなければならない。mod_soモジュール自身はDSOとして組み込むことはできない。

 Apacheのコンパイル時には、どのモジュールをコンパイル時に組み込んで、どのモジュールをDSOとして利用できるようにコンパイルするのかを決めなければならない。つまりコンパイルする際には、あらかじめApacheをどのような構成にするのかを考えておく必要がある。

 そうとはいえ、最初のうちはどのモジュールがどのような役割をするのかが分かりにくいのも事実。そこで、最初のステップとしておすすめなのは、とりあえず全部をDSOとして組み込んでしまうのがよいだろう。最終的な運用時には、どのモジュールを使うのかが決まった時点でApacheをコンパイルし直し、以後使用するであろうパフォーマンスを重視するモジュールだけをApache自身に組み込んでしまうのがよい。


詳しくは「RPMパッケージからインストールする」にて説明するが、RPMパッケージで提供されるApacheでは、すべてのモジュールをDSOとして組み込むようにコンパイルされている。

PREV 3/14 NEXT