インターネット&PC120%活用:インターネット活用編

ローカルサーバー環境でCGIのテスト(anhttpd)

 

AnHTTPDのインストールは簡単です。とりあえず、解凍すれればほぼデフォルト設定のままで使えてしまえるので
appacheなんかよりは、格段にとりつきやすいと思います。

1 anhttpdの入手とインストール

まずは、以下のサイトからファイルをダウンロードしましょう。
A.Nakata's httpd HomePage


解凍すると、以下のようなフォルダ構成になります。(下は、anhttpdフォルダに解凍した場合の例です)
c:\anhttpd\
  | +-- cgi
  | +-- cgi-bin
  | +-- httpd-docs
  | +-- isapi
  | +-- maps
  | +-- Scripts
  | +-- ssi


上記の例で言うと、anhttpdフォルダにhttpd.exeという実行ファイルがあります。起動すると、タスクバーに
アイコンが現れます。
とりあえず、この状態でデフォルト設定のままでも使用可能(の場合も多い)です。
anhttpdフォルダにtest.cgiというcgiファイルを置いた場合、ブラウザー上でURLを http://127.0.0.1/test.cgi 
と指定すれば、test.cgiが実行されます。


2 設定

タスクバーのアイコンを右クリックして「オプション一般」を選択すると次のような画面が開きます。この画面で
各種設定が可能です。もう少し使いやすくするために、いくつか設定してみましょう。

まず[一般タブ]を選び各項目を設定してみましょう。

 (図1)

ほとんどの項目はデフォルト設定のままでいいと思います。以下注意ポイントだけ、みてみましょう。
HTTPサーバ機能: デフォルトでチェックされているので、このままでO.K.
ドキュメントルート(図1−@): C:\anhttpdに解凍した場合は、「C:\anhttpd」と設定されているはずです。
ポート: デフォルトで80。特別に変更する理由がなければこのままでO.K.
デフォルトインデックス: デフォルトではindex.htmlとなっているはずです。index.htmを使っている人は、
                 index.htmにしておけばいいでしょう。
仮想パス(図1−A): デフォルトではチェックなし。使用する場合は以下のように設定します。
CGIファイル(test.cgi)を C:\anhttpd\kasai\public_htmlフォルダにおいた場合(C:\anhttpd\kasai\public_html\test.cgi)、
ブラウザーで表示するにはURLは http://127.0.0.1/kasai/public_html\test.cgi でアクセスします。
これでは、長たらしいので、図1のように仮想パス 「/~kasai」を作って、このローカルパスに設定すると
http://127.0.0.1/~kasai/test.cgi でアクセスできるようになります。
上記の設定は、ドキュメントルートからのpublic_htmlに至る道筋を「/~kasai」で代用しますよ!という意味です。

この時点での「C:\anhttpd」の中はこんな構造になっているはずです。

c:\anhttpd/
  | +-- kasai /
  |    | +-- public_html /
  | +-- cgi /
  | +-- cgi-bin /
  | +-- httpd-docs /
  | +-- isapi /
  | +-- maps /
  | +-- Scripts /
  | +-- ssi /

SSIを許可する: デフォルトでチェック。このままでO.K.
CGIを許可する: デフォルトでチェック。このままでO.K.
.pl .cgi (図1−B): 実行プログラムの欄にPerl実行プログラム(通常perl.exe)までのパスが正確に設定
されているか確認して下さい。ここが間違っていると、当然ですがCGIは動作しません。
Perlを普通にインストールすると、実行ファイルは C:\perl\bin\perl.exe にインストールされるはずなので、
上記のような設定が一般的だと思います。
その他、rubyなどを使用する場合は、「追加」ボタンで必要項目を設定して下さい。

あと、最初から設定しておいた方が便利なのは「エイリアス」でしょう。
「エイリアス」タブの設定
 (図2)

ここで、一般パスを設定すると、おそらくいろいろ実験するのに便利になると思います。
自分のサイト関連のファイルは当たり前の話ですが、「C:\anhttpd\kasai\public_html」には置いていない
はずです。
おじさんの場合は、CGI実験用ファイルは「C:\kasai\cgi」と言うフォルダに全てをしまい込んでいます。
Webサーバーを導入したのですから、当然このフォルダ内のファイルもローカル環境のサーバーで表示
できないと意味がありません。が、これらは見れば分かるように、Webサーバーのドキュメントルートからは
全く外れた場所にありますので、ブラウザーでアクセスできません。
こう言うときに必要なのが「エイリアス」の設定です。

図2のように、一般パスのところに設定を追加しておきましょう。
おじさんの場合は、「C:\kasai\cgi」までのルートを「/home」で代用するという設定にしました。
これで、C:\kasai\cgi\test.cgi は http://127.0.0.1/home/test.cgi でアクセスできるようになります。
以下の通りです。




test.cgiのソースは以下の通り

#!/perl/bin/perl

print ("Content-type: text/html\n\n");
$name="KASAI";
print <<"HTML_END";
<html>
<head><title>CGI TEST</title></head>
<body><hr>HELLO! My Name is $name.<br><hr>     
<br>
</body>
</html>
HTML_END
exit;


3 うまく動作しない時

基本的には、以上の設定でCGIのテストが可能なはずです。anhttpdでうまく動作させられない時は、
おそらく単純な設定ミスが多いと思います。
うまく動作しない場合は、設定を見直して下さい。例えば、perlの実行プログラムのパスの設定が違うとか
(.pl .cgi実行プログラムのパス設定)、
2つ同じ仮想パスを設定していた(仮想パス /home を2つ設定していたなど −>当然、優先される方しか
アクセスされません)という単純ミスが多いと思います。(以上、おじさんの経験。ばかばかしいミスでした)

そうでなければ、CGIファイルのスクリプトがミスっている(#! ではじまるPerlのパスがミスっているとか)、
文法の間違い(最後に exit; がないとか)といった原因が考えられます。

指定したページ、CGIファイルが表示されない、アクセスできない、「ページが表示できません」というエラーが
出る場合は、「表示/インデックス」タブの「インデックスリストを表示」にチェックを入れ、「一般」タブのデフォルト
インデックスを空欄にしてから、ブラウザーで http://127.0.0.1/ にアクセスしてみて下さい。インデックスリスト
が表示されて、今の設定で見える(アクセスできる)フォルダが表示されますので、設定ミスの推定に役立つ
でしょう。

TopPage


inserted by FC2 system