Zend Server や XAMPP など、ローカルで開発用の Apache を動かしている場合、hosts ファイルに存在しないホスト名を定義し、プロジェクト毎にバーチャルホストを設定する手法がよく取られます。ルートパス以下をまるごと使用できるため本番環境と同じパスにしたい場合など、バリバリの開発者じゃなくてもコーダーさんやデザイナさんでも使われている方多いんじゃないでしょうか。
例えばローカルの Apache で WordPress を動作させ h ttp://wordpress.local/ という URL で動作確認したい場合は、
- /etc/hosts に「127.0.0.1 wordpress.local」の行を追加
- ドキュメントルートにプログラムを展開(WordPressを解凍)
- httpd.conf に VirtualHost の記述を追加
- Apache 再起動
という手順で構築します。
(※もちろんローカルに Apache 入れるとかは必須)
一つ追加するだけならそれほど面倒ではないのですが VirtualHost がたくさん増えると設定ファイルが煩雑になりがちです。あれ?このバーチャルホスト使ってるんだっけー?とか、消していいんだっけー?ということで時間をとられるのも嫌なので、ぼくは Apache の VirtualDocumentRoot という機能を使用して3と4の手順を省略しています。
VirtualDocumentRoot は、ホスト名やサブドメインなどの文字列をもとにバーチャルホストのドキュメントルートを自動でマッピングしてくれる便利な機能です。一度設定しておけば hosts ファイルにホスト名を記述し、ドキュメントルートのディレクトリを作成するだけで、すぐにブラウザからアクセス出来る Web 環境が作れます。 Apacheのリロードすら必要ありません。
設定はとても簡単。httpd.conf (もしくは conf.d 以下の任意のファイル)に、以下のように ServerName をワイルドカードで定義し、VirtualDocumentRoot のパスにホスト名を埋め込みます。
<VirtualHost *:80>
ServerName *
VirtualDocumentRoot /Users/shigeta/Vhosts/%0/htdocs
</VirtualHost>
これだけで http://wordpress.local/ へのアクセスに対するドキュメントルートは、ローカルの /Users/shigeta/Vhosts/wordpress.local/htdocs へ自動でマッピングされます。あとは wordpress.local を hosts に書けばブラウザから h ttp://wordpress.local にアクセスできます。conf ファイルも簡潔になるしドキュメントルートも1箇所にまとまって一石二鳥!
私は以下のファイルを conf.d/vhosts.conf に保存しています。
<VirtualHost _default_:80>
ServerName *.dev
VirtualDocumentRoot /Users/shigeta/vhosts/%0/htdocs
VirtualScriptAlias /Users/shigeta/vhosts/%0/cgi-bin
<Directory /Users/shigeta/vhosts/>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
フレームワークなどを使ったプロジェクトの場合は、htdocs 自体をアプリケーションの web 公開ディレクトリへのシンボリックリンクにしてやるとよいです。
ちなみにローカルに PHP 環境を作るのであれば Zend Server Community Edition がお薦めです。PHP/Apache/MySQL の環境と、PEAR / Zend Framework のソースも含んだオールインワンなパッケージ群なので、本番環境も Zend Server にしちゃえば環境構築に時間を取られないし、バージョンの差異を起因としたバグに悩まされることが少なくなります。
もちろん VirtualDocumentRoot は、ローカル環境に限った話では無いです。私は外向けのサーバにワイルドカード証明書入れて SSL 環境もバーチャルドキュメントルート化してます。
超便利ー!
参考)
-
Apache HTTP Server Documentation (Dynamically Configured Mass Virtual Hosting)
http://httpd.apache.org/docs/2.4/vhosts/mass.html -
Zend Server Community Edition
http://www.zend.com/en/products/server-ce/