Page-ID:CGI-Debug-Env-MS

PerlによるCGIのデバッグ環境構築


この文書は、CQ出版社発行のOpen Design誌98/8月号に掲載したものの一部を、Open Design誌編集部 今 一義様のご好意により転載の許可を頂き、加筆修正して転載したものです。


実践インストール&設定

MS IIS/PWS

1.インストール
 オプションパックCD-ROMのsetup.exeを実行すると、専用インストールプログラムによって、NT-S、NT-WS、95に応じたセットがインストールされます。ここでは、NT-WSでインストールを行います。

図 PWSインストール1











 最初の画面で「次へ」をクリックすると、使用許諾画面に変わります。「同意する」にしないと先に進めないので同意すると、インストール構成の画面になります(図 PWSインストール2)。
 
 


図 PWSインストール2










 インストール構成は最小、標準、カスタムとあります。CGI関連のファイルは標準構成でインストールされるのですが、標準構成ではISMやヘルプファイルが導入されません。ISMがないと拡張子とPerlの関連付けなどの追加設定ができませんので、一旦標準でインストールした後に再度setup.exeを実行してISMを追加インストールするか(図 PWSインストール5)、カスタムインストールでISMを選択してインストールする必要があります。(図 PWSインストール4・5)
 
 


図 PWSインストール3


 
 

図 PWSインストール4


 
 

図 PWSインストール5











 標準インストールでは、次にWWWのルートディレクトリの設定となります(図 PWSインストール6)。デフォルトでは、C:\Inetpub\wwwrootとなっています。
 
 


図 PWSインストール6










 この後、暫く自動的にインストールが行われます。インストールが終わると完了のメッセージ画面となりますので、「完了」をクリックしてインストールプログラムを終了します。その後、少々処理が行われから再起動のメッセージが現れます。再起動するとIIS/PWSが自動起動されるようになります。
 IIS/PWS3.0が既に導入されていると自動的にバージョンアップされますが、その際レジストリでperl.exe %s %sとしていた拡張子の関連付けがperl.exe %S %Sと大文字になってしまい、スクリプトファイルが受け渡せなくなって動作不良になります。これは、ISMでの修正が必要となります。
 

2.設定
(1)CGI専用ディレクトリの設定

 CGIは、デフォルトで/Scriptsなどの特定の仮想ディレクトリで実行できるよう設定してあります。しかし、導入したばかりのMS-IIS/PWSでは、 CGIの対象は.aspなどの独自スクリプトの他は.exe 等に限られています。したがって、 CMD(拡張子.cmd)や BAT(拡張子.bat)ファイルはCGIスクリプトとして使用できませんし、無論.plファイルも対象外です。
拡張子.cgiや.plを使う場合、NTにおける拡張子と実行プログラムの関連づけが必別途必要になります。また、3.0からアップグレードした場合、レジストリからデータが移行されますが、その際%sが%Sになってしまうようで、Perlプログラムへの引数の受け渡しがうまくできなくなるので、再設定が必要になります。
登録は、以下のように行います。

 まず、ISM管理コンソールで動作メニューあるいはマウスの右ボタンを使って、Webサイトあるいは特定の仮想ディレクトリのプロパティを開きます。次に、ホームディレクトリタブをクリックしてプロパティ画面中段右側の構成ボタンを押します(図 サービスマスタプロパテ)。なお、ルートディレクトリでもCGIを実行する場合は、アクセス権の実行をチェックしておきます(図はスクリプトをチェックしていますが、実行(スクリプトを含む)の方です)。
 
 

図 サービスマスタプロパティ





 アプリケーションの構成画面となるので、アプリケーションのマッピングタブをクリックし、追加ボタンを押します(図 アプリケーションのマッピング)。
 
 

図 アプリケーションのマッピング





 .plや.cgiなどの拡張子とperl.exeまでの適切なパスなどを記入し、OKボタン・適用ボタンを押してシステムに反映します(図 拡張子マッピング)。
 
 

図 拡張子マッピング



 CGIディレクトリの追加は、ISMの管理コンソールからサイト(通常既定のWebサイト)をクリックして動作メニュー→新規作成→仮想ディレクトリを選択すると起動される新しい仮想ディレクトリのウィザードで行います。

なお、CGIを実行するディレクトリには、仮想ディレクトリのプロパティで アクセス権の実行をチェックしておきます。



(2)SSIの設定
3.0までのバージョンではexecタグはサポートされておらず、別途ASP(Active Server Pages)の導入が必要でした。4.0以降では、インストール当初から.shtml、.shtm、.stmの拡張子を持つファイルがSSIの対象となっており、アクセスカウンタ等に利用される<!-- #exec cgi=" counter.pl?" -->のような一般的な構文もサポートされているので、特に設定は必要ありません。
 但し、4.0では、<!-- #exec cmd="xxx" -->の実行には、レジストリで SSIEnableCmdDirective をTRUEにするという設定が必要となっています。 設定方法はヘルプ( IIS -> 管理者用リファレンス -> レジストリ -> WWWサービスのレジストリエントリ中の「SSIEnableCmdDerective」項 )を参考にしてください。 一部引用すると、

 レジストリ
HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet
 \Services
  \W3SVC
   \Parameters
に「SSIEnableCmdDirective」を追加して、値を"1"に設定します("DWORD値" で作成し、1をセットします)。
(注)レジストリの修正に関しては自己責任となります。

これについては、Microsoftがセキュリティに問題があると考えている為、初期設定で禁止状態としているのでしょうから、 あえて必要なければ、<!-- #exec cgi="xxx" -->を 利用されることをお勧めします。

  また、導入時の設定ではPerlスクリプトのパイプやバッククォートがうまく機能しなくなっています。 対応策は、MS IIS/PWSでのCGI Q&Aを参照して下さい。

 なお、IIS/PWSでは、SSI機能は外部プログラムの一種であるダイナミックライブラリリンク(dll)で実現されており、MSが提唱するISAPI(Internet Server Application Programing Interface)というインターフェースを通してWWWサーバと連携して動作する仕組みになっています。


ご意見は、 電子メールまたは 連絡用ページでお願い致します。
Perl初心者の部屋へ戻る。