IP ベース という名前が示すように、サーバには IP ベースのバーチャルホストそれぞれにつき、別々の IP アドレスが 必要です。複数の物理コネクションを持っているマシンを用意するか、 最近のオペレーティングシステムでサポートされているバーチャル インタフェース (詳細はシステムの説明書を読んでください。たいていは "ip エイリアス" と呼ばれていて、設定には普通 "ifconfig" コマンドを 使います) を使うかで実現できます。
複数のホストをサポートするように Apache を設定する方法は
二通りあります。別の httpd デーモンを各ホスト毎に実行するか、
すべてのバーチャルホストをサポートするデーモンを一つ実行するかです。
以下のときには複数のデーモンを使うと良いでしょう:
User , Group , Listen , ServerRoot の設定が違う二つのデーモンを
実行する必要があります。Listen は「ワイルドカード」
アドレスか、特定のアドレスのみを listen することができます。
ですから、何らかの理由で特定のアドレスを listen しなけばならない
ときは、その特定のアドレスをすべて listen する必要があります。
(ただし、一つの httpd が N-1 個のアドレスを listen し、
別の httpd が残りのアドレスを listen するといったことは可能です。)以下のときには単独のデーモンを使うと良いでしょう:
各バーチャルホストに対して別の httpd のインストールを行ないます。
設定ファイル中の Listen
ディレクティブを使って、
各インストールでデーモンが扱う IP アドレス (バーチャルホスト)
を選択します。例えば
Listen www.smallco.com:80
ここで、ホスト名の代わりに IP アドレスを使う方が推奨されていることに 注意しておいてください (DNS の注意事項 参照)。
この場合は、一つの httpd が主サーバとすべてのバーチャルホストのリクエストを
処理します。設定ファイルの VirtualHost ディレクティブを使って、
ServerAdmin , ServerName , DocumentRoot , ErrorLog , TransferLog
や CustomLog
設定ディレクティブの値が各ホスト毎に異なる値に設定されるようにします。
例えば
<VirtualHost www.smallco.com>
ServerAdmin webmaster@mail.smallco.com
DocumentRoot /groups/smallco/www
ServerName www.smallco.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>
<VirtualHost www.baygroup.org>
ServerAdmin webmaster@mail.baygroup.org
DocumentRoot /groups/baygroup/www
ServerName www.baygroup.org
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>
ここで、ホスト名の代わりに IP アドレスを使う方が推奨されていることに 注意しておいてください (DNS の注意事項 参照)。
プロセス生成を制御するディレクティブやその他のいくつかのディレクティブを 除いて、ほぼすべての設定ディレクティブを VirtualHost ディレクティブの中に書くことができます。ディレクティブが VirtualHost ディレクティブで使用できるかどうかは ディレクティブ索引を使ってコンテキストの 欄を調べてください。
suEXECラッパーを使っている場合は、
SuexecUserGroup
ディレクティブを VirtualHost
ディレクティブの中で使用することができます。
セキュリティ: ログファイルを書く場所を指定するときは、 Apache を起動したユーザ以外がそのディレクトリに書き込み権限を 持っている場合にセキュリティ上の危険があることに注意してください。 詳細はセキュリティのこつドキュメントを 参照してください。