RPMパッケージで指定されるインストールモデル詳細

 List 3に示すもののオプションのほとんどは、Fig.4に示したRedHatレイアウトでインストールするための指定だ。ここではまず、次の3点に注目したい。

1. モジュール

 オプションで「--enable-module=all」、「--enable-shared=max」が指定されているため、すべてのモジュールがApache本体に組み込まれるのではなく、DSOとして組み込めるようコンパイルされていることが分かる。

 実際にRPMパッケージでインストールされたhttpdコマンドに"-l"オプションを指定して実行してみると、コアモジュール(http_core)とmod_soモジュール以外は組み込まれていないことが確認できる。

$ /usr/sbin/httpd -l
Compiled-in modules:
http_core.c
mod_so.c
suexec: enabled; valid wrapper /usr/sbin/suexec

 また、「--enable-module=auth_dbm」と指定されているため、標準では構成されないmod_auth_dbmも、DSOとして組み込めるようにコンパイルされている。

2. EAPIの有効化

 「--enable-rule=EAPI」指定が次のポイントだ。これはEAPIと呼ばれるルールであり、ソースファイルでのConfigurationファイルには、EAPIというルールは存在しない。

 SRPMパッケージには、EAPIというルールをConfigurationファイルに追加するためのパッチが含まれているのだ。そのパッチが適用されることによりEAPIルールが追加されている。このことから、ソースコンパイルによるApacheをRPMパッケージのレイアウト構成に上書きするには注意が必要なことが分かる。

 EAPIとはApacheを拡張するためのAPIであり、共有メモリによるデータの共有を可能とするものだ。mod_sslモジュールに含まれ、パッチの形式で提供される。


mod_sslとは、SSLによる暗号化通信を提供するモジュールだ。http://www.modssl.org/からダウンロードすることができる。

 詳細は、mod_sslモジュールの解説時に触れるが、このモジュールの動作にはEAPIが必須である。Apacheのソースからコンパイルする場合にはEAPIが含まれないため、mod_sslモジュールを動作させるにはmod_sslモジュールをコンパイルし、その際にApacheにパッチが当てられ、尚かつApacheを再コンパイルするという手順になるのだ。このような手間をRPMパッケージでは省いてくれる。

 RPMパッケージでは、EAPIがすでに適用されているため、後でmod_sslモジュールを使う場合でも問題が起きないよう、配慮されているわけだ。

 RPMパッケージとしてインストールしたApacheを、Apacheのソースコードからインストールして上書きしてしまうと、mod_sslなどのモジュールが動作しなくなってしまうことを意味する。

3. suExec機能の有効化

 3つ目のポイントは「--enable-suexec」の指定だ。これはsuExec機能を意味し、CGIを実行する場合にApache実行のユーザー(Red Hat Linuxでは「Apache」)とは異なる別のユーザーとグループ権限で動作させ、セキュリティを高める機能だ。このsuExec機能については設定が複雑なため、別のパートで詳細に説明することにしよう。

 このように、RPMパッケージではいろいろな点をカスタマイズされた状態で動作するよう配慮されているのだ。 これらの3点が気になるようであれば、SRPMパッケージを修正してSRPMパッケージからカスタマイズしたRPMパッケージを作るか、RPMパッケージからインストールするのをやめて、Apacheをソースからインストールすることになる。しかし、これら3点は多くの場合問題となることはないだろう。最も気になる点はモジュールの組み込みだが、DSOが有効になっているため後からいくらでもモジュールの変更が可能だ。

 ちなみに、RPMパッケージには、Apache本体以外に、サーバーの起動時にApacheを起動するためのスクリプトファイルが格納されている。このスクリプトは、/etc/rc.d/init.d/ディレクトリ下にhttpdファイルとして用意される。そのため、ntsysvコマンドやchkconfigコマンドなどを使って、サーバーが起動する際にApacheを自動的に起動するか否かも設定が可能だ。自動実行スクリプトについては、別パート「起動と停止」で再び触れる予定だ。

 このような点を踏まえた上でRPMパッケージの./configure指定を要約してみると、次のようにカスタマイズされていることが分かる。

List4■Red Hat Linux 7.2/7.3のRPMパッケージconfigureスクリプトオプション指定

./configure \
--prefix = /etc/httpd
--exec-prefix = /etc/httpd
--bindir = /usr/bin
--sbindir = /usr/sbin
--mandir = /usr/share/man
--sysconfdir = /etc/httpd/conf
--includedir = /usr/include/apache
--libexecdir = /usr/lib/apache
--datadir = /var/www
--iconsdir = /var/www/icons
--htdocsdir = /var/www/html
--manualdir = /var/www/html/manual
--cgidir = /var/www/cgi-bin
--localstatedir = /var
--runtimedir = /var/run
--logfiledir = /var/log/httpd
--proxycachedir = /var/log/cache/httpd

 ソースコンパイルでの例で触れた「--with-layout=RedHat」と異なる点は、manの位置とオンラインマニュアル(ApacheのHTMLのヘルプ)の位置だけである(--mandirと--manualdirが異なる)。

[大澤文孝,ITmedia]

PREV 14/14