25.2.2. Apache HTTP Server 1.3 設定ファイルの 2.0 への移行
本セクションでは、Apache HTTP Server 2.0 で使用される Apache HTTP Server 1.3 設定ファイルの移行について詳しく説明します。
Red Hat Enterprise Linux 2.1 から Red Hat Enterprise Linux 5 にアップグレードする場合、Apache HTTP Server 2.0 パッケージの新しいストック設定ファイルは
/etc/httpd/conf/httpd.conf.rpmnew
としてインストールされ、元のバージョン 1.3 httpd.conf
は変更されない点に注意してください。新しい設定ファイルを使用するか、古い設定をベースとして移行するか、既存のファイルをベースとして使用したり、適切に変更したりしても、ファイルの一部が他の部分よりも変更され、通常は混合アプローチが最適です。バージョン 1.3 と 2.0 の両方のストック設定ファイルは、3 つのセクションに分かれています。
/etc/httpd/conf/httpd.conf
ファイルが、新しくインストールされたデフォルトのバージョンであり、元の設定ファイルのコピーを保存すると、以下の例のように diff コマンドを呼び出すのが最も簡単な方法です(root でログイン)。
diff -u httpd.conf.orig httpd.conf | less
このコマンドは、変更内容を強調表示します。元のファイルのコピーが利用できない場合は、以下の例のように rpm2cpio および cpio コマンドを使用して RPM パッケージから抽出します。
rpm2cpio apache-<version-number>.i386.rpm | cpio -i --make
上記のコマンドで、< version-number> を
apache
パッケージのバージョン番号に置き換えてください。
最後に、Apache HTTP Server に設定エラーをチェックするテストモードがあることを確認すると便利です。アクセスを使用するには、以下のコマンドを入力します。
apachectl configtest
25.2.2.1. グローバル環境設定
設定ファイルのグローバル環境セクションには、処理する同時要求の数や各種ファイルの場所など、Apache HTTP Server の全体的な操作に影響するディレクティブが含まれています。本セクションでは多くの変更が必要で、古い設定をその設定ファイルに移行する際に Apache HTTP Server 2.0 設定ファイルをベースとする必要があります。
25.2.2.1.1. インターフェイスおよびポートバインディング
BindAddress ディレクティブおよび Port ディレクティブは存在しなくなり、それらの機能はより柔軟な Listen ディレクティブで提供されるようになりました。
1.3 バージョン設定ファイルで Port 80 が設定されている場合は、2.0 設定ファイルで Listen 80 に変更します。Port が 80 以外 の値に設定されている場合は、ポート番号を ServerName ディレクティブの内容に追加します。
Apache HTTP Server 1.3 ディレクティブの例を以下に示します。
Port 123 ServerName www.example.com
この設定を Apache HTTP Server 2.0 に移行するには、以下の構造を使用します。
Listen
123 ServerName www.example.com:123
このトピックの詳細は、Apache Software Foundation の Web サイトを参照してください。
25.2.2.1.2. Server-Pool Size Regulation
Apache HTTP Server が要求を受け入れると、子プロセスまたはスレッドをディスパッチしてそれらを処理します。子プロセスまたはスレッドのこのグループは、サーバープール と呼ばれます。Apache HTTP Server 2.0 では、これらのサーバープールを作成および維持する責任は、Multi-Processing Modules (MPMs)と呼ばれるモジュールのグループに抽象化されています。他のモジュールとは異なり、Apache HTTP Server は MPM グループの 1 つのモジュールのみをロードできます。2.0 に同梱される MPM モジュールは、prefork、worker、および perchild の 3 つです。現在、prefork および worker MPM のみが利用できますが、perchild MPM は後日で利用できます。
元の Apache HTTP Server 1.3 の動作は、prefork MPM に移動しました。prefork MPM は Apache HTTP Server 1.3 と同じディレクティブを受け入れるため、以下のディレクティブを直接移行できます。
- StartServers
- MinSpareServers
- MaxSpareServers
- MaxClients
- MaxRequestsPerChild
worker MPM は、マルチプロセスのマルチスレッドサーバーを実装し、スケーラビリティーを向上させます。この MPM を使用する場合、要求はスレッドによって処理され、システムリソースを監視し、多数の要求を効率的に処理できるようにします。worker MPM で使用できるディレクティブの一部は、prefork MPM で受け入れられるディレクティブと同じですが、これらのディレクティブの値は Apache HTTP Server 1.3 インストールから直接転送しないでください。代わりにデフォルト値をガイドとして使用し、最適な値を判断してみてください。
重要な影響
worker MPM を使用するには、
/etc/sysconfig/httpd
ファイルを作成し、以下のディレクティブを追加します。
HTTPD=/usr/sbin/httpd.worker
MPM のトピックの詳細は、Apache Software Foundation の Web サイトを参照してください。
25.2.2.1.3. Dynamic Shared Object (DSO)のサポート
ここで必要な変更は多数あります。Apache HTTP Server 1.3 の設定をバージョン 2.0 に合わせて修正しようとする場合は(バージョン 2.0 設定への変更ではなく)、ストック Apache HTTP Server 2.0 設定ファイルからこのセクションをコピーすることが強く推奨されます。
ストック Apache HTTP Server 2.0 設定から セクションをコピーしたくない場合は、以下に注意してください。
- AddModule ディレクティブおよび ClearModuleList ディレクティブは存在しなくなりました。これらのディレクティブは、を使用してモジュールが正しい順序で有効にされるようにします。Apache HTTP Server 2.0 API を使用すると、モジュールは順序を指定でき、これら 2 つのディレクティブが不要になります。
- LoadModule 行の順序は、ほとんどの場合、関連性がなくなりました。
- 多くのモジュールは、追加、削除、名前変更、分割、または他に組み込まれています。
- 独自の RPM にパッケージ化されたモジュールの LoadModule 行(
mod_ssl
、php
、mod_perl
など)は、/etc/httpd/conf.d/
ディレクトリー内の関連ファイルにあるため、不要になりました。 - さまざまな HAVE_XXX 定義が定義されなくなりました。
重要な影響
元のファイルを変更する場合は、
httpd.conf
に以下のディレクティブが含まれていることが重要です。
Include conf.d/*.conf
このディレクティブを省略すると、独自の RPM にパッケージ化されたすべてのモジュール(
mod_perl
、php
、mod_ssl
など)が失敗します。
25.2.2.1.4. その他のグローバル環境の変更
以下のディレクティブは、Apache HTTP Server 2.0 の設定から削除されました。
- serverType: Apache HTTP Server は ServerType スタンドアロン としてのみ実行でき、このディレクティブは無関係です。
- AccessConfig および ResourceConfig: これらのディレクティブは Include ディレクティブの機能をミラーリングするため削除されました。AccessConfig ディレクティブおよび ResourceConfig ディレクティブが設定されている場合は、Include ディレクティブに置き換えます。ファイルが古いディレクティブによって暗示される順序で読み取られるようにするには、Include ディレクティブを
httpd.conf
の末尾に配置し、AccessConfig に対応するものの前に ResourceConfig に対応するものを追加する必要があります。デフォルト値を使用する場合は、conf/srm.conf
およびconf/access.conf
ファイルとして明示的に組み込みます。