2016/02/15(月) [n年前の日記]
#1 [windows] Windows10上のIISを設定していたり
昨日、Windows10上で 04WebServer や XAMPP (Apache) が動かせなくて、IISを無効に設定してどうにかしてたのだけど。
もしかすると、最初から Windows10上で有効になってる IIS を使って、普段のアレコレの動作確認をしたほうがいいのかなと思えてきて。
特に、XAMPP上で Perl CGI を動かそうとした場合、cgiファイルの一行目に書いてある _ が ―― 「#! /usr/bin/perl」の記述が問題になるわけで。ソレを解決するアレコレがちと面倒なわけですよ。
_Shebang 行について - ぱるも日記
_Windows 環境で /usr/bin/perl を手っ取り早く実現する方法 - Open MagicVox.net
_スクリプト実行パス(shebang)の設定 | NotePress
_Windows上で「#!usr/bin/perl -w」のままMovable Typeを利用する - 小さな世界ブログ
_スクリプト実行パス(shebang)の設定に関して - Perlの設定と利用 - XAMPPの使い方
_Unix の CGI ファイルを Windows 上で動かす
IIS + ActivePerl なら、そのあたり楽になったりしないかなと。 *1
てなわけで、Windows10上で IIS も使えるように、設定をし直しているところ。ちなみに Perl は ActivePerl を使用。
もしかすると、最初から Windows10上で有効になってる IIS を使って、普段のアレコレの動作確認をしたほうがいいのかなと思えてきて。
特に、XAMPP上で Perl CGI を動かそうとした場合、cgiファイルの一行目に書いてある _ が ―― 「#! /usr/bin/perl」の記述が問題になるわけで。ソレを解決するアレコレがちと面倒なわけですよ。
_Shebang 行について - ぱるも日記
_Windows 環境で /usr/bin/perl を手っ取り早く実現する方法 - Open MagicVox.net
_スクリプト実行パス(shebang)の設定 | NotePress
_Windows上で「#!usr/bin/perl -w」のままMovable Typeを利用する - 小さな世界ブログ
_スクリプト実行パス(shebang)の設定に関して - Perlの設定と利用 - XAMPPの使い方
_Unix の CGI ファイルを Windows 上で動かす
IIS + ActivePerl なら、そのあたり楽になったりしないかなと。 *1
てなわけで、Windows10上で IIS も使えるように、設定をし直しているところ。ちなみに Perl は ActivePerl を使用。
◎ IISの有効化。 :
デスクトップの検索窓から、「Windowsの機能の有効化または無効化」と打ち込めばリストアップされるのでクリックして起動。以下のチェックを入れて、機能を有効化してみた。
◎ wwwroot のアクセス制御を変更。 :
デフォルトでは、C:\inetpub\wwwroot\ にファイルを置いておくと、IIS経由でそのファイルを閲覧できるようになるのだけど。ファイルを追加しようとしても怒られてしまったので、アクセス制御を変更。
エクスプローラで該当フォルダを右クリック → プロパティ → セキュリティ → 編集 → 追加 → everyone と打って名前の確認 → OK → Everyone にフルコントロールを与える。
エクスプローラで該当フォルダを右クリック → プロパティ → セキュリティ → 編集 → 追加 → everyone と打って名前の確認 → OK → Everyone にフルコントロールを与える。
◎ Perl CGI を動かせるようにした。 :
まず、IISマネージャを起動。デスクトップの検索窓で「IIS」と打ち込めば、「インターネット インフォメーション サービス(IIS)マネージャー」がリストアップされる。クリックして起動。
巷の解説ページでは、perl.exe じゃなくて PerlIS.dll や perlex30.dll を指定してる事例もあったのだけど。 _PerlIS.dllで動作しているかの確認方法 - Perl表技集 というページによると…。
perl.exe の後に続く、「"%s" %s」の指定は、 _a.hanai 公開モノ置き場 | IISをinvestigate : CGI設定の「%s %s」とは? で解説されてた。CGIファイル名と、CGIに渡す引数が入るらしい。
動作確認は、例えば _PerlIS.dllで動作しているかの確認方法 - Perl表技集 で紹介されてる内容を、checkenv.cgi 的なファイル名で C:\inetpub\wwwroot\ 以下に保存して、http://localhost/checkenv.cgi をブラウザで開く、とかでいいんじゃないかなと…。
とりあえず、上記の設定をしたら、IIS上でも Perl CGI を動かせるようになった、ように見えた。
- 左側ペインで、コンピュータ名を選択。
- 真ん中のペインで、IIS → ハンドラーマッピングをダブルクリック。
- 右側のペインで、スクリプトマップの追加、を選択。
要求パス(P): *.cgi 実行可能ファイル(E): "ActivePerlインストール場所\bin\perl.exe" "%s" %s 名前(N): CGI
要求パス(P): *.pl 実行可能ファイル(E): "ActivePerlインストール場所\bin\perl.exe" "%s" %s 名前(N): PLもしかしたら .pl の指定は要らないのかもしれない…?
- 戻るボタンで戻って、IIS → MIMEの種類、を選択。
- 右側のペインで、追加、を選択。以下の2種類を入力。
ファイル名の拡張子(E): .cgi MIMEの種類(M): application/x-httpd-cgi
ファイル名の拡張子(E): .pl MIMEの種類(M): application/x-perl.plの指定は間違ってるかもしれない…。
巷の解説ページでは、perl.exe じゃなくて PerlIS.dll や perlex30.dll を指定してる事例もあったのだけど。 _PerlIS.dllで動作しているかの確認方法 - Perl表技集 というページによると…。
PerlIS.dllにはHTTPヘッダを自動で出力してくれる小さな親切(余計なお世話)機能があって自分で出力しようとしたHTTPヘッダがHTTPヘッダではなく本文として扱われてしまって、CGIプログラムが上手く動かなくなるという問題があります。ということらしいので、perl.exe を指定しておくことにした。
perl.exe の後に続く、「"%s" %s」の指定は、 _a.hanai 公開モノ置き場 | IISをinvestigate : CGI設定の「%s %s」とは? で解説されてた。CGIファイル名と、CGIに渡す引数が入るらしい。
動作確認は、例えば _PerlIS.dllで動作しているかの確認方法 - Perl表技集 で紹介されてる内容を、checkenv.cgi 的なファイル名で C:\inetpub\wwwroot\ 以下に保存して、http://localhost/checkenv.cgi をブラウザで開く、とかでいいんじゃないかなと…。
とりあえず、上記の設定をしたら、IIS上でも Perl CGI を動かせるようになった、ように見えた。
◎ FTPサービスを有効化。 :
せっかくだから、FTPサービスも使えるように設定してみようかと。以下を参考に作業。
_IIS の FTP 7.5 のインストール | たんたか
_IIS の FTP 7.5 を構築 環境:2008R2SE|Takaのブログ
IISマネージャで、左側ペインの「サイト」を右クリック → FTPサイトの追加、を選択。ウイザードが開くので入力していく。
FTPでアクセスされるフォルダに、ACL とやらを設定しないと読み書きできないらしい。管理者権限でDOS窓を開いて以下を入力。
更に、IISマネージャで、FTP認証、FTPの承認規則、FTPディレクトリの参照、のあたりを設定。
一応、一度は、上記の設定をして、DOS窓から ftp localhost でアクセスできるところまでやってみたのだけど。
考えてみたら、どうせローカルでしかファイルのやり取りをしないし。この後、他のPCからアクセスできるようにするためには、ファイアウォール設定もしなきゃいけなくて、それもなんだか面倒だし。
てなわけで、結局はFTPサイト設定ごとバッサリ削除してしまった。FTPサービスは使わないことにしようかなと。
_IIS の FTP 7.5 のインストール | たんたか
_IIS の FTP 7.5 を構築 環境:2008R2SE|Takaのブログ
IISマネージャで、左側ペインの「サイト」を右クリック → FTPサイトの追加、を選択。ウイザードが開くので入力していく。
FTPサイト名: Default FTP Site 物理パス: C:\inetpub\ftproot バインドはデフォルト SSLは「無し」 認証: 匿名 アクセス許可: 匿名ユーザ 読み取り、書き込みにチェックを入れる
FTPでアクセスされるフォルダに、ACL とやらを設定しないと読み書きできないらしい。管理者権限でDOS窓を開いて以下を入力。
cacls "c:\inetpub\ftproot" /G IUSR:C /T /Eオプションの意味は以下の通り。
/T 現在のディレクトリとすべてのサブディレクトリにある指定されたファイルの ACL を変更します。 /E ACLを置き換えずに編集します。 /G ユーザー名:アクセス権 C:変更 (書き込み)
更に、IISマネージャで、FTP認証、FTPの承認規則、FTPディレクトリの参照、のあたりを設定。
- 基本認証を有効にしてみたり。
- 匿名認証を無効にしてみたり。
- 特定ユーザが承認されるようにしてみたり。
- 仮想ディレクトリにチェックを入れたり。
一応、一度は、上記の設定をして、DOS窓から ftp localhost でアクセスできるところまでやってみたのだけど。
考えてみたら、どうせローカルでしかファイルのやり取りをしないし。この後、他のPCからアクセスできるようにするためには、ファイアウォール設定もしなきゃいけなくて、それもなんだか面倒だし。
てなわけで、結局はFTPサイト設定ごとバッサリ削除してしまった。FTPサービスは使わないことにしようかなと。
*1: 後になって気づいたけど、IIS + ActivePerl のソレって、Apache の httpd.conf で ScriptInterpreterSource Registry-Strict を指定する方法と似たようなものなのでは…。
[ ツッコむ ]
以上です。