IIS7.x での共有 Web ホスティングのためのサンプルアプリケーション

先日行われました、弊社パートナー ホスティング事業者様向けイベント向けに、セッションのデモで使用するサンプルアプリケーションを作成しました。

同イベントでの私のセッションは、体調 & マシン環境が万全でなく、トラウマになりそうなくらいの出来の悪さだったわけですが(笑、って、笑いごとではありませんが。。)、サンプルアプリケーションはちゃんと動作するのでここでご紹介させていただきます。

このサンプルアプリケーションは、IIS7.x の新機能である IIS 管理サービスを使用した簡単な 共有 Web ホスティングを行う際にプロビジョニングを行うものです。

具体的には以下の仕事をしてくれます。

  1. インターネット インフォメーション サービスマネージャーユーザー(※以下、"IIS 管理ユーザー") を作成
  2. Web サイト用の物理フォルダを作成
  3. アプリケーションプールの作成
  4. Web サイトの作成
  5. 作成した Web サイトに FTP をバインド
  6. 作成した Web サイトに、作成した IIS 管理ユーザーを管理者として登録
  7. PHP ランタイムの設定 (※)
    ※Windows フォーム版のアプリケーションのみ実装。Web 版は UI の実装が間に合わず。

この処理が完了すると、ユーザーは、クライアントマシンにインストールされた IIS マネージャーから、作成された IIS 管理ユーザーアカウントを使用して、同じく作成された自分の管理可能な Web サイトに直接アクセスして管理することが可能になるのです。

ちなみにサンプルアプリケーションの画面はこんな感じです。

登録が完了すると、IIS マネージャーを使用して Web サイトに接続する手順が表示されます。

以前も書きましたが、IIS 管理サービスはポートを任意に指定可能で、かつ HTTPS で通信を行うので、IIS マネージャーからインターネットを挟んでダイレクトに Web サイトに接続できます。

実際に IIS マネージャーから、Web サイトに接続するには、以下のようにコンテキストメニューから [サイトに接続] メニューを選択し、

IIS をホストしているサーバー名と、自分が接続したいサイト名を入力します。
たとえば、IIS をホストしているサーバー www.myWebHosting.com が、ポート 8080 で IIS 管理サービスをホストしており、自分が接続したい Web サイトが contoso である場合は、[サーバー名] に "**www.myWebHosting.com:8080**"、サイト名に "contoso" と入力します。

次に、管理用のアカウント情報を入力します。
ちなみにサンプルアプリケーションが作成するアカウントは、IIS 管理ユーザーアカウントなので、IIS の管理以外に使用することはできません。つまり、そのアカウントを使用して直接サーバーのリソースにログオンすることはできませんので、ホスティングサービスのような不特定多数のユーザーにアカウントを作成しても、ある程度のセキュリティは保たれます。

アカウントが承認され、接続が完了すると IIS マネージャーには、接続が許可された Web サイトだけが表示されます。

 

ユーザーは、Web サイトの管理を IIS マネージャーで行い、コンテンツとディレクトリの管理は FTP を使用して行うことができます。

IIS そのものの管理者からの委任の内容にもよりますが、既定では ASP.NET アプリケーションの実行はもちろんのこと、PHP アプリケーションのランタイム設定も可能です。

また、クライアント用 IIS マネージャーも Windows 7 用だけでなく、Windows Vista、Windows 2003 Server、Windows XP と言った  Oldies な OS 用も用意してあるので安心です。

インターネット インフォメーション サービス (IIS) 7 マネージャー
https://www.microsoft.com/downloads/details.aspx?FamilyID=32c54c37-7530-4fc0-bd20-177a3e5330b7&DisplayLang=ja

サンプルアプリケーションの配置方法、環境設定などの詳細は、サンプルアプリケーションに同梱した Readme.txt に記述してありますので、ぜひダウンロードしてお試しください。

ちなみに Windows フォーム版も入っております。

ダウソ、じゃなくて、ダウンロードはここから↓

このサンプルコードは今後、機能的なアップデートを予定していますので、使ってみて "こんな機能がほしい" というのがあれば、リクエストいただければと思います。

すべてのリクエストにお応えすることはできませんが、可能なもの、汎用性が高いものについては極力実装したいと思います。

あ、UI 部分は単なるおまけなので、リクエストいただいてもアップデートはされませんのであしからず。

 

Real Time Analytics

Clicky