最近管理するサイトがやたらに多くなった。各サイトで大幅な更新をする際に CGI の動作確認をするのだが、その度にローカルテスト用 Apache(Windows)のデータディレクトリ、htdocs を総入れ替えし、ブラウザで 127.0.0.1 にアクセスしてやっていた。
 別に 127.0.0.1 以下のディレクトリに分けてアクセスしてもいいのだが、ルートパスが変わると本番サイトにアップしたときに予想できないエラーが出るのが怖い。でもいい加減メドくなってきたのでちょっといじってみることに。

 まずは Windows の hosts(C:\WINDOWS\System32\drivers\etc\hosts)をいじって

127.0.0.1 local.mezzo.jp

のようにテスト用ドメイン local.mezzo.jp を追加し、ブラウザでそのドメインにアクセスすると内部参照するように設定。さらに Apache のバーチャルホスト設定を使って管理している各サイト用のディレクトリ、たとえば local.mezzo.jp ならば htdocs 内に作った _mezzo.jp フォルダを仮想ルートディレクトリに設定することにした(フォルダ名の先頭にアンダースコア「 _ 」を入れているのはフォルダ表示の際に先頭に並ぶようにするため)。

 ローカルテスト用のWindows版 Apache 2.2 のバーチャルホストを有効にするために外部設定ファイル httpd-vhosts.conf に


<VirtualHost *:80>
  ServerName localhost.mezzo.jp
  DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/_mezzo.jp"
  ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"
  <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/_mezzo.jp">
    AllowOverride None
    Options FollowSymLinks ExecCGI
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

と追加編集し、基本設定ファイル httpd.conf の


#Include conf/extra/httpd-vhosts.conf

部分のコメントアウトを外して httpd-vhosts.conf を有効にして Apache を再起動すると


ScriptAlias takes two arguments, a fakename and a realname

だとか


Could not reliably determine the server's fully qualified domain name, using 192.168.xxx.xxx for ServerName

などとかいろいろなエラーを吐く。何度か設定をいじったりいろいろコメントアウトしたりするが原因がよくわからない。何せ自宅サーバはこの設定で動いているし(NetBSD だけど)。

 もーいい加減メンドクサクなって以下の行を消したら突然動いたw


ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"

 どうやら httpd.conf に記述してあるエイリアス設定とかち合った模様。別に CGI は DocumentRoot 以下ですべて動くように設定してるんだからエイリアス設定は要らないのに、冷静にならないとそういう単純なことに気づかない。ていうか最初のエラーをよく読めばわかるじゃん…

 Apache 走らせてブラウザで無事 local.mezzo.jp が表示されたので、他のサイトも含め全部で4つのサイトのテスト環境設定も追加し、ブラウザで表示を確認したらブックマーク。本番サイトと区別するために favicon.ico を Apache のものに入れ替えて設定完了。はふう。

 まあ、それはそうと肝心の CGI をいじる時間がなくなってしまった…

アバター画像

投稿者 mezzo forte

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)