名前ベースのバーチャルホスト設定(Apache)を行うことにより、 1つのWebサーバーで複数のサイトが運営できます。
バーチャルホストの設定は、IPベースと名前ベースの2種類ありますが、 今回は名前ベースの設定となります。
予めDNSサーバーに設定しておいた2つのホストが割り当てられている状態で、 複数のサイトを表示出来るように設定していきます。
例えば、独自ドメインexample.comを所有しており、
laravel.example.comとeccube4.example.comという2つのサイトを運営したい場合の設定
は以下の様になります。
(Aレコードに、123.○○○.○○○.○○○という値が予め設定されている想定となります)
| エントリ名 | タイプ | データ |
|---|---|---|
| @ | A | 123.○○○.○○○.○○○ |
| laravel | CNAME | example.com. |
| eccube4 | CNAME | example.com. |
example.comのDNSのゾーン設定にCNAMEレコードを2つ追加しましょう。
バーチャルホストの設定は、<VirtualHost>セクションディレクティブの中に記述します。
1つのWebサーバー上で1つのサイトを運営する場合は、以下のような設定となります。
(/var/www/html/laravel/にLaravel、/var/www/html/eccube4にeccube4系がインストールされている想定です。)
Listen 80
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/laravel/public
ServerName laravel.example.com
ErrorLog logs/laravel-error_log
CustomLog logs/laravel-access_log common
RewriteEngine on
RewriteCond %{SERVER_NAME} =laravel.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/eccube4
ServerName eccube4.example.com
ErrorLog logs/eccube4-error_log
CustomLog logs/eccube4-access_log common
RewriteEngine on
RewriteCond %{SERVER_NAME} =eccube4.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost><VirtualHost>セクションディレクティブは、<VirtualHost *:80>となっています。
これはどのIPアドレスでも許可する設定で、IPアドレスが変わる環境ではこのような設定になります。
IPを指定する場合は、<VirtualHost 123.○○○.○○○.○○○:80>と指定します。
バーチャルホストの設定として必須項目となるのが、ServerAdmin、DocumentRoot、ServerNameです。
ServerNameはサブドメインを設定しましょう。
また、DocumentRootにはアプリケーションの公開ディレクトリを指定します。
Apacheを再起動すると設定が反映されます。
apachectl restart