複数のドメインを運営する (バーチャルホスト)
一つの Web サーバで複数のサイトを運営する方法です。
一般に「バーチャルホスト」と呼ばれ、有料のホスティングサービスなどでは一般的な技術です。
バーチャルホストの方法は幾つかありますが、ここでの前提条件は以下の2点になります。
ページ内コンテンツ一覧
例として、「 http://my-1st-domain.dns.com/ 」と「 http://my-2nd-domain.dns.com/ 」の2つのサイトを運営するものとします。
1. httpd.conf をエディタで開きます。
Vine Linux 2.5 のデフォルトなら /etc/httpd/conf/httpd.conf になります。
まずは下記の部分がコメントアウトされているのを確認します。400 行目付近
# You will have to access it by its address (e.g., http://123.45.67.89/)
# anyway, and this will make redirections work in a sensible way.
#
#ServerName localhost
2. httpd.conf にバーチャルホストの記述を追加します。
httpd.conf の最下部に追加して下さい。
ServerName my-1st-domain.dns.com #メインのドメイン名
NameVirtualHost *
<VirtualHost *> #メインのドメイン名に関する記述
DocumentRoot /home/httpd/html #デフォルトのパスが無難
ServerName my-1st-domain.dns.com #メインのドメイン名
HostNameLookups double
UseCanonicalName off
</VirtualHost>
<VirtualHost *> #2つ目のドメイン名に関する記述
DocumentRoot /home/2nd/html #任意のパス
ServerName my-2nd-domain.dns.com #ドメイン名
HostNameLookups double
UseCanonicalName off
</VirtualHost>
3.Apache を再起動します
Apache の再起動は Webmin 上からでもオッケーです。
これで、2つのサイト(「 http://my-1st-domain.dns.com/ 」と「 http://my-2nd-domain.dns.com/ 」)が1つの Web サーバ上で運営されます。
動作確認は外部のネットワークからして下さい。現時点では、LAN 内からのチェックはできません。
LAN 内からのチェックの方法は次の項目( LAN からVirtualHostの動作確認る)で説明しています。
バーチャルホストを設定したら、同じ LAN 内にあるクライアント機から「 http://192.168.0.2/ 」(サーバのローカルIPアドレス)でアクセスすると、
上記の設定では「 http://my-1st-domain.dns.com/ 」のコンテンツが表示され、「 http://my-2nd-domain.dns.com/ 」のコンテンツが見れません。
LAN 内でチェックできないのはよろしくないので、LAN 内から閲覧可能にします。
前提条件は以下の通り
hosts の編集
LAN 内から サーバ機のバーチャルホストのコンテンツを実現させる為に、クライアント機の「 hosts 」というファイルを編集します。
1.「 hosts 」をエディタで開きます。
Windows 98 の場合、 C:\Windows 、Windows 2000 の場合、C:\WINNT\system32\drivers\etc ディレクトリ配下にあります。
(当サイトでは Windows 2000 で説明します) Windows 98 の場合、hosts.sam ファイル(hostsのサンプルファイル)をコピーし、拡張子のないhosts ファイルに名前を変更した上で、編集し、hosts.sam ファイルのあったフォルダに置いて下さい。
2.ホスト名の追加
hosts の最下部の「 127.0.0.1 localhost 」の次の行に以下を追加します。
192.168.0.2 my-1st-domain.dns.com my-2nd-domain.dns.com
( 192.168.0.2 はサーバ機の IP アドレスです )
追加できたら保存します。
3.動作確認
ブラウザを再起動させ、 URL 欄に設定した URL を入力します。
例で言えば、「 http://my-1st-domain.dns.com/ 」と「 http://my-2nd-domain.dns.com/ 」に当たります。
ブラウザは、URL が入力されるとまず hosts を見に行って、そこに該当しない URL なら外部に探しに行く様です。
デフォルトで localhost に関する記述があったので、ブラウザに「 http://localhost/ 」と入力しても外部ネットワークを見に行かないってワケなんですネ :-)
CGI に関して httpd.conf に何も記述していない場合、CGI の実行はデフォルトの /home/httpd/cgi-bin ディレクトリ内でないと不可能です。
メインのドメインに関してはこのままでもオッケーなのですが、バーチャルホストで運営しているサイトの CGI の管理が面倒になってきます。
そこで、バーチャルホストでも CGI が実行できる様におなじみの httpd.conf を編集します。
前提条件は以下の通り
1.httpd.conf をエディタで開く
先ほど追加したバーチャルホストに関する記述に以下を追加します。
<VirtualHost *> #2つ目のドメイン名に関する記述
DocumentRoot /home/2nd/html #任意のパス
ServerName my-2nd-domain.dns.com #ドメイン名
HostNameLookups double
UseCanonicalName off
# 追加個所
ScriptAlias /cgi-bin/ /home/2nd/html/cgi-bin/
<Directory /home/2nd/html/cgi-bin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
# ここまで
</VirtualHost>
追加が完了すれば、httpd.conf を保存します。
2.Apache を再起動します
Apache の再起動は Webmin 上からでもオッケーです。
これで、バーチャルホスト(「 http://my-2nd-domain.dns.com/ 」)でも CGI の実行が可能になりました。
この他にももっとスマートな設定方法はあるハズです。
この方法はあくまで例ですので、これが全てではありません・・・^_^;