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.confDocumentRoot "/var/www/test1" ServerName test1
test2に対する設定
$vi virtualhost/test2.confDocumentRoot "/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を含むLinuxやMac 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.confDocumentRoot "/var/www/test1" ServerName test1
test2に対する設定
$vi virtualhost/test2.conf Listen 8080DocumentRoot "/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
が表示される
参考:
バーチャルホストの設定