なにかWebサイトを作るとして、公開するサーバーとローカル開発/テスト環境はできるだけ合わせたい。特にURI。Google Maps API なんてつかっていると、アクセスするドメインが違うと動作しないし、各種リンクも張り方によっては切れてしまうからだ。本当はアドレスが変わっても正常に動作するサイト作りが望ましいけど、過去書いてしまったモノをポータブルに修正するのはちょっとやりたくない。。。
というわけで、環境合わせることにするも、メンドーなことはしたくないので、最小限設定を試みる。ちなみに、ローカルマシンは Mac OS X(10.4) である。
目標:
- http://groundwalker.com/ でローカルマシンにあるページにアクセスできるようにし、
- 公開サイトとできるだけ変わらない表示/動作をするようにする。
- さらに、他の公開サイトも追加しやすいようにする。
- ローカルサイトと公開サイトはすぐに切り替えられるようにする。
- また、ローカルマシンだけにアクセスを限定する
まず、公開するサーバーとローカル環境の各種プログラムの存在と位置、およびバージョン確認。これが違ってたら公開するサーバーにローカルマシンを合わせる。あまりに違ってたらあきらめる。Apache 1.3系と2.x系の違いくらいだったらなんとかなる。プログラムのパスが違う場合はシンボリックリンク張っておく。↓例
% ln -s /usr/bin/php /usr/local/bin/php
次に、Apache。ちなみに、Macの Apacheは version 1.3.33。
/etc/httpd/httpd.conf を編集し、名前ベースのバーチャルホスト を設定する。VirtualHostの DocumentRootに AllowOverride Allを設定して、あとは DocumentRoot以下の .htaccess で公開サーバと設定を合わせればよいようにしておく。
# アクセスをループバックに限定して、他のマシンからアクセスされないようにする。 BindAddress 127.0.0.1 ... Port 80 ... NameVirtualHost *:80 ... <VirtualHost *:80> ServerName groundwalker.com DocumentRoot /Users/[user]/www/groundwalker.com </VirtualHost> <Directory "/Users/[user]/www/groundwalker.com"> AllowOverride All # その他必要なら追加 </Directory>
他のサイトのテスト環境を追加するときは VirtualHostと Directoryディレクティブを追加すればよい。
php, perl 使うので↓あたりのコメントをはずす。
#LoadModule php4_module libexec/httpd/libphp4.so ... #AddModule mod_php4.c ... # AddHandler cgi-script .cgi
次は /etc/hosts の設定。127.0.0.1(ループバック)にエイリアスつけちゃう。公開サイトにアクセスするときは元に戻せばいい。 と思ったけど、Mac OS X はデフォルトでは /etc/hosts を見ない。Linuxにあるような host.confで order指定なんてのもない。 えーと、hostsを有効にし、かつ、優先させるには NetInfoマネージャの設定をしなければならないらしい。(情報元 Ryosuke KATSU's Page: Diary: Jul (2), 2003)
% sudo -s % niutil -create . /locations/lookupd % niutil -create . /locations/lookupd/hosts % niutil -createprop . /locations/lookupd/hosts LookupOrder FFAgent CacheAgent NIAgent DNSAgent NILAgent % kill -HUP `cat /var/run/netinfo_local.pid` % kill -HUP `cat /var/run/lookupd.pid`
FFAgent が Flat-File-Agent の略らしく = /etc/hostsファイルということらしい。で、やっと、/etc/hostsの設定
#127.0.0.1 localhost 127.0.0.1 localhost groundwalker.com
サイトのデータを /Users/[user]/www/groundwalker.com/ に展開。User/Groupオーナーを適切に設定。
終わり。
Comments (2)
% niutil -createprop だけれども、先に /location/lookupd/hosts がないとエラーになるので、niutil -create で先に作っておく必要があるよ。
from groundwalker | 2007年05月12日 19:58
2007年05月12日 19:58
Apache2 では BindAddress, Port ディレクティブは廃止された。
Listen 127.0.0.1:80
と指定するべし。
from groundwalker | 2007年09月06日 11:01
2007年09月06日 11:01