Webサーバのマルチドメイン化についてのメモ
Webサーバのマルチドメイン化
ウェブサーバはクライアントからのリクエストに対してレスポンス(返事)をしてくれるソフトウェアです。
Linuxが走るマシンでのウェブサーバはApacheが代表的かと思います。
今回は、Ubuntu/16.04とApache/2.4.18におけるウェブサーバのマルチドメイン化についてまとめておこうと思います。
マルチドメインとは
マルチドメインとは、複数のドメインからのアクセスをひとつのサーバで処理するということです。
複数のホームページ(Webサイト)をひとつのサーバで管理できるようになります。
例えば、aaa.comとbbb.comの2つのドメインがあり、
aaa.com: /var/www/html/aaa
bbb.com: /var/www/html/bbb
と、それぞれhtdocsを用意している場合です。
Apacheはリクエストされたドメインを判別し、aaa.comへのリクエストなら/var/www/html/aaa、
bbb.comへのアクセスなら/var/www/html/bbbをレスポンスとして返します。
この機能を使うことで、物理的なサーバは1つでも2つ以上のウェブサイトを運営できます。
Apacheの設定ファイルを確認
まず、Apacheの設定ファイルを確認します。
cd /etc/apache2/
apt-getを使用しApacheをインストールするとだいたいこの場所に設定ファイル群があると思います。
Apacheは2.4系から設定ファイルがだいぶ変わりましたね。
Apacheをインストールしたときの初期画面にも書かれていますが、
Apacheの設定ファイルは以下のようになっています。
/etc/apache2/
├── apache2.conf // 基本設定ファイル
├── conf-available // 各種設定ファイル
│ ├── charset.conf
│ ├── localized-error-pages.conf
│ ├── other-vhosts-access-log.conf
│ ├── security.conf
│ └── serve-cgi-bin.conf
├── conf-enabled // 有効になっている各種設定ファイル
│ ├── charset.conf -> ../conf-available/charset.conf
│ ├── localized-error-pages.conf -> ../conf-available/localized-error-pages.conf
│ ├── other-vhosts-access-log.conf -> ../conf-available/other-vhosts-access-log.conf
│ ├── security.conf -> ../conf-available/security.conf
│ └── serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
├── envvars
├── magic
├── mods-available
│ └── (たくさんの*.loadファイル) // モジュールファイル群
├── mods-enabled
│ └── (たくさんの*.loadファイルへのリンク) // 有効になっているモジュールファイル群
├── ports.conf
├── sites-available // 今回編集するサイト設定ファイル
│ ├── 000-default.conf
│ └── default-ssl.conf
└── sites-enabled // 有効になっているサイト設定ファイル
└── 000-default.conf -> ../sites-available/000-default.conf
基本的に、Apacheの設定ファイルの構造は
apache2.confに基本的な設定がかかれていて、
conf-availableにそれぞれの細かい設定があります。
conf-availableに書いた設定は、a2enconfコマンドを実行することで、有効にすることができ、conf-enabledにリンクがセットされます。
初期状態では、conf-availableにある設定ファイルは全て有効になっています。
脱線しちゃうのでApacheの設定ファイルの話はこれくらいにして本題に行きましょう笑
マルチドメイン化
準備
マルチドメインはApacheのVirtualHostによって実現できます。
VirtualHostの設定はsites-availableにて行います。
初期状態では、
- 000-default.conf
- default-ssl.conf
の2つのファイルがあります。
また、sites-enabledには000-defaultのみが有効になっています。
(sslモジュールを有効にしている場合では勝手にdefault-sslも有効になります)
初期状態では000-defaultのコメントアウトされた文字列を抜くと、以下のような設定がされています。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
これはWebサーバがポート80(HTTP)からのアクセスをDocumentRootに書かれているパスに通すということです。
シングルドメイン運用の場合は全てのアクセスを1つのWebサイトと関連付ければよいのでこれでOKです。
今回はマルチドメインにするので、それぞれのDocumentRootとドメインをこのファイルにて関連付けます。
ドメイン1つにつき1つの設定ファイルを用意するとわかりやすいので、aaa.com.confとbbb.com.confを用意します。
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/aaa.com.conf
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/bbb.com.conf
000-default.confはバックアップ用ファイルとして初期状態のまま残しておきましょう。
各ファイルを編集します。
aaa.com
<VirtualHost *:80>
ServerName aaa.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/aaa
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
bbb.com
<VirtualHost *:80>
ServerName bbb.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/bbb
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ServerNameを追記し、DocumentRootを変更します。
アクセスしてきたときに使用されているドメインを判別して指定のDocumentRootに通します。
それぞれの設定ファイルを有効にします。
a2ensite aaa
a2ensite bbb
このコマンドはどこで入力しても大丈夫です。
初期状態で有効になっているページを無効にします。
a2dissite 000-default
設定ファイルを実行するためにapacheを再起動します。
service apache2 reload
これでマルチドメインが有効になると思います。
確認
ブラウザからそれぞれのドメインへアクセスし確認します。
想定したとおりに表示されない場合は、DNSの設定などを確認してください。
DNSへ設定が反映されるまで時間が必要な場合があります。
コメント