Linux で自宅サーバ [ Home Server Techncial ]

>>トップページに戻る

 複数のドメインを運営する (バーチャルホスト)

一つの 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 から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 を実行させる

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 の実行が可能になりました。


この他にももっとスマートな設定方法はあるハズです。
この方法はあくまで例ですので、これが全てではありません・・・^_^;

▲ページの最上部に戻る

Copyright© Home Server Technical. All Right Reserved.
webmaster@miloweb.net