IISの初期設定と動作確認

IISのサービスの制御、仮装ディレクトリ作成、及びASPファイルの動作確認を行ないます。
IISの設定、サービス制御は「インターネットインフォメーションサービス」から行ないます。
コントロールパネル
まず、コントロールパネルを開いて、「管理ツール」を選択して下さい。

管理ツール
「管理ツール」から、「インターネットインフォメーションサービス」を選択します。

インターネットインフォメーションサービス
このような画面が開きますが、「エクスプローラ」ではありません。
ここでは左ペインにある「ローカルコンピュータ」の左の+マークをクリックして開いて下さい。

インターネットインフォメーションサービス
上から順に開いていくと、「既定のWebサイト」が見つかると思います。これがこのコンピュータのWebサーバのルートフォルダになります。既に作成されているフォルダやドキュメントはIISのインストールでデフォルトで作成されたもので、特に必須となるものではありません。

「既定のWebサイト」の実際のフォルダ
今度は「エクスプローラ」の画面ですが、上記の「既定のWebサイト」の実際のフォルダです。通常は、Windowsを立ち上げたドライブのルートにあるInetpubフォルダ配下のwwwrootフォルダです。 先ほど「インターネットインフォメーションサービス」で見た内容のものが並んであるのが判ります。
では、ブラウザで動作を確認してみます。Internet Explorerを起動させて、アドレスバーに「http://localhost/」と入力して、Enterキーを押して下さい。

Internet Explorerで動作を確認してみる。
ブラウザにこのような画面が表示されたでしょうか。ここまでくれば、インストールしたIISが正しく動作していることが確認できたことになります。

「仮装ディレクトリ」を作成します。
さて、これから作成する仕組みでは「既定のWebサイト」にドキュメントを置くことはしません。ここにドキュメントを置いて動かすことは可能なわけですが、Webサービスの起点フォルダですし、この配下にサブフォルダを作っても簡単にディレクトリ参照できてしまうのでセキュリティ面でもお勧めできません。
IISには「仮装ディレクトリ」という仕組みがあって、物理的に配下に置かないフォルダをディレクトリとして登録させることができます。
インターネットインフォメーションサービス
これを利用することにして、まず、このためのフォルダを作成します。ここでは「D:\ASPTEST」にすることにします。
フォルダの作成ができたら、「インターネットインフォメーションサービス」に戻って、「仮装ディレクトリ」の設定を行ないます。

インターネットインフォメーションサービス
このように、「既定のWebサイト」を右クリックして、「新規作成」から「仮装ディレクトリ」を選択します。

仮装ディレクトリの作成ウィザード
「仮装ディレクトリの作成ウィザード」が起動されるので、「次へ」をクリックします。

仮装ディレクトリの作成ウィザードの「エイリアス」
まず、「エイリアス」を指定します。「エイリアス」とはブラウザから参照する時の名前であって、物理フォルダ名とは区別されるので全く別の名前でも構いません。他の「エイリアス」名と重複しない名前を指定して下さい。
ここでは物理フォルダ名と同じ名前としておき、入力したら「次へ」をクリックします。

仮装ディレクトリの作成ウィザードの「ディレクトリ」
次に「ディレクトリ」を指定します。これは言うまでもなく物理フォルダ名のことです。直接入力もできますが、間違いのないように「参照」ボタンから「フォルダの参照」を開いて指定する方が良いと思います。

仮装ディレクトリの作成ウィザードの「フォルダの参照」
「フォルダの参照」で先ほど作成した「D:\ASPTEST」を指定して、OKをクリックします。

仮装ディレクトリの作成ウィザードの「ディレクトリ」
「ディレクトリ」に戻って、表示が「D:\ASPTEST」になっているのを確認して「次へ」をクリックします。

仮装ディレクトリの作成ウィザードの「アクセス許可」
次は「アクセス許可」の設定です。デフォルトで「読み取り」「ASPなどのスクリプトを実行する」だけにチェックが付いていますので、このまま「次へ」をクリックします。
これらはここで紹介する機能に必須ですから外せませんが、他の項目に安易にチェックを付けないようにして下さい。社外に公開しないWebサーバだとしても「書き込み」の許可などはページの改ざんなどの恐れにつながるので充分に注意して下さい。
私が行なっている社内業務のシステムでは、ファイルデータをWebサーバに登録する必要がある場合は、アップロードのページの作成とその受け皿となるフォルダセキュリティの変更を行なうことで、ここでの設定を変更することなく機能を実現しています。これで設定を確認して「次へ」をクリックします。

仮装ディレクトリの作成ウィザードの「完了画面」
ここまでで「仮装ディレクトリが正常に作成されました。」となり、「完了」をクリックしてこの作業を終了します。

インターネットインフォメーションサービス
「インターネットインフォメーションサービス」に戻って見ると、「既定のWebサイト」の配下に先ほど作成した「仮装ディレクトリ」があるのが確認できます。
ただし、この「仮装ディレクトリ」には何のドキュメントも登録していないので、選択しても右ペインには「このビューに表示する項目はありません。」と表示されるだけです。
「仮装ディレクトリ」が正しく機能するのか確認してみましょう。
では、念のため、「仮装ディレクトリ」が正しく機能するのか確認してみましょう。これはブラウザからの呼び出し方法の確認にもなります。
「メモ帳」を開く
まだ、開発環境などは何も整備していないので、動作確認用のページは「メモ帳」で作ることにしましょう。単純に「メモ帳」を開いて下さい。

「メモ帳」に「localstart.asp」を開いて書き換える。
これは動作確認だけなので、簡単な環境状態の表示用のページを作ってみます。
IISから受け取ることができるサーバ情報のプロパティから表示ページを作るのですが、 先ほど「既定のWebサイト」で表示させたページにその記述がそろっているので、これを転用利用します。Windowsを立ち上げたドライブのルートにあるInetpubフォルダ配下のwwwrootフォルダにある「localstart.asp」がそれですから、エクスプローラ等から「メモ帳」へドラッグします。
このまま名前を付けて「仮装ディレクトリ」に保存させてもリンク関係や一部の関数が機能しませんから、シンプルに表示だけするようなページに作り替えます。

書き換えたページのコード
これが書き換えたコードですが、試してみる皆さんはいちいち「localstart.asp」から作り替えるのも、ここでは内容の説明はしないので意味が薄いと思います。

<%@ Language = "VBScript" %>
<%
Option Explicit
Dim sServername, sServerinst, sPhyspath, sServerVersion
Dim sServerIP, sRemoteIP
Response.Buffer = True
sServername = LCase(Request.ServerVariables("SERVER_NAME"))
sServerinst = Request.ServerVariables("INSTANCE_ID")
sPhyspath = LCase(Request.ServerVariables("APPL_PHYSICAL_PATH"))
sServerVersion = LCase(Request.ServerVariables("SERVER_SOFTWARE"))
sServerIP = LCase(Request.ServerVariables("LOCAL_ADDR"))
sRemoteIP =  LCase(Request.ServerVariables("REMOTE_ADDR"))
%>
<html>
<head>
<title>ASPテスト</title>
</head>
<body>
<h2>ASPテスト</h2>
<table>
  <tr>
    <td>Servername</td>
    <td><%=sServername%></td>
  </tr>
  <tr>
    <td>Serverinst</td>
    <td><%=sServerinst%></td>
  </tr>
  <tr>
    <td>Physpath</td>
    <td><%=sPhyspath%></td>
  </tr>
  <tr>
    <td>ServerVersion</td>
    <td><%=sServerVersion%></td>
  </tr>
  <tr>
    <td>ServerIP</td>
    <td><%=sServerIP%></td>
  </tr>
  <tr>
    <td>RemoteIP</td>
    <td><%=sRemoteIP%></td>
  </tr>
</table></body></html>
このコードをコピーして「メモ帳」に貼り付けて、必要なら修正して下さい。

「Default.asp」として仮装ディレクトリに保存
上記で作成したものを「Default.asp」というファイル名で作成した「仮装ディレクトリ」に保存させます。

ブラウザで表示を確認(localhost)
では、ブラウザで正しく表示されるか確認してみましょう。アドレスバーには「http://localhost/ASPTEST/」と入力します。この説明と異なる「仮装ディレクトリ」を作成している場合は「ASPTEST」の部分を作成した「仮装ディレクトリ」の「エイリアス」名に変更して下さい。

Default.asp」は、「インターネットインフォメーションサービス」のデフォルトの設定で既定ページ名になっているので、ディレクトリ名までを指定するだけでページが表示されます。 上記コードのままでしたら、「ASPテスト」が大きい文字で表示され、その下に2列6行の罫線のない表が表示されるはずです。IPアドレスが「127.0.0.1」になっていますが、これは「localhost」で呼び出しているためです。
では、正しいIPアドレスで呼び出して見ましょう。自分のパソコンのIPアドレスが判らない場合は、「コマンドプロンプト」を開いて「ipconfig」あるいは「ipconfig /all」と入力すると表示されます。 ADSL等でルータを使っている場合は、ルータのDHCPサーバ機能によってある期間でIPアドレスの割り振りが更新されますからご注意下さい。 ブラウザで表示を確認(IPアドレス)
このようになりました。「ServerIP」はWebサーバのIPアドレス、「RemoteIP」は接続クライアントであるブラウザを開いたパソコンのIPアドレスです。この場合はサーバもクライアントも自分のパソコンですから同じアドレスになってしまいます。
ここまで来たら、LAN環境内にある他のパソコンから表示できるものか確認したくなるものです。

コントロールパネル
ですが、Windows XPService Pack 2以降の「Windowsファイアウォール」がこれの阻害要因になります。
Windows XPでは、パソコンはインターネットへのクライアントにはなるものの、Webサーバになるのはデフォルトではないように設定されていますから この設定を変更してやらないと、自分自身以外からのHTTPポートの接続ができないように設定されているのです。
ここでは、このポートの解放方法を説明しますが、逆の意味で自分自身しか開発・テストにこのパソコンを利用しないならここから説明する設定は変更しない、あるいは確認後に元に戻す方が賢明な処置と言えます。
まず、コントロールパネルから「Windowsファイアウォール」を開きます。

Windowsファイアウォール(全般)
最初は「全般」タブが表示されるので、「例外」タブをクリックします。

Windowsファイアウォール(例外)
ここでは、HTTPポート(ポート番号80)をファイアウォールの遮断機能の「例外」に追加するので、「ポートの追加」をクリックします。

ポートの追加
「ポートの追加」では「名前」は他と重複せずに内容が判りやすいものとするため「HTTP」とし、「ポート番号」に「80」を入力します。
これでOKをクリックすると、無条件にこのポートが解放されてしまいますが、解放範囲を限定する機能があるので、先に「スコープの変更」をクリックします。

スコープの変更
「スコープの変更」ではデフォルトでは「任意のコンピュータ(インターネット上のコンピュータを含む)」となっており、これは無条件に解放してしまっている状態です。 社外からの介入が他のファイアウォールやルータ機能で保護されているかどうかはその環境ごとに調べていただかないと不明ですが、限定ができるならより小さい範囲に限定した方が安全なのは言うまでもありません。
今回のようなテストか開発目的のサーバ運用では、介入を許可するのがサブネットを超えることはないでしょうから、「ユーザーのネットワーク(サブネット)のみ」を選択されると良いと思います。

Windowsファイアウォール(例外)
これで、「スコープの変更」をOKさせると、「Windowsファイアウォール」に戻り、「HTTP」が例外の「プログラムおよびサービス」に追加されたのが確認できます。
さらにOKをクリックして、終了して下さい。
では、サブネット内にある他のパソコンのブラウザから接続させてみます。アドレスバーには先ほどのIISの設定を行なったパソコンのIPアドレスと仮装ディレクトリ名を表意したURLを入力して下さい。

他のパソコンからの接続
このように表示されたでしょうか。
ここでは、「RemoteIP」には接続したパソコンのIPアドレスが表示されて、前回、IISをインストールしたパソコン自身でブラウザで動作確認したIPアドレスとは当然、違うわけですが ここで表示されるIPアドレスが自分のIPアドレスだから当たり前だろうと思わないで下さい。ここで表示されている内容はWebサーバ側が予め表示ページに埋め込んでクライアントに渡しているものです。ですからWebサーバはクライアント要求でその要求元のIPアドレスが掴めているということを示しています。
あと、ウィルス対策ソフトを確認して下さい。
最近のウィルス対策ソフトには、「スクリプトブロッカー」という機能が搭載されているものが多いようです。
「McAfee VirusScan8.0i」のプロパティ画面
サーバサイドスクリプトがこれによって動作を妨害されるので、IISでのWebサーバとして用いる場合はこの設定を解除する必要があります。
私の使っている「McAfee VirusScan8.0i」では、タスクトレイの赤い「M」のアイコンを右クリックして「プロパティ」を選択し、「詳細設定」ボタンをクリックします。
「McAfee VirusScan8.0i」の「詳細設定」画面
「詳細設定」が表示されたら、上の「スクリプトストッパー」タブを選択します。
「McAfee VirusScan8.0i」の「詳細設定」画面
ここにある「スクリプトストッパーを有効にする(推奨)」のチェックを外します。
推奨機能ではありますが、本来はHTMLメールや、悪意のあるサイトからの不正なスクリプトの動作をブロックするのが目的であって、 これらは本来、Webサーバで起こることではありません。(サーバでメール読み取りやWebブラウズなどはしないはず、ということです。) さらに、この「スクリプトブロッカー」という機能は、単にローカル動作するスクリプトを無条件で止めてしまうもので、「悪意のあるスクリプト」かどうかという判定がありません。
ですから、IIS上でASPを動作させるためには解除する必要があります。