モジュールのインストール!
Apacheモジュールとは
本連載では、日常的にApache HTTPDサーバー(以下Apache)を使用されている方や、何度か業務で利用した経験がある方を対象に、いくつかのApacheモジュールを取り上げ解説します。Apacheは古くからモジュール構造を採用しており、機能の多くをモジュールで拡張します。本特集では、とりわけ認証系モジュールを取り上げます。
TCPポートをリスニングし、リクエストを受け付け、受け付けたリクエストを子プロセスやスレッドに割り当てるといったコア機能に対し、ユーザー認証、アクセス制限、HTTPSプロトコルの実装といった付加機能はモジュールによって実現されています。使用しているApacheに組み込まれているモジュール一覧は、httpdコマンドで見ることができます。
例えば、CentOS 5.2でhttpd-Mコマンドを実行します。openSUSEではhttpd2コマンド、Debian、Ubuntuではapache2コマンドというように、LinuxディストリビューションやUNIX系OSによって、コマンド名やパスは異なりますが、モジュール一覧を表示させることができます。このコマンドを実行すると、標準インストールされるApacheでも、デフォルトで多くのモジュールが組み込まれていることがわかるでしょう。
HTTPサーバーに求められる機能は、単純なWebサーバーの機能に限りません。圧縮転送や、認証機能、果てはProxyサーバーやファイルサーバーなど、多く機能が求められています。
日増しに肥大化するこうした要求に応じ、プログラム拡張を繰り返せば、ある要件では必要な機能も、別な要件では無駄になるなど、プログラムの肥大化を引き起こします。プログラムサイズが大きくなれば、起動にかかるコストや必要なメモリなどで、サーバーリソースが窮迫します。
とりわけApacheは、不特定多数のクライアントからの要求に応じる必要があり、多くの要求に応えるために、より多くのプロセスやスレッドを立ち上げます。プログラムサイズ数キロの違いが、こうしたプロセスの多重起動により、結果的に大きなリソースを必要とすることとなります。
そこで万人にとって必要最低限な機能だけをコアに据え、残りは選択可能なモジュール構造を採用することで、適材適所なApacheを使用することが可能となります。
静的モジュールとDSOモジュール
先ほど紹介した一覧表示のコマンドを実行すると、モジュール名の横に「static」と表示されるものと、「shared」と表示されるものの2種類のモジュールがあることがわかります。Apacheモジュールは、その組み込み方により静的(static)なものと動的(shared)なものに大別されます。
静的なものはApacheインストール時から組み込まれており、切り離すにはApacheの再インストールが必要になります。追加する場合も同様に再インストールを行う必要があります。
動的なものは、設定ファイルで簡単に有効/無効を選択することができます。モジュールの利点を生かし、Apacheの機能を拡張することも、不要なモジュールを切り離すことも、動的モジュールなら比較的簡単な操作で可能です。動的モジュールはその仕組みにDSO(Dynamic Shared Object)を使っているため、DSOモジュールとよばれることもあります。
なお静的モジュールは、本体とモジュールが一体で動作するため、モジュール組み込みにかかる負荷が低くなります。一方DSOモジュールは、読み込む際に発生するオーバーヘッドにより、静的なものに比べApacheの起動が遅くなります。また実行速度が若干低下します。少しでも高いパフォーマンスを求める用途には静的モジュールを使用するなど、条件に応じ静的モジュールとDSOモジュールを使い分けるようにします。
次は、静的モジュールとDSOモジュールのインストール方法について紹介しましょう。