表示確認用ローカルサーバの Virtual Hosts ( Apache ) 設定

ローカルサーバー構築 ( Apache, Perl, PHP, MySQL ) 」で、ローカルサーバをたてる方法を書きましたが、今回はその補足として。実際に使う場合に便利な Virtual Hosts の設定。色々試して、現在こんな形でやっています。

httpd.conf

C:\Program Files\Apache Software Foundation\Apache2.2\conf 内
httpd.conf

#Listen 12.34.56.78:80
Listen 80
Listen 8080
Listen 8000

8080 と 8000 も使えるように。

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Vitual hosts の設定ファイル httpd-vhosts.conf を読み込むように。

httpd-vhosts.conf

C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra 内
httpd-vhosts.conf

#
# Use name-based virtual hosting.
#
NameVirtualHost *:8080
NameVirtualHost *:8000
<VirtualHost *:8080>
    ServerAdmin test@test.com
    DocumentRoot "C:\work\UserVirtual8080\htdocs"
    ServerName localhost:8080
    AddHandler cgi-script .cgi .pl

    <Directory "C:\work\UserVirtual8080\htdocs">
        Options Includes ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

<VirtualHost *:8000>
    ServerAdmin test@test.com
    DocumentRoot "C:\work\UserVirtual8000"
    ServerName localhost:8000
    AddHandler cgi-script .cgi .pl

    <Directory "C:\work\UserVirtual8000">
        Options Includes ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

UserVirtual8000 内の任意名のディレクトリ(例、hoge)が、http://localhost:8000/hoge/ でみれて、UserVirtual8080 内の htdocs が http://localhost:8080/ でみれるように。

本番環境にあわせ、普段は 8080 のほうを利用。
本番環境で http://xxx.com/hoge/ のような URL がトップの場合は、8000 のほうを利用。

8080 内の htdocs は、作るサイトが変わるたびにそこに html 等のコーディングデータを入れ替えておいてもいいですが、私の場合、プロジェクトごとにフォルダは掘っておきたいなという気持ちがあるので以下のようにしています。

「プロジェクト名ディレクトリ」の中に「htdocs」ディレクトリを作成(例:C:\work\プロジェクトA\htdocs)。その htdocs のジャンクションを、UserVirtual8000 内に作成。

ジャンクション作成には、以下のリンク作成シェル拡張を使ってます。楽です。

例でいうと、C:\work\プロジェクトA 内の htdocs を右クリックして C:\work\UserVirtual8000 内にドラッグアンドドロップすると、右クリックなのでメニューがでます。その中の、「ディレクトリジャンクションをここに作成」を選択。

これで、C:\work\プロジェクトA\htdocs と、C:\work\UserVirtual8000\htdocs が同じ内容になり、C:\work\プロジェクトA\htdocs 内を変更すれば C:\work\UserVirtual8000\htdocs 内も変更されます。ジャンクションについてはここでは説明しませんが、実体丸ごとのリンク、みたいなイメージです。

参考:WindowsXPにおけるジャンクション作成方法 – GeekなNooblog

こうすることで、プロジェクトを切り替えるたびにジャンクションを変えるだけで済みます。httpd-vhosts.conf を書き換えるより楽なのでこうしてます。

「もっとこうしたほうが良いよ!」とか「こういう設定オススメだよ!」とか「こういう方法もいいよ!」等あれば、是非教えてください :)