モジュールのインストール!

Apacheモジュールとは 本連載では、日常的にApache HTTPDサーバー(以下Apache)を使用されている方や、何度か業務で利用した経験がある方を対象に、いくつかのApacheモジュールを取り上げ解説します。Apacheは古くからモジュール構造を採用しており、機能の多くをモジュールで拡張し

Shin.鶴長

2008年8月1日 20:00

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モジュールのインストール方法について紹介しましょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30