ハードウェアの進化により、マシン一台で複数サーバープロセスを持つことが可能になった。
ソフトウェアもオープンソースやら共同開発でかなり便利になってきている。
昔は設定がめんどくさかったバーチャルホストが簡単に作れてしまう。
というわけで Apache 2.4 でバーチャルホストを作成する方法を簡単に書いていこうと思う。
Apache 2.4 でバーチャルホスト
ホスト test1.com と test2.com を一つのApacheサービスでホストする。
ルートディレクトリを作成
基本的にはウェブコンテンツは
/var/www/
配下に置く。バーチャルホストでは場所を共有して使えない(技術的には共有できるがバーチャルホストである意味がなくなってしまう)のでウェブコンテンツを配置するディレクトリを別々に作成する。
/var/www/
の下にサブディレクトリを作成してもいいが、自分は/srv
にwww
ディレクトリを作成してその配下に別々のルートディレクトリを作成する。eg.
#> cd /srv #> mkdir www #> mkdir www/test1 #> mkdir www/test2
ドキュメントルート(ルートディレクトリ)配下にウェブコンテンツを作成
#> nano /srv/www/test1/index.html #> nano /srv/www/test2/index.html
Apache 構成ファイルでバーチャルホストを定義
Apache 2.4 では
/etc/apache2/sites-enabled/
配下の構成ファイルをもとにサーバープロセスを作成する。しかしここに直接ファイルを作成するのは good practice ではない。
/etc/apache2/sites-available/
配下に構成ファイルを作成して、完成したら、シンボリックリンクを作成する。#> nano /etc/apache2/sites-available/testserver.conf #> cd /etc/apache2/sites-enabled/ #> ln -s ../sites-available/testserver.conf testserver.conf
testserver.conf
の中身は以下の通り:<VirtualHost *:80> ServerName test1.com DocumentRoot /srv/www/test1 </VirtualHost> <VirtualHost *:80> ServerName test2.com DocumentRoot /srv/www/test2 </VirtualHost>
4行だけでバーチャルホストが作成できちゃう便利さ!
必須のパラメータ:
- ServerName: クライアントからの
Host:
ヘッダーと比較し、一致した際、該当VirtualHostエレメントの構成に則りサービスを提供する。 厳密には必須ではない。 ServerNameパラメータを含めなかった場合なにも一致しなかった際のデフォルトのホストとして扱われる。 - DocumentRoot: ウェブコンテンツが置いてあるルートディレクトリはどこにあるのか定義する
あとはお好みでアクセス制御とかリダイレクトとかエイリアス等の他パラメータを追加する。
4. 完成したらドメインとマッピングローカルで試す場合は自マシンの
hosts
ファイルを編集する。#> cat /etc/hosts 127.0.0.1 localhost test1.com test2.com ...
公に出す場合はドメインプロバイダーのAレコードとマッピングする。
- ServerName: クライアントからの
テスト
これで設定は完了! 動作テストをする。
wget -O - http://test1.com
以上!