複数ドメインの設置
単一のサーバで複数のドメイン名を使うには、Apacheの特徴的な機能の1つである「バーチャルホスト」を使えば実現できるとのこと。
バーチャルホストによる複数サイトの同時運用に方法が記載されています。
こちらの知っておきたいApacheの基礎知識も参考になります。
コラム:異なるドメインのホスト
異なるドメインのホストが同じサーバを指すことなどできるのか、と思う方もいるだろう。それどころか、本稿では同じIPアドレスを指そうとしている。
これは、一見信じられないことだが、実は簡単に実現できる。本文でも述べたとおり、URLを使ったアクセスでは、まずドメインのDNSへ問い合わせが行われる。このとき、そのDNSが返すIPアドレスは何であってもWebブラウザは信用するしかない。つまり、ほかのドメインで使われているIPアドレスであっても信じるのである。従って、「www.atmarkit.com」と「www.atmarkit.co.jp」で同じIPアドレスが返ってきても問題はない。あとは、アクセスを受けたWebサーバ側の問題となる。
独自ドメインのURLが使えるのが売りのプロバイダは、バーチャルホストを使って複数のドメインを1台のサーバで運用している。それどころか、DNSサーバすらも複数のドメインを1台のサーバで賄っているのだ。
名前ベースのバーチャルホストとバーチャルホストの例を参考にしました。
以下は、名前ベースのバーチャルホストから引用
たとえば、www.domain.tld を動かしていて、 さらにバーチャルホスト www.otherdomain.tld を追加するとしましょう。このバーチャルホストは同一 IP を指しているとします。 そのような場合は、httpd.conf に以下のようなコードを追加するだけです
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.domain.tld ServerAlias domain.tld *.domain.tld DocumentRoot /www/domain </VirtualHost> <VirtualHost *:80> ServerName www.otherdomain.tld DocumentRoot /www/otherdomain </VirtualHost>
NameVirtualHost 及び VirtualHost のどちらの場合も、 * の部分には明示的に IP アドレスを指定することができます。 例えば、ある IP アドレスでは名前ベースのバーチャルホストを使いたい一方で、 別の IP アドレスでは、他の IP ベースのバーチャルホストや 別組の名前ベースのバーチャルホストを使いたい場合、 そう設定することになるでしょう。
複数の名前でサーバアクセスができるようにしたいことも多いでしょう。 このようなことは、ServerAlias ディレクティブを
ServerAlias domain.tld *.domain.tld
domain.tld ドメインへの全てのホストへのリクエストは www.domain.tld のバーチャルホストが処理します。 名前をマッチさせるために、ワイルドカード文字 * や ? を使用することもできます。もちろん思いつきの名前を作って、 ServerName や ServerAlias にその名前を書くといったことはできません。まずは、 これらの名前が サーバに付けられた IP アドレスにマップされるように DNS サーバを適切に設定しなければなりません。
最後に、
リクエストが来ると、サーバはまず最初に
結果として、リストの最初のバーチャルホストが デフォルト の バーチャルホストになります。IP アドレスが NameVirtualHost ディレクティブにマッチした場合は、メインのサーバ の DocumentRoot は決して使われません どのバーチャルホストにもマッチしないリクエストに対して、 特別な設定をしたいのであれば、設定ファイル中の最初の
結局、以上を参考にして、以下のとおり構築しました。
$ sudo mkdir /home/www
$ sudp mkdir /var/log/www
$ sudo mkdir /home/www/hubuntu.net
$ sudo mkdir /home/www/hbirds.homelinux.com
$ sudo nano /etc/apache2/sites-available/default で以下を追記
「NameVirtualHost *」があるとエラーが出てしまうので外しました。
<VirtualHost *:80> DocumentRoot /home/www/hubuntu.net ServerName hubuntu.net ServerAlias *.hubuntu.net ErrorLog /var/log/www/hubuntu.net-error_log TransferLog /var/log/www/hubuntu.net-access_log <Directory /home/www/hubuntu.net/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot /home/www/hbirds.homelinux.com ServerName hbirds.homelinux.com ErrorLog /var/log/www/hbirds.homelinux.com-error_log TransferLog /var/log/www/hbirds.homelinux.com-access_log <Directory /home/www/hbirds.homelinux.net/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost>
Apacheをリスタート
$ sudo /etc/init.d/apache2 restart
/etc/hosts を編集し、以下を挿入
192.168.0.4 hubuntu.net hbirds.homelinux.com
Related Posts
No Comments »
RSS feed for comments on this post. TrackBack URL
Leave a comment
You must be logged in to post a comment.