Linux の使い方: apache にバーチャルホストを設定する (CentOS 5.4)


バーチャルホストを設定する

CentOS 5.4 では Web サーバーとして "Apache" が用意されています。

Apache で複数のドメインを運用するために、バーチャルホストの設定をおこなってみます。

 

CentOS 5.4 の場合、設定は /etc/httpd/conf/httpd.conf に格納されています。

バーチャルホストを利用するためには、この中の "NameVirtualHost" ディレクティブを設定する必要があります。

NameVirtualHost *:80

例えばこのようにすることで、全ての IP アドレスの 80 番ポートへのアクセスについて、バーチャルホストによる運用を行う設定となります。

 

後は <VirtualHost *:80> を用いてバーチャルホストの設定を行う形となりますが、全ての設定を "/etc/httpd/conf/httpd.conf" に記していると、バーチャルホストの数が多くなった場合に管理しにくくなるので、今回はバーチャルホストの設定を別のファイルに分けて格納できるように調整しようと思います。

まず、バーチャルホストの設定ファイルの保存場所として "/etc/httpd/conf/vhost.d" ディレクトリを用意します。

ここに、次のような内容のファイル "site1.on" を格納します。ファイル名は最後に ".on" をつけることにします。

<VirtualHost *:80>

ServerName username.ez-net.jp

DocumentRoot /home/username/html

</VirtualHost>

なお、複数のバーチャルホストで同じ設定を適用したい場合には、次のように<VirtualHost> で二つを指定することも可能です。

<VirtualHost *:80 *:81>

ServerName username.ez-net.jp

DocumentRoot /home/username/html

</VirtualHost>

上記の場合は、併せて "/etc/httpd/conf/httpd.conf" の方で NameVirtualHost *:81 も設定されている必要があります。

 

 

このような形で設定したら、後は "/etc/httpd/conf/httpd.conf" で、上で用意したファイルが自動的に取り込まれるように設定します。

Include vhost.d/*.on

これを、設定ファイルの最後尾あたりに付加しておくと良いでしょう。

また、バーチャルホスト設定は、指定されたサイトが該当しないような場合には、最初に設定されているサイトが読み込まれる仕様になっているようなので、上記の "Include vhost.d/*.on" の直前に、次のように既定の設定を記載しておくと良いかもしれません。

<VirtualHost _default_:*>

ServerName default.ez-net.jp

DocumentRoot /home/default/html

</VirtualHost>

また、複数のサブドメインをまとめて設定したいといった場合には、"ServerName" ディレクティブにひとまず代表となるドメインを指定した上で、"ServerAlias" ディレクティブで、例えば "*.proxy.ez-net.jp" といったワイルドカードによる指定も可能です。

 

ここまで出来たら Apache の設定が正しいかどうか、次の命令を使って確認してみます。

service httpd configtest

これで "Syntax OK" と表示されれば設定ファイルは問題ないので、次のようにして Apache に設定を適用すれば設定完了です。

service httpd reload

以降、バーチャルホストを追加する場合には、"/etc/httpd/vhost.d/" ディレクトリに、拡張子 ".on" のファイルを追加して、上記のように設定が正しいかどうかの確認と、正しければ Apache への適用を行うことで、追加して行くことが可能です。