技術資料  TSPB970001 題名    Windows NT + IIS におけるPerlのCGIの使用法 著者(著作権者) (c)竹中 誠 作成    1997年1月13日(最終改訂 1997年1月28日) ファイルサイズ 4KB((max)80 Bytes x 115行) 要旨   Webサーバー計算機のOSがWindows NTで、Webサーバーソフトが IIS(Internet Information Server)の場合に、Perlというプログ ラム言語でかかれたCGIを動かすための設定等をまとめた。 価格   個人的に利用するのは無料。商業的利用はE-mailにて御相談下さい。 目次   1.はじめに      2.Perlの入手と準備      3.IIS設定      4.NT設定      5.CGI設定      6. HTMLファイルの設定      7.まとめ 改訂 Rev.0 97/01/13 Draft作成 Rev.1 97/01/15 BGMさんからの御指摘を反映して修正 Rev.2 97/01/16 BGMさんからの2回目のメールを反映して修正 Rev.3 97/01/16 [4]のWebページの情報を反映して修正 Rev.4 97/01/28 NTとIISのバージョン追記 --------------------------------------------------------------------- 1.はじめに  以前は、インターネットのWebサーバー計算機のOSはUNIXで、サーバーは 、NCSA, CERN, Netscape Commerce Server, Apacheという場合が多かったの です。最近はこのほかに、OSが Windows NT(3.51, 4) で, サーバーが IIS(1, 2)の場合も増えてきたようです。この場合には、設定が少し他と異 なるようですので、設定法の情報を集めてまとめてみました。ただし、私自 身は、いま、NTを使える状況にないので、この資料は、完璧なものではあり ません。不備や間違っているところは、是非御連絡下さい。少しずついいも のにしたいと思います。  IISは、すでにルートディレクトリにインストールされて いるとします。 2.Perlの入手と準備  まず、Perlをダウンロードするディレクトリとして、例えば、  c:\perl  というディレクトリを作りここにPerlのアーカイブ(圧縮)ファイルをダウ ンロードします。  Perlとしては、Windows 95で使えるPerlがWindows NTでも使える ようです。私が、Windows 95で使っているPerl Ver.5.001mは、次のところ から入手しました。  ftp://ftp.lab.kdd.co.jp/CPAN/ports/win32/Perl5/perl5.001m/  CurrentBuild/110-i86.zip 表示の都合上改行しています。サイズは、1.1MBです。zipで圧縮されていま すので、zipを展開できるソフトが必要です。ここの他に、  http://www.perl.hip.com/ からもダウンロードできるようです。 ダウンロードしたファイルを展開(解凍)すると  c:\perl\PERL5 というディレクトリができ、その下のNTT(または、bin)に、PerlのEXEファイ ルとDLLファイルが配置されます。 3.IIS設定  ディレクトリのアクセス権を次のようにします。  c:\inetsrv\wwwroot <ホーム> 読みとり(R) on 実行(X) off  c:\inetsrv\Scripts /scripts 読みとり(R) off(?) 実行(X) on c:\perl\PERL5\NTT(perl.exeのあるディレクトリ,binの場合あり) 実行(X) on 4.NT設定  拡張子"pl"のファイルと"c:\inetsv\Scripts\perl.exe"の実行ファイルを 関連づけるようレジストリエディタ(regedt32.exe)でレジストリの設定を行 う。 HKEY_LOCAL_MACHINE ->System ->CurrentControlSet ->Services ->W3SVC ->Parameters ->ScriptMap に値を追加する 名前: .pl タイプ: REG_SZ 文字列: c:\perl\PERL5\NTT\PERL.EXE %s %s (c:\perl\PERL5\NTTにPERL.EXEがある場合) この設定を有効にするため、この操作後IISをリスタートさせる必要がありま す。  PerlのCGIの拡張子をcgiにしたい場合は、上の名前の".pl"を".cgi"にする といいようです。ただし、こうするとcgiの拡張子のスクリプトは、必ずPerl としてコンパイルされ実行されますので、事情を知らないユーザーが、UNIX のshell script のCGIを実行しようとする可能性もあります。PerlのCGIは、 ".pl"とする方が後の混乱が少ないように思います。 5.CGI設定  PerlのCGIの拡張子を"pl"とする。例えば、"test.cgi"なら、"test.pl"と する。そして、このCGIのソースを  c:\inetsrv\Scripts に置く。CGIで直接使うファイル名は、例えば c:\inetsrv\wwwroot\gb\book1.html というように指定する必要があると思います。"\"は、Perlでは、エスケープ 文字なので、このファイルの文字列を変数に入れて、それを解釈される場所 (二重引用符の中など)に入れるとおかしくなる場合があります。 c:/inetsrv/wwwroot/gb/book1.html でもうまく行くかもしれません(Windows95 + OmniHTTPdの場合これでうまく 行きました)。これなら、解釈されておかしくなることはありません。 ブラウザから使うURLを指定する場所では、"c:\inetsrv\wwwroot"を"/"とする 指定方法か、Perlのソースは、"c:\inetsrv\Scripts"を"/scripts"とする指定 方法を使ってみて下さい。 6. HTMLファイルの設定  例えば、test.plというPerlのCGIをWebページから実行するようにするに は、次のいずれかのタグを使用します。 (1)リンクタグ(その1)(4の"pl"と"perl.exe"の関連づけがされている場合)  test.pl (2)リンクタグ(その2)(4の"pl"と"perl.exe"の関連づけがされていない場合) PERL.EXE, PERLIS.DLL, PERL100.DLLを”c:\inetsrv\Scripts”の下に   コピーしている場合は、次の指定でtest.plを実行できます。       7.まとめ  Windows NT + IISのWebサーバーで、PerlのCGIを使用する際の注意事項をま とめました。ただし、まだドラフト段階でこの通りにしてもうまく行かない場 合もあるかもしれません。この資料のミスやなおした方が良い点はメールにて 御連絡お願いします。 [謝辞]  松林さん、永村さん、LOGを一部引用させていただきました。坂本さん、 メールの一部を引用させていただきました。BGMさん、本資料をみて、まちが いや、4の詳細な設定方法をお教えいただきありがとうございました。 [文献等] [1]Nifty FINETAP MES 4 LOG #674-675, 1996.9.18. [2]坂本, 私信, 1996.11.27. [3]BGM, 私信, 1997.1.15. [4]BGM, 私信, 1997.1.16. [5]http://www.t3.rim.or.jp/~nog/pcpage/iisj.html(このWebページは、 Netscape Navigator 2.02では見えないが、Internet Explorer 2.0では見え ます)