WindowsでCGIを動かすには?

とほほのWWW入門 > とほほのCGI入門 > WindowsでCGIを動かすには?
1999年11月17日版初版、2000年8月30日更新
  • DCOM95日本語版のダウンロードページが移動していた(2000.8.30)
  • #!/usr/local/bin/perlを記述していたのを削除(2000.8.14)
  • オンラインにするという注意書きを追記(2000.5.28)
  • Netscapeのプロキシ問題について追記(2000.1.16)
  • 「ActivePerlのセキュリティ問題を改善しておく」を追記(1999.12.9)

はじめに

CGIを設置するのに、いちいちプロバイダに接続していたのでは電話代がかかったりします。ここでは、自宅で、Windowsマシン(95/98/NT)だけで、PerlによるCGIを動かす手順について説明します。

PerlはActiveState社の「ActivePerl」を用います。ウェブサーバーはマイクロソフト社の「IIS」や「Personal Web Server」などいろいろありますが、ここでは手軽な「An HTTPD」を用います。

DCOM95 for Windows 95をインストールする(Win95のみ)

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
http://www.microsoft.com/com/dcom/dcom95/dcom1_3.asp

私は日本語版のdcom95.exe(1,192KB)をダウンロードしました。インストールは簡単で、dcom95.exeをダブルクリックしてインストールし、最後にマシンを再起動するだけでした。

ActivePerlをインストールする

ActivePerlはWindows上で動作するPerlです。ActiveState社が開発しています。昔は「Perl for Win32」という名前でしたが、マイクロソフト社からの資金援助を受けて、現在では「ActivePerl」という名前になっています。

ActivePerlは以下のページからダウンロードできます。英語ページですが、目立つところにあるのでなんとか見つかると思います。

 http://www.activestate.com/

私は、APi518e.exe(5,006KB)というファイルをダウンロードしました。現在はバージョンが多少あがっているかもしれません。APi518e.exeをダブルクリックすると、インストールが始まります。マシンスペックやOSにもよるのかもしれませんが、インストールには(マシンが固まってしまったかと思うくらい)結構な時間がかかることがあります。

ActivePerlのセキュリティ問題を改善しておく (1999.12.9追記)

また、IE4.0以上がインストールされている状態でActivePerlをインストールし、インストールオプションにPerlScriptを選んだ場合は、セキュリティ対策のために以下のレジストリを変更しておくことをオススメします。

レジストリは、[スタート]-[ファイル名を指定して実行] で、REGEDIT.EXE または REGEDT32.EXE を起動して変更してください。

  □ HKEY_LOCAL_MACHINE
  └□ SOFTWARE
    └□ ActiveState
      └□ PerlScript
        └□ 1.0
          └□ EnabledZones 0x00000010 → 0x00000000

AN HTTPDをインストールする

AN HTTPD」は、中田氏が開発・配布されている、Windows上のウェブサーバーソフトです。下記のページからダウンロードできます。インストールは簡単、解凍するだけで完了です。
  http://www.st.rim.or.jp/~nakata/

AN HTTPDを設定する

ここでは、フォルダの構成が次のようになっていると仮定します。フォルダ構成が異なる場合は、適切に読み替えて設定してください。

 C:\HomePage - 通常のHTMLファイルを置くフォルダ
 C:\HomePage\cgi-bin - CGIスクリプトを置くフォルダ
 C:\Perl\bin\perl.exe - ActivePerlの実行コマンドの場所

AN HTTPDの設定は次の手順に従ってください。

AN HTTPDを解凍してできた httpd.exe を起動する。
タスクバーの端に表示される黄色いアイコンをクリックする。
[オプション(O)]メニューの[一般(G)...]を実行する。
[一般]タブの[ドキュメントルート]に、C:\HomePage を入力する。
[.pl,.cgiの実行プログラム]に、C:\Perl\bin\perl.exe を入力する。
[エイリアス]タブの /cgi-bin や /scripts のチェックをはずす。
[OK]ボタンを押す。

まずはHTMLファイルを読めるかテストする

まずは、通常のHTMLファイルを、AN HTTPD経由で読めるか確かめてみます。

適当な内容の C:\HomePage\test.html を作成する。
ブラウザを起動する。
[ファイル]-[開く]などで http://localhost/test.html を開く。

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のテストを行ってみます。次のような内容の、簡単な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を動かす場合は下記の点が異なりますので注意してください。

(1) AN HTTPDの通常の設定では1行目の #!/usr/local/bin/perl を無視しますが、UNIXサーバーではこの行を参照しますので、サーバーのperlの場所に合わせて適切に変更してください。

(2) バイナリデータを扱う場合、Windowsではopen()でオープンしたハンドルに対してbinmode()でバイナリモードに変更してやる必要があります。

(3) ActivePerlのオプションであるPerlScriptをインストールした人は、セキュリティに関して十分に注意し、レジストリの修正を忘れないようにしてください。


Copyright (C) 1999-2000 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwcgi6.htm