VirtualHostの設定

仮想マシンでローカルテスト環境を構築した際、
複数のサイトをテストしたい場合があると思います。
そんな時はApacheのバーチャルホスト機能を使うことで解決できます。


バーチャルホストの設定方法としては3通りほどあります。
・IPベース
・Nameベース
・ポートベース


今回はNameベースとポートベースに関して、設定してみたいと思います。



テストサイトが増えた場合に備えて、
httpd.confに直接設定を記述するのではなく、
virtualhostフォルダを作って、その中に各サイトごとの設定を記述することにします。


httpd.confの最終行に以下を追加

$vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80 ← Nameベースの場合のみ
Include virtualhost/*.conf


virtualhostフォルダの作成

cd /etc/httpd/
mkdir virtualhost


・例
/var/www/test1
/var/www/test2
に保存されている2つのサイトにアクセスできるようにしたい。
(ローカルサーバのIPアドレスは192.168.1.10を使っていると仮定)


必須項目
Listen ← ポートベースの場合のみ

DocumentRoot
ServerName


・Nameベースの場合
test1に対する設定

$vi virtualhost/test1.conf

  DocumentRoot "/var/www/test1"
  ServerName test1


test2に対する設定

$vi virtualhost/test2.conf

  DocumentRoot "/var/www/test2"
  ServerName test2


サーバの/etc/hostsを編集

$vi /etc/hosts
192.168.1.10    test1 test2

を追加


Apacheを再起動

/etc/init.d/httpd restart

ここで、注意しなければならないのは、家庭内やオフィス内でプライベートIPアドレス/ローカルIPアドレスを使ったLAN内でこの環境を試す場合は、クライアントPC側にも同様に設定しなければならないことです。Ubuntuを含むLinuxMac OS Xなら/etc/hosts、WindowsならWindowsディレクトリ以下か、Windows\System32\Drivers\etcディレクトリ以下にhostsというファイルがあり、それを編集します。この場合、クライアントPCにもサーバーと同じように、サーバーの「IPアドレス」「ホスト名.ドメイン名」「ホスト名」「ドメイン名」の順で記述しましょう

マルチサイト構築(Apacheバーチャルホスト設定)するには


ということでクライアント側(仮想マシンにアクセスするPC)の/etc/hostsを編集

$vi /etc/hosts
192.168.1.10    test1 test2

を追加


Nameベースの場合は
ブラウザから
http://test1
にアクセスすることで/var/www/test1
http://test2
にアクセスすることで/var/www/test2
が表示されます


・ポートベースの場合
test1に対する設定

$vi virtualhost/test1.conf

  DocumentRoot "/var/www/test1"
  ServerName test1


test2に対する設定

$vi virtualhost/test2.conf
Listen 8080

  DocumentRoot "/var/www/test2"
  ServerName test2


Apacheを再起動

/etc/init.d/httpd restart


ポートベースの場合は
ブラウザから
192.168.1.10
にアクセスすることで/var/www/test1
192.168.1.10:8080
にアクセスすることで/var/www/test2
が表示される


参考:
バーチャルホストの設定