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 を指定する方法と似たようなものなのでは…。
[ ツッコむ ]
#2 [windows] Windows10のスタートボタンが使えなくなってしまった
WIndows10上で色々やってたら、スタートボタン・スタートメニューが動作しない状態になってしまった。スタートボタンをクリックしても、「重大なエラー」「スタートメニューが動作していません」と表示されてしまう。
「サインインをし直して、修復を試みてみるから、サインアウトしてくれ」とメッセージが出ているので、サインアウトボタンを押してサインアウト → サインインしてみるものの、改善してくれない。やっぱり動作しない。
おかしくなる前は、以下のアレコレをやってたような記憶があるけど。どれが原因だろう…。それとも、どれも関係ないのだろうか…。
幸い、タスクバー上のアイコンをクリックすればブラウザ等は起動するので、解決策をググって試したり。
しかし、sfc /scannow も、dism 〜 も、「どのコンポーネントも壊れてねえけど?」と結果メッセージが表示される。しかし、OS再起動しても、やっぱりスタートボタンは使えない。
仕方ないので、システムの復元を使って、04WebServerのインストール前まで戻した。さすがにコレなら、スタートボタンが動作してくれた。
その後、今までやってたはずの作業を一つ一つ試してみたけど、少なくとも IIS を使えるようにするところまで試してもスタートボタンは動作するようで。ただ、Cortana にアプリ名等を打ち込んでた際、「インデックスサービスが無効になってるので有効にしてくれ」とメッセージが表示されて。なんだか怪しい…。
なんとなくだけど、ロック画面に表示するアプリを、訳も分からず選択・設定したあたりが怪しい気がする。あのあたりは、もしかすると、Microsoftアカウントでサインインしてることが前提なのではないか。自分のPCは、Microsoftアカウントでサインインして使ってるPCでは無いし…。スタートボタンが表示されなかった時は、設定 → メールとアカウント、を選んでもずっと処理中のまま何も表示されなかったから、何かアカウントの管理絡みでおかしく…。
あるいは、Cortana の動作に問題があって、スタートボタンも道連れにして、とか。
「サインインをし直して、修復を試みてみるから、サインアウトしてくれ」とメッセージが出ているので、サインアウトボタンを押してサインアウト → サインインしてみるものの、改善してくれない。やっぱり動作しない。
おかしくなる前は、以下のアレコレをやってたような記憶があるけど。どれが原因だろう…。それとも、どれも関係ないのだろうか…。
- 04WebServer 1.92、XAMPP 5.6.15、QuickTime 7.7.9 を再インストール。
- 環境変数PATHの変数タイプを変更して、各記述を %windir% 等の記述に変えてみたり、順番を変更したり。
- IISを有効にする設定をしてみたり。
- デスクトップに作っていた「電源オプション」アイコンを別の場所に移動したり。
- ロック画面に表示するアプリ、とやらの設定を弄ったり。
- BIOS設定を弄ったり。
幸い、タスクバー上のアイコンをクリックすればブラウザ等は起動するので、解決策をググって試したり。
- セーフモードで起動。サインイン画面右下の電源アイコンをクリックして、Shiftキーを押しながら再起動を選べば、セーフモードで起動するためのメニューまで辿り着ける。
- セーフモードで起動後、Win + Xキー → Aキーを押して、管理者権限でコマンドプロンプトを開く。
- sfc /scannow を実行。Windows関連の破損してるファイルが見つかったら修復してくれる、らしい。
- dism /Online /Cleanup-Image /ScanHealth を実行。コレも、Windows関連の破損ファイルを探してくれる、のだとか。
- dism /Online /Cleanup-Image /RestoreHealth を実行。コレも、Windows関連の破損ファイルを修復してくれるとのこと。
しかし、sfc /scannow も、dism 〜 も、「どのコンポーネントも壊れてねえけど?」と結果メッセージが表示される。しかし、OS再起動しても、やっぱりスタートボタンは使えない。
仕方ないので、システムの復元を使って、04WebServerのインストール前まで戻した。さすがにコレなら、スタートボタンが動作してくれた。
その後、今までやってたはずの作業を一つ一つ試してみたけど、少なくとも IIS を使えるようにするところまで試してもスタートボタンは動作するようで。ただ、Cortana にアプリ名等を打ち込んでた際、「インデックスサービスが無効になってるので有効にしてくれ」とメッセージが表示されて。なんだか怪しい…。
なんとなくだけど、ロック画面に表示するアプリを、訳も分からず選択・設定したあたりが怪しい気がする。あのあたりは、もしかすると、Microsoftアカウントでサインインしてることが前提なのではないか。自分のPCは、Microsoftアカウントでサインインして使ってるPCでは無いし…。スタートボタンが表示されなかった時は、設定 → メールとアカウント、を選んでもずっと処理中のまま何も表示されなかったから、何かアカウントの管理絡みでおかしく…。
あるいは、Cortana の動作に問題があって、スタートボタンも道連れにして、とか。
[ ツッコむ ]
以上、1 日分です。