VPSにマルチドメイン設定を行おう

1台のサーバーで、複数のドメイン(マルチドメイン)を管理したい場合もあります。今回は、Apacheの「バーチャルホスト」という機能で、マルチドメインを扱う手順を解説します。

 

■1つのVPSでマルチドメインを運用できる

■DNSの設定と事前の注意

■ドメイン毎のディレクトリを作成する

■バーチャルホストの設定

■動作の確認

 

 

■1つのVPSでマルチドメインを運用できる

VPSを使ってWebサイトなどを運用する際に、1つのドメインだけではなく、2つ以上のドメイン(マルチドメイン)を運用したい場面もあります。例えば、「foo.com」と「bar.com」の2つのドメインを持っているときに、この2つのドメインを使って、1つのVPSで別々のWebサイト等を運用したいような場合です。

ドメインが関係するサーバーソフトでは、マルチドメインに対応しているものが多いです。本記事では、Apacheの「バーチャルホスト」(Virtual Host)という機能を使って、1つのVPSでマルチドメインのWebサイトを運用できるようにする方法を解説します。

 

 

■DNSの設定と事前の注意

Apacheの設定を行う前に、まず事前準備としてDNSの設定を行って、運用したい個々のドメインのホスト名を、VPSのIPアドレスに対応させておきます。この手順は、「ドメインを設定しよう」の記事で解説したときと同じですので、そちらの記事を参照してください。

また、バーチャルホストを設定すると、httpd.confの「ServerName」の行などの設定は使われなくなります。つまり、これまでアクセスできていたWebサイトに、アクセスできない状態になります。

バーチャルホストの機能を使う場合は、運用するすべてのWebサイトの設定を、バーチャルホストの設定で行うように変えます。

 

 

■ドメイン毎のディレクトリを作成する

Apacheのバーチャルホストでは、ドメイン毎に専用のディレクトリを用意して、HTMLなどのファイルを格納します。また、Apacheには動作のログを記録する機能もありますが、ログもドメインごとに保存するようにします。

そこで、まずドメイン毎に必要なディレクトリを作成します。

 

・HTMLなどの保存先のディレクトリを作る

まず、HTMLなどの保存先のディレクトリを作ります。ディレクトリの作成先には特に決まりはありませんが、分かりやすいところに作ると良いでしょう。

yumコマンドでApacheをインストールした場合、ApacheのHTMLなどの保存先ディレクトリは、「/var/www/html」になります。そこで、「/var/www」ディレクトリの配下に、ドメイン毎のディレクトリを作ることにします。

例えば、「www.foo.com」「blog.foo.com」「www.bar.com」の3つのドメインを運用したいとします。この場合、「/var/www」ディレクトリの配下に、「www.foo.com」などの名前のディレクトリを作ると良いでしょう。具体的には、次のようなコマンドを実行します。

 

リスト 「www.foo.com」「blog.foo.com」「www.bar.com」の各ドメインのためのディレクトリを作成する

sudo mkdir /var/www/www.foo.com

sudo mkdir /var/www/blog.foo.com

sudo mkdir /var/www/www.bar.com

 

・ログの記録先ディレクトリを作る

次に、ログの記録先のディレクトリも作ります。

yumコマンドでApacheをインストールした場合、Apacheのログの保存先ディレクトリは、「/var/log/httpd」になります。そこで、「/var/log/httpd」ディレクトリの配下に、ドメイン毎のディレクトリを作ることにします。

例えば、前述の例と同じ3つのドメインを運用する場合だと、次のようなコマンドを実行して、ログ用のディレクトリを作ります。

 

リスト 「www.foo.com」「blog.foo.com」「www.bar.com」の各ドメインのログ用ディレクトリを作成する

sudo mkdir /var/log/httpd/www.foo.com

sudo mkdir /var/log/httpd/blog.foo.com

sudo mkdir /var/log/httpd/www.bar.com

 

 

■バーチャルホストの設定

次に、バーチャルホストの設定を行います。

 

・設定ファイルの作成

yumコマンドでインストールしたApacheでは、Apacheの設定ファイル本体(httpd.conf)だけでなく、「/etc/httpd/conf.d」ディレクトリに設置した設定ファイルも有効になります。そこで、ここではバーチャルホストの設定だけをまとめて「vhosts.conf」というファイルを作り、それを「/etc/httpd/conf.d」ディレクトリに配置することにします。

次のコマンドを入力すると、nanoが起動して、空のvhosts.confファイルを作成する状態になります。

 

リスト 空のvhosts.confファイルの作成

sudo nano /etc/httpd/conf.d/vhosts.conf

 

・ドメイン毎の設定の追加

次に、vhosts.confファイルを作成していきます。

まず、先頭に次の行を入れます。

 

リスト vhosts.confの先頭に入れる行

NameVirtualHost *:80

 

その後に、次のようなドメイン毎の設定を追加していきます。運用するドメインの数だけ、この設定の部分を繰り返し追加します。

「HTMLなどの保存先ディレクトリ」と「ログファイルの保存先ディレクトリ」は、前の手順で作ったディレクトリ名に置き換えます。また、「ドメイン名」のところは、実際のドメイン名に置き換えます。

 

リスト ドメイン毎の設定

<VirtualHost *:80>

DocumentRoot HTMLなどの保存先ディレクトリ

ServerName ドメイン名

ErrorLog ログファイルの保存先ディレクトリ/error_log

CustomLog ログファイルの保存先ディレクトリ/access_log common

<Directory "HTMLなどの保存先ディレクトリ">

Options ExecCGI FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

 

例えば、ここまでで上げてきたように、www.foo.comドメインを運用できるようにしたいとします。この場合、vhosts.confに次の設定を追加します。

 

リスト www.foo.comを運用できるようにするための設定

<VirtualHost *:80>

DocumentRoot /var/www/www.foo.com

ServerName www.foo.com

ErrorLog /var/log/httpd/www.foo.com/error_log

CustomLog /var/log/httpd/www.foo.com/access_log common

<Directory "/var/www/www.foo.com">

Options ExecCGI FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

 

同様の手順で、運用する個々のドメインについて、その設定をvhosts.confに追加します。そして、すべてのドメインの設定を追加し終わったら、vhosts.confファイルを保存しておきます。

 

 

■動作の確認

ここまでが終わったら、次のコマンドを実行して、Apacheを再起動します。これで、バーチャルホストが有効になります。

 

リスト Apacheの再起動

sudo service httpd restart

 

 

Apacheを再起動したら、それぞれのドメインのファイル保存先ディレクトリに別々のindex.htmlファイルを設置し、Webブラウザでそれらにアクセスしてみて、マルチドメインが正しく動作していることを確認します。

例えば、これまでの手順で、www.foo.comドメインを運用できる状態にしたとします。この場合、「sudo nano /var/www/www.foo.com/index.html」のコマンドを実行すると、www.foo.comドメイン用のディレクトリに、index.htmlファイルを作成することができます。

index.htmlファイルを作成したら、Webブラウザで「http://www.foo.com/」にアクセスして、先ほど作成したindex.htmlが表示されることを確認します。

後は、同様の手順を繰り返して、それぞれのドメインに対応するディレクトリにindex.htmlを設置し、Webブラウザでindex.htmlにアクセスしてみて、動作を確認します。

 

 

 

 

うちだ
サービスクリエーション本部所属        (監修:とみなが)       

オススメ記事

関連サービス

VPS VPSクラウド