[独自翻訳] Webサイト、Webアプリケーション、仮想ディレクトリ そして アプリケーションプールを作成する

This post is a translation of the article specified below.
本投稿は IIS.NET の記事をブログオーナーが独自に翻訳したものです。参考情報としてご利用ください。

ウォークスルーの一覧は [独自翻訳] IIS 7.0 PowerShell プロバイダ を使ってみよう!  をご覧ください。

/* 原文*/

Creating Web-Sites, Web applications, Virtual Directories and Application Pools
https://learn.iis.net/page.aspx/433/creating-web-sites-web-applications-virtual-directories-and-application-pools/

/*翻訳*/

本ウォークスルーでは Webサイト、Webアプリケーション、仮想ディレクトリとアプリケーションプールを作成します。

はじめに

IIS PowerShell ネームスペースは Web サイト、アプリケーション、仮想ディレクトリ、アプリケーションプールで構成されています。ネームスペースの新規アイテムの作成とそれを管理する作業はビルトインの PowerShell コマンドレットを使用すると簡単にできます。

Web サイトの作成

PowerShell にもう慣れてきていたら、New-Item コマンドレットは PowerShell で取り扱う色々なネームスペースにたいして新規のアイテムを作成するのに使われることをもうご存じだと思います。「New-Item c:\TestDirectory」はファイルシステムに新規のディレクトリを作成する例です。まあほとんどの人は「MD」や「MKDIR」を使うのですが。New-Item は同様にして IS 7.0 PowerShell ネームスペース内の Web サイトの新規作成の際にも使われます。

パラメーター

ファイルシステムのディレクトリを作成する際に必要なパラメーターはディレクトリの名前だけです。残念ながら Web サイトを作成する場合には名前だけでは情報が足りません。ファイルシステムのパスやネットワークのバインディング情報などが追加のパラメーターとして必要です。下記が新規の Web サイトを作成する場合のコマンドです。

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test

PS IIS:\Sites> dir

Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 Started f:\inetpub\wwwroot http *:80:
DemoSite 2 Started c:\test http :80:TestSite

-physicalPath 引数は見た通りでわかりやすいですね。一方で -bindings 引数はなんでこんなに複雑なんだろうと思うかもしれません。

この式はハッシュテーブルを使用しています。(PowerShell ハッシュテーブルについては こちらへ 。ハッシュテーブル中の キー = 値 のペアは反映先となる IIS サイトバインディング構成情報のアトリビュートを差しています。

<bindings>
<binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

ハッシュテーブルを使用する理由は、IIS 構成情報の保持方法が追加のセクションやアトリビュートを追加拡張可能だからです。<bindings> 要素を誰かがアトリビュートを追加して拡張することは容易に考えられます。ハッシュテーブル内のキーと値のペアの構造を利用することでこのような拡張に対して IIS PowerShell プロバイダを作りなおす必要がないわけです。

結果として、少しパラメーターの表現が難しくなってます。今後の TechPreview 版でよく行うタスクについては追加の関数やスクリプトでラップしたものを作ることも考えています。We are thinking about wrapping some typical tasks like creating sites with additional functions or scripts in a later Tech Preview.

サイトの削除

今作成したサイトを削除するには下記のようにします。

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

Webアプリケーションの作成

Web アプリケーションの作成はサイトの作成よりも簡単です。

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application

Name ApplicationPool EnabledProtocols PhysicalPath
---- --------------- ---------------- ------------
DemoApp DefaultAppPool http c:\test

与えなければいけない唯一のぽらメーターはタイプ(-type) だけです。これは Web サイトの配下にはアプリケーションだけでなく仮想ディレクトリも配置可能だからです。-type パラメーターを指定することで IIS プロバイダにアプリケーションを作成するように伝えています。

アプリケーションの削除には同様に Remove-Item を使用できます。

仮想ディレクトリの作成

仮想ディレクトリを作成するには同じように New-Item コマンドレットを使用します。「Default Web Site」の下に仮想ディレクトリを作成しましょう。もう一つ、前のステップで作成したアプリケーションの下に仮想ディレクトリを作りましょう。

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1

Name PhysicalPath
---- ------------
DemoVirtualDir1 c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2

Name PhysicalPath
---- ------------
DemoVirtualDir2 c:\test\virtualDirectory2

アプリケーションプールの作成

最も簡単ですが、アプリケーションプールを作りましょう。必要なパラメーターは名前だけです。

PS IIS:\> new-item AppPools\DemoAppPool

Name State
---- -----
DemoAppPool {}

ここまでの内容は簡単ですよね? では組み立てて、一貫したシナリオでやってみましょう。

全部一緒にやってみる

以下のシナリオでは下記のステップを実行していきます。

  1. 以降で作成するサイト、Webアプリケーション、仮想ディレクトリ用の新しいファイルシステムのディレクトリを作成します。

  2. 簡易な Web コンテンツを作成されたディレクトリにコピーします。

  3. 新しいアプリケーションプールを作成します。

  4. 新しいサイトとアプリケーションを作成し、さらに二つの仮想ディレクトリを作成します。これらを作成されたアプリケーションプールに紐づけます。

  5. Web ブラウザ経由で Web コンテンツにアクセスしてみる。

Step 1: ファイルディレクトリの作成

New-Item コマンドレットを使用して新規に四つのファイルシステム ディレクトリを作成します。下記のコマンドを実行します。(-type パラメーターが面倒だったら「md」コマンドを使ってもいいです)

New-Item C:\DemoSite -type Directory

New-Item C:\DemoSite\DemoApp -type Directory

New-Item C:\DemoSite\DemoVirtualDir1 -type Directory

New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

Step 2: コンテンツのコピー

さあすごく簡単な HTML のコンテンツをこれらのディレクトリに用意しましょう。パラメーターに指定したテキストが書かれたファイルができます。

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"

Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"

Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"

Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

Step 3: 新しいアプリケーションプールの作成

もし前に作ったものを削除していたら、新規に 「DemoAppPool」という名前のアプリケーションプールを作成します。

New-Item IIS:\AppPools\DemoAppPool

Step 4: 新しい Webサイト、Webアプリケーション、仮想ディレクトリを作成し、アプリケーションプールに割り当てる

さあ本編です。DemoSite、DemoApp と 二つの仮想ディレクトリを作成します。DemoVirtualDir1 は DemoSiteの直下で、DemoVirtualDir2 は DemoApp の配下に作成します。DemoSite と DemoApp を前のステップで作成された DemoAppPool に割り当てます。DemoSite は 「Default Web Site」との衝突を避けるため、ポート8080を割り当てます。

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}

Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool

New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application

Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool

New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory

New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

さあ、できました。あとは Web コンテンツに実際にアクセスしてみるだけです。

Step 5: Web コンテンツをリクエストしてみる

もちろん、Web ブラウザを使って https://localhost:8080/ や他の URL にアクセスしてもいいんですが、ここは PowerShell のウォークスルーでもあるので PowerShell 内で .NET WebClient クラスを使ってアクセスしてみましょう。

$webclient = New-Object Net.WebClient

$webclient.DownloadString("https://localhost:8080/");

$webclient.DownloadString("https://localhost:8080/DemoApp");

$webclient.DownloadString("https://localhost:8080/DemoVirtualDir1");

$webclient.DownloadString("https://localhost:8080/DemoApp/DemoVirtualDir2");

もうちょっと冒険をしたい人は Internet Explorer オブジェクトを叩いてもいいです。

$ie = new-object -com InternetExplorer.Application

$ie.Visible = $true

$ie.Navigate(https://localhost:8080/);

まとめ

本ウォークスルーでは Web サイトの作成、Web アプリケーションの作成、仮想ディレクトリの作成、アプリケーションプールの作成 をそれぞれ PowerShell を使って行いました。PowerShell の他の機能も使って、一貫したシナリオでも実行してみました。

/* 翻訳 終わり*/

Comments

  • Anonymous
    January 01, 2003
    This post is a translation of the article specified below. 本投稿は IIS.NET の記事をブログオーナーが独自に翻訳したものです。参考情報としてご利用ください。