CGIの動作を確認するのに、いちいちプロバイダに接続していたのでは電話代がかかったりします。ここでは、自宅で、Windowsマシン(95/98/NT)だけで、PerlによるCGIを動かす手順について説明します。
PerlはActiveState社の「ActivePerl」を用います。ウェブサーバーはマイクロソフト社の「IIS」や「Personal Web Server」などいろいろありますが、ここでは手軽な「An HTTPD」を用います。
Apache を用いる方法については「WindowsでApacheを使おう」を参照してください。(2001.2.4追記)
Windows 95にActivePerlをインストールするためには「DCOM95 for Windows 95」を最初にインストールしておく必要があります。Windows 98やWindows NTの場合はこの作業は不要です。
「DCOM95 for Windows 95」の日本語版、および英語版は以下のページからダウンロードできます。
http://www.microsoft.com/japan/com/dcom/dcom95/dcom13.asp私は日本語版のdcom95.exe(1,192KB)をダウンロードしました。インストールは簡単で、dcom95.exeをダブルクリックしてインストールし、最後にマシンを再起動するだけでした。
ActivePerlはWindows上で動作するPerlです。ActiveState社が開発しています。昔は「Perl for Win32」という名前でしたが、マイクロソフト社からの資金援助を受けて、現在では「ActivePerl」という名前になっています。
ActivePerlは以下のページからダウンロードできます。英語ページなのでダウンロード方法も紹介したいのですが、掲載ページやダウンロード方法がコロコロ変わるので、ちょっと説明が追いつきません。
http://www.activestate.com/私は、APi518e.exe(約5MB)というファイルをダウンロードして、それをダブルクリックしてインストールしました。マシンスペックやOSにもよるのかもしれませんが、インストールには(マシンが固まってしまったかと思うくらい)結構な時間がかかることがあります。
現在は、まず、Microsoft Installer(InstMsi.exe:1.5MBくらい)をダウンロード&インストールして、その後、ActivePerl(約8.3MB)をダウンロードしてインストールするようです。(2000.10.29追記)
また、IE4.0以上がインストールされている状態でActivePerlをインストールし、インストールオプションにPerlScriptを選んだ場合は、セキュリティ対策のために以下のレジストリを変更しておくことをオススメします。
レジストリは、[スタート]-[ファイル名を指定して実行] で、REGEDIT.EXE または REGEDT32.EXE を起動して変更してください。
□ HKEY_LOCAL_MACHINE └□ SOFTWARE └□ ActiveState └□ PerlScript └□ 1.0 └□ EnabledZones 0x00000010 → 0x00000000
「AN HTTPD」は、中田氏が開発・配布されている、Windows上のウェブサーバーソフトです。下記のページからダウンロードできます。インストールは簡単、解凍するだけで完了です。
http://www.st.rim.or.jp/~nakata/ここでは、フォルダの構成が次のようになっていると仮定します。フォルダ構成が異なる場合は、適切に読み替えて設定してください。
AN HTTPDの設定は次の手順に従ってください。
まずは、通常のHTMLファイルを、AN HTTPD経由で読めるか確かめてみます。
localhost というのは、自分自身のマシンを示す名前です。うまく設定できていれば、http://localhost/test.html というアドレスの文書をブラウザで開くことができるはずです。これで、自分のマシンがウェブサーバーとして機能するようになりました。
「接続しますか?」のようなダイアログが表示される場合、Internet Explorerであれば[ファイル]-[オフライン作業]のチェックを外しておく、Netscape Navigatorであれば[ファイル]-[オンラインにする]を実行しておくなど、いろいろやってみてください。あくまで、自分のマシンから自分のマシンへオンラインで接続(電話はかけないで)することにより、CGIは動作します。
Netscape Navigatorでプロキシの設定をされている場合は、[編集]-[設定]-[詳細]-[プロキシ]-[手動でプロキシを設定する]-[表示]の[次で始まるドメインにはプロキシサーバを使用しない]の欄に localhost を追加しておいてください。
また、localhost でうまくいかない場合は、localhost の代わりに 127.0.0.1 というアドレスで試してみてください。127.0.0.1 は、自分自身を示す特別なアドレスです。
次に、簡単なCGIのテストを行ってみます。次のような内容の、簡単なCGIスクリプト(C:\HomePage\cgi-bin\test.cgi)を作成してください。
print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>CGIテスト</title>\n"; print "</head>\n"; print "<body>\n"; print "CGIのテスト\n"; print "</body>\n"; print "</html>\n";
これを、ブラウザから http://localhost/cgi-bin/test.cgi というアドレスで呼び出すと、「CGIのテスト」が表示されるはずです。以上で、WindowsパソコンでCGIを動かす環境が整いました。あとは、自分でCGIスクリプトをいろいろ改造、開発しながら試してみてください。
UNIXサーバーでCGIを動かす場合と、WindowsでCGIを動かす場合は下記の点が異なりますので注意してください。
AN HTTPDの通常の設定では1行目の #!/usr/local/bin/perl を無視しますが、UNIXサーバーではこの行を参照しますので、サーバーのperlの場所に合わせて適切に変更してください。
バイナリデータを扱う場合、Windowsではopen()でオープンしたハンドルに対してbinmode()でバイナリモードに変更してやる必要があります。
ActivePerlのオプションであるPerlScriptをインストールした人は、セキュリティに関して十分に注意し、レジストリの修正を忘れないようにしてください。