Hiroshi Okunushi's Blog ☆ミ| IIS PHP etc.

IIS7, PHP on IIS を中心とした情報発信ブログです。

April, 2008

  • 【☆ミ】 写真やビデオ撮り好きのあなたに贈る。。。

    最近 私の周りでは一眼レフ ブームです。というか量販店でもそういう特設コーナーが多くなってきてすごい売れているのが肌で感じられます。私たちエバンジェリストの中でのカメラの先生と言えば 高橋(忍)さんです。彼も Windows Vista における色々な一眼レフ好きな人向けの投稿もしてくれています。一読の価値 ありまくりです。

    RAW Codec for Vista
    デジ1ならVistaを

    さて、本題ですが、エバンジェリストも種類が増えすぎて皆さんわかりにくいですよね。それは今度ちゃんと解説をするとして、その中でも ビジネス寄りではなくコンシューマ寄りな活動をしているエバンジェリストが実はいます。彼・彼女らの頑張りで 写真やビデオ撮りが好きな方に最適なイベントが開催されますのでお知らせしておきます。私も行きたい。。。

    Microsoft Digital Users Day です。
    キヤノンマーケティングジャパン株式会社 様 協賛、コーレル株式会社 様 にもご協力いただいて実施するイベントです。

    こちらの元々の案内ブログがありますのでご覧ください。
    http://on10netjp.spaces.live.com/blog/cns!F538A865C36EB76D!926.entry

    参加登録はこちら。無料セミナーです。
    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032374964&Culture=ja-JP

    東京だけのイベントの紹介で恐縮ですが、仕事としてのITだけでなく、日常でのITも重要ですから。(●^o^●)

    私自身は日常も仕事も接着剤でくっ付いちゃっているんですけどね。。。デジ1もブログ用だし。( ^^) _旦~~

    = English =

    [Other] Something for people who like taking pictures and videos!

    People around me are really getting into the digital SLR camera world these days. Well I actually see a dedicated floor booth for them in retail shops and I feel they are really getting popular. The camera teacher in our evangelist team is ofcourse the famous Mr.Shinobu Takahashi. He is also doing some posts in his blog about how to get the best out of Windows Vista if you are a digital SLR camera fan. There’s really something there.

    RAW Codec for Vista
    デジ1ならVistaを

    So the main event in this post… I know everybody is getting confused of the types of evangelists we have and I’d explain that in the near future. For now, there is a team who focuses in the cosumer area rather than business areas. He or she are working hard to do an event for people who like taking pictures and videos. So I’d like to introduce that. I wanna go too…

    It’s called Microsoft Digital Users Day !!
    With the cooperation of Canon Marketing Japan Inc. and Corel Corporation.

    This is the link to the original blog so please take a look. (Japanese)
    http://on10netjp.spaces.live.com/blog/cns!F538A865C36EB76D!926.entry

    Here is where to register fot the FREE event. (Japanese)
    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032374964&Culture=ja-JP

    I’m sorry it is a Tokyo only event but I thought it’s pretty important to think about the digital lifestyle side of the story and not just digital workstyle. :-)

    Well for me, the lifestyle and the workstyle is glued together so I’m not having a good balance, I know but I kind of like it that way anyway… my SLR camera is for this blog. :-)

  • 【TechNet】 SQL2008 バーチャルラボが公開されました

    現状、SQL2005のバーチャルラボは大人気なんですが、SQLの製品マーケチームが頑張って SQL2008 のバーチャルラボを用意しました。ぜひご利用ください。(^O^)/ 

    Microsoft SQL Server バーチャル ラボ
    「SQL Server 2008 自習書シリーズ バーチャル ラボ」を公開しました。「SQL Server 2008 自習書シリーズ」の自習書をもとに、ステップ バイ ステップ形式で SQL Server 2008 の機能を習得できるように構築してあります。SQL Server 2005 自習書シリーズおよび Reporting Services、データベース ミラーリングのバーチャル ラボも引き続き公開中です。
    SQL Server 2008/ 2005 バーチャル ラボの参加者の中から抽選で、SQL Server 2008 の超レアなノベルティが当たるキャンペーンを実施中です。

    = English =

    [TechNet] SQL2008 Virtual Lab went live today!

    Right now SQL2005 labs are very popular and many people accesses it but here comes SQL2008. The product marketing team did some hard work to get one live. Please consider accessing this lab!

  • [独自翻訳] 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
    http://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 ブラウザを使って http://localhost:8080/ や他の URL にアクセスしてもいいんですが、ここは PowerShell のウォークスルーでもあるので PowerShell 内で .NET WebClient クラスを使ってアクセスしてみましょう。

    $webclient = New-Object Net.WebClient

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

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

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

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

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

    $ie = new-object -com InternetExplorer.Application

    $ie.Visible = $true

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

    まとめ

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

    /* 翻訳 終わり*/

  • [独自翻訳] Webサイトやアプリケーションプールに対して簡単な構成変更をする

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

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

    /*原文*/

    Making Simple Configuration Changes to Web-Sites and Application Pools
    http://learn.iis.net/page.aspx/434/making-simple-configuration-changes-to-web-sites-application-pools-web-applications-and-virtual-directories

    /*翻訳*/

    本ウォークスルーでは IIS ネームスペースで取り扱うコンテナの Webサイト、Webアプリケーション、仮想ディレクトリ そして アプリケーションプールのような簡単なプロパティ をビルトイン PowerShell コマンドレットを使用してアクセスする方法を学びます。system.webServer セクションやカスタムセクションでの設定変更については次のウォークスルーでやります。

    はじめに

    PowerShell プロバイダの意義と目的はネームスペースの提供により、New-Item, Get-Item, Get-ChildItems, Set-Item, Set-ItemProperty などの標準的なビルトインの PowerShell コマンドレットで管理作業を行えるようにすることです。 ビルトインコマンドレットはすべての PowerShell が提供するネームスペースに対して機能します。New-Item c:\testdir は例えば、新しいシステムディレクトリの作成を行いますが、同様の方法で Webサイトやアプリケーションプールなどの新しい IIS のオブジェクトも作成することができます。例えば New-Item IIS:\AppPools\NewAppPool のようにです。

    これまでのウォークスルーで New-Item や Get-Item コマンドレットを使い始めました。このウォークスルーではもっとビルトインコマンドレットで何ができるか探検していきます。

    多くの場合、ある設定を作成時ではなく、作成後に構成設定を変更する必要があるでしょう。これに対しては New-ItemProperty と Set-ItemProperty コマンドレットを使用します。もちろん Get-Item と Set-Item も一緒に見ていくことにします。

    本ウォークスルーは「Demosite」という名前のWebサイトや関連したWebアプリケーション、仮想ディレクトリが存在していることを前提としています。

    構成設定を覗いてみる

    設定を変更し始める前にまず参照してみましょう。「DemoSite」の現状の構成設定を見るコマンドを実行します。

    PS IIS:\> get-item IIS:\Sites\DemoSite

    Name             ID   State      Physical Path                  Bindings
    ----             --   -----      -------------                  --------
    DemoSite         2    Started    c:\demosite                    http :8080:

    これにより、サイトに関連する最も重要なプロパティが列挙されます。しかし、実はもっと皆さんが興味を持つと思われる設定が存在しています。

    下記はもっと詳細な設定を見るコマンドです。

    (Get-ItemProperty IIS:\Sites\DemoSite -Name bindings).Collection

    上記の例では括弧を使用していますが、これはコレクションを表示する前に Get-ItemProperty コールをまず実行する必要があるからです。数学でいうところの (5 + 4) * 3 という式の評価順番と同じことが行われているわけで、もちろん まず 5+4 が評価されて、9になり、その後 9*3 で 27 という計算が正解です。このケースでは まず Get-ItemProperty コマンドが評価されて、その後に得られたIIS 構成オブジェクトの中身をコレクションとして画面に表示することになります。

    AppPools processModel セクションのような別のプロパティやコレクションでも同じ戦略を使えます。下記のコマンドはDemoAppPool の startupTimeLimit に関して便利な DateTime オブジェクトを返します。

    PS IIS:\> (Get-ItemProperty IIS:\AppPools\DemoAppPool -name processModel).startupTimeLimit

    Days              : 0
    Hours             : 0
    Minutes           : 1
    Seconds           : 30
    Milliseconds      : 0
    Ticks             : 900000000
    TotalDays         : 0.00104166666666667
    TotalHours        : 0.025
    TotalMinutes      : 1.5
    TotalSeconds      : 90
    TotalMilliseconds : 90000

    サイトとアプリケーションプール設定の変更

    変更を行う際には基本的に二つの方法があります。

    1. 簡単なプロパティの変更を行う場合には Set-ItemProperty を使います。

    2. コレクションを処理していて、新しいコレクションを追加する場合には New-ItemProperty を使います。
      IIS7 既定インストールでは bindings コレクションが IIS ネームスペースで使われる唯一のコレクションです。

    Set-ItemProperty と New-ItemProperty

    DemoSite にバインディングを追加するところから始めましょう。

    PS IIS:\> New-ItemProperty IIS:\sites\DemoSite -name bindings -value @{protocol="http";bindingInform
    ation=":8081:"}

    PS IIS:\> dir IIS:\Sites

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

    ご覧のように、DemoSite はこれでポート 8081 でもリッスンするように設定されました。

    既存のプロパティを変更したい場合には Set-ItemProperty を使いましょう。例えばサイトの名前を変更するには下記のようにします。

    PS IIS:\> Set-ItemProperty IIS:\Sites\DemoSite -name name -value NewDemoSite
    PS IIS:\> dir iis:\Sites

    Name             ID   State      Physical Path                  Bindings
    ----             --   -----      -------------                  --------
    Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
    NewDemoSite      2    Started    c:\demosite                    http :8080:
                                                                    http :8081:

    別の例で今度はアプリケーションプールが指定するプロセスの実行IDを変更したいのであれば、まずユーザーを作りましょう。 ADSIを使ってやります。

    $computer = [ADSI]"WinNT://."
    $user = $computer.Create("user", "DemoAppPoolUser")
    $user.SetPassword("Secret!!Pw3009")
    $user.SetInfo()

    さあこのユーザーを使って DemoAppPool の実行ユーザーを変更します。

    Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}

    拡張性を持たすためにここではプロパティの名前や値に関してハッシュテーブルを利用しています。どうやって使うか忘れたのであればこちらへ。 

    Set-Item と Get-Item

    同じことをやっていきましょう。set-item/get-item の組合せを使ってアプリケーションプールのユーザー割り当て などをやってみましょう。コマンドラインでのタブキー入力を楽しめるのでこちらの方が皆さんは好きかもしれません。下記がどう動くかを見る上でコピー&ペーストをしないで何文字か打って、タブキーで入力を完成する方法を楽しんでください。

    PS IIS:\AppPools> $demoPool = Get-Item IIS:\AppPools\DemoAppPool
    PS IIS:\AppPools> $demoPool.processModel.userName = "DemoAppPoolUser"
    PS IIS:\AppPools> $demoPool.processModel.password = "Secret!!Pw3009"
    PS IIS:\AppPools> $demoPool.processModel.identityType = 3
    PS IIS:\AppPools> $demoPool | Set-Item

    まとめ

    本ウォークスルーでは PowerShell で用意されたコマンドレットで WebサイトやアプリケーションプールなどのIIS ネームスペース コンテナを管理する方法を学びました。また、ハッシュテーブルを使用したり、コマンドラインでタブキー入力を経験しました。次のウォークスルーでは IIS プロバイダのコマンドレットを使用して IIS のネームスペース経由では公開されていない構成設定の変更を行う方法を学びます。

    /* 翻訳 終わり*/

  • [独自翻訳] PowerShell のヘルプシステムを使用する

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

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

    /*原文*/

    Using the PowerShell Help System
    http://learn.iis.net/page.aspx/432/using-the-powershell-help-system

    /*翻訳*/

    本ウォークスルーでは IIS7.0 PowerShell プロバイダについてのヘルプにアクセスする方法について学びます。

    はじめに

    IIS 7.0 PowerShell プロバイダは 2種類のコマンドレットを利用します。

    1. New-Item, Get-ChildItems, Set-ItemProperty のようなビルトインのコマンドレット
      それぞれのネームスペースに実装されていて(例えば ファイルシステム)IIS 7.0 PowerShell プロバイダに対しても動作するもの。これらのビルトインコマンドレットは IIS の階層として公開されているコンテナに対して実行できます。 Sites, Application Pools, Web Applications そして Virtual Directories です。
    2. IIS 7.0 PowerShell プロバイダ専用のコマンドレット
      Get-WebConfiguration, Set-WebConfigurationProperty, Get-WebItemState などは IIS に対してのみ利用可能なものです。これらのコマンドレットは機能設定や実行時情報の取得などには不可欠なものです。ここでいう機能設定の例は 既定のドキュメント 設定、圧縮 設定、モジュールやハンドラー 設定 などです。実行時情報の例としては、アプリケーションプールやサイトの状態を取得したい場合 などです。

    ビルトイン コマンドレットのヘルプ

    これら2種類のコマンドレットでヘルプにアクセスする方法は異なります。IIS:\ ネームスペースでビルトインのコマンドレットでヘルプにアクセスしたい場合には 以下のコマンドを使用します。

    get-help WebAdministration | more

    このコマンドの出力は IIS ネームスペースでそのコマンドレットがどのように利用できるかの概要になります。コマンドの構文や追加で指定する必要があるパラメータを表示します。そして最後に、このコマンドレットに慣れていただくための多くのコマンド実行例を表示します。

    IIS 専用コマンドレットのヘルプ

    IIS 専用コマンドレットでヘルプにアクセスしたい場合には下記のコマンドを使用する必要があります。

    Get-Help <cmdlet name>

    例:

    Get-Help Get-WebConfiguration

    Get-Help Get-WebItemState

    Get-Help Add-WebConfiguration

     

    下記のコマンドを実行すると IIS 専用コマンドレットの一覧が取得できます。

    PS IIS:\> Get-Command -pssnapin IISProviderSnapIn

    CommandType     Name                                      Definition
    -----------     ----                                      ----------
    Cmdlet          Add-WebConfiguration                      Add-WebConfiguration [-Filter] <String...
    Cmdlet          Add-WebConfigurationProperty              Add-WebConfigurationProperty [-Filter]...
    Cmdlet          Begin-Transaction                         Begin-Transaction [[-PSPath] <String[]...
    Cmdlet          Clear-WebConfiguration                    Clear-WebConfiguration [-Filter] <Stri...
    Cmdlet          End-Transaction                           End-Transaction [[-PSPath] <String[]>]...
    Cmdlet          Get-section                               Get-section [-Section] <String> [-PSPa...
    Cmdlet          Get-URL                                   Get-URL [-Url <String>] [-PSPath <Stri...
    Cmdlet          Get-WebConfiguration                      Get-WebConfiguration [-Filter] <String...
    Cmdlet          Get-WebConfigurationProperty              Get-WebConfigurationProperty [-Filter]...
    Cmdlet          Get-WebItemState                          Get-WebItemState [[-PSPath] <String[]>...
    Cmdlet          Remove-WebConfigurationProperty           Remove-WebConfigurationProperty [-Filt...
    Cmdlet          Restart-WebItem                           Restart-WebItem [[-PSPath] <String[]>]...
    Cmdlet          Set-WebConfiguration                      Set-WebConfiguration [-Filter] <String...
    Cmdlet          Set-WebConfigurationProperty              Set-WebConfigurationProperty [-Filter]...
    Cmdlet          Start-WebItem                             Start-WebItem [[-PSPath] <String[]>] [...
    Cmdlet          Stop-WebItem                              Stop-WebItem [[-PSPath] <String[]>] [-...

    まとめ

    本ウォークスルーでは PowerShell のヘルプシステムの使い、IISネームスペースでのビルトインのコマンドレットについての情報を得る方法を学びました。また IIS のコマンドレットの使い方も学びました。

    /* 翻訳 終わり*/

  • [独自翻訳] IIS7.0 PowerShell プロバイダ ネームスペースへの招待

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

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

    /*原文*/

    Introduction to IIS 7.0 PowerShell Provider Namespace
    http://learn.iis.net/page.aspx/430/navigating-the-iis-provider-namespace

    /*翻訳*/

    ほぼどなたもファイルシステムというものはどう構成されていて、動作するかご存じだと思います。ファイルシステムは階層型ネームスペースで、ファイルや他のディレクトリを含むディレクトリで構成されています。PowerShell プロバイダはファイルシステムによく似た構成で他のデータストアを階層型ネームスペースとして公開します。Cドライブのルートは通常 C:\ ですが、 IIS構成システムのルートは IIS:\ になるということです。

    ルート IIS:\ ドライブの配下には Sites と Application Pools 省略して AppPools が存在します。
    <補足>
    Get-ChildItem、dir、ls のいずれかで確認できますのでお試しください。

    IIS プロバイダ ネームスペース

    以下がIIS 7.0 PowerShell プロバイダ ネームスペースの構造です。これらのコンテナは削除も移動もできません。

    • IIS:\
      • Sites
        • Site Collection
          • Applications and Virtual Directories
      • AppPools
        • WorkerProcesses

    メモ:ワーカープロセスが開始されている場合には Worker Process コレクションに PowerShell Process オブジェクトを見つけることができます。この Process コレクションは Request と AppDomain オブジェクト を含みます。これらによりワーカープロセス内の現在実行しているリクエストや実行されているアプリケーションドメインをクエリすることができます。

    さあ 試してみましょう。

    タスク 1 - IIS プロバイダ ネームスペース に慣れる

    1.1. IIS PowerShell Management Console を実行する

    スタートメニューから すべてのプログラム - IIS7.0 Extensions - IIS PowerShell Management Console から実行できます。ここで起動される新規のPowerShell コマンドウィンドウ は IIS:\ にセットされています。これは IIS プロバイダ ネームスペースのルートを指しています。

    1.2. ネームスペースにアクセスしてみます

    dir とタイプしてルート以下にあるディレクトリは Sites と AppPools の二つだけなのがわかります。

    PS IIS:\> dir

    Name
    ----
    Sites
    AppPools

    次に、Sites ディレクトリにに移動します。これは下記のように実行できます。

    PS IIS:\> cd Sites

    PS IIS:\Sites> dir

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

    もしあなたが冒険好きだったら Si + タブキーで PowerShell が自動的にコマンドを完成してくれるのを発見できたでしょう。

    さあ今度はこれをトライしてみましょう。

    1.2 もっとナビゲーションしてみる

    PS IIS:\Sites> Get-Item 'Default Web Site' | Select-Object *

    PSPath                     : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites\Default Web Site
    PSParentPath               : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites
    PSChildName                : Default Web Site
    PSDrive                    : IIS
    PSProvider                 : IIsProviderSnapIn\WebAdministration
    PSIsContainer              : True
    State                      : Started
    name                       : Default Web Site
    id                         : 1
    serverAutoStart            : True
    bindings                   : {binding, binding}
    limits                     : Microsoft.Web.Administration.ConfigurationElement
    logFile                    : Microsoft.Web.Administration.ConfigurationElement
    traceFailedRequestsLogging : Microsoft.Web.Administration.ConfigurationElement
    applicationDefaults        : Microsoft.Web.Administration.ConfigurationElement
    virtualDirectoryDefaults   : Microsoft.Web.Administration.ConfigurationElement
    applicationPool            : DefaultAppPool
    enabledProtocols           : http
    userName                   :
    password                   :
    physicalPath               : f:\inetpub\wwwroot
    Attributes                 : {name, id, serverAutoStart, state}
    ChildElements              : {bindings, limits, logFile, traceFailedRequestsLogging...}
    ElementTagName             : site
    IsLocallyStored            : True
    Methods                    : {Start, Stop}
    RawAttributes              : {name, id, serverAutoStart, state}
    Schema                     : Microsoft.Web.Administration.ConfigurationElementSchema

    今回は 古き良き CD とか DIR などの DOSコマンドを使わずに PowerShell コマンドレットを使いました。もし効果的に IIS7.0 PowerShell プロバイダ を使いたいのであればこれらのコマンドに慣れておくとよいでしょう。

    Get-Item を例にとると、特定の場所にあるアイテムの詳細を取得するためのコマンドです。このケースでは「Default Web Site」の詳細を得ました。タイピングを少し省略したければ get-item D と打ったところで タブキーを押すと PowerShell が候補を自動的に表示してくれます。Get-Item の出力をパイプして Select-Object コマンドレットに渡すと「Default Web Site」のすべての構成設定を表示します。

    まとめ

    本ウォークスルーでは IIS プロバイダ ネームスペースがどのように構成されているかを手短にご紹介しました。さらにネームスペースを操作するための基本的なコマンドをいくつか学ぶことができました。

    /* 翻訳 終わり*/

  • [独自翻訳] IIS7.0 PowerShell プロバイダをインストールする

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

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

    /*原文*/

    Installing IIS 7.0 PowerShell Provider
    http://learn.iis.net/page.aspx/429/installing-the-iis-70-powershell-provider

    /*翻訳*/

    はじめに  

    本ウォークスルーでは IIS 7.0 PowerShell プロバイダをインストールする方法と IIS PowerShell 管理コンソールの開き方を学ぶことができます。

    前提条件

    IIS 7.0 PowerShell プロバイダは下記を前提環境とします。

    • Windows Server 2008 または Windows Vista Service Pack 1
    • Microsoft Windows PowerShell 1.0

    <補足>
    - Windows Server 2008 へ Windows PowerShell を追加するには、1. サーバーマネージャで機能を追加する 2. servermanagercmd -install powershell
    - Windows Vistaについてはダウンロードしてインストールください。x86版 は こちら 、x64版は こちら

    IIS 7.0 PowerShell プロバイダをインストールするには:
    1. IIS 7.0 PowerShell プロバイダは x86 と x64 の両環境用のバージョンがあります。
      プロバイダは http://www.iis.net/ からダウンロードしてください。
      < 補足:x86版は こちら 、x64版は こちら
    2. MSI ファイルを実行して IIS 7.0 PowerShell プロバイダをインストールしましょう。
    IIS 7.0 PowerShell プロバイダを使用するには

    IIS 7.0 PowerShell プロバイダのような PowerShell スナップイン は Windows PowerShell へ登録してから使用する必要があります。これには二つの方法があります。

    - IIS PowerShell 管理コンソール をすれば 自動登録

    IIS 7.0 PowerShell プロバイダをセットアップすると 新しいプログラム メニュー ショートカットが作成されます。このショートカットから実行された場合には IIS 7.0 PowerShell プロバイダは自動的に登録された状態で Windows PowerShell が起動します。スタートメニューから すべてのプログラム - IIS7.0 Extensions - IIS PowerShell Management Console から実行できます。ここで起動される新規のPowerShell コマンドウィンドウ は IIS:\ にセットされています。これは IIS プロバイダ ネームスペースのルートを指しています。

    - 手動登録

    起動済みの Windows PowerShell コマンドウィンドウから IIS 7.0 PowerShell プロバイダを使用する場合は手動でIIS スナップインを登録する必要があります。これは 下記にある IISConsole.PSC1 ファイルを実行することで可能です。

    PS C:\> & "$env:programfiles\IIS\PowerShellProvider\iisConsole.psc1"

    セキュリティについて一言

    ユーザー アカウント 制御(UAC)

    IIS7 システム構成を管理するためには管理者実行権限が必要になります。これはつまり、PowerShell コマンドウィンドウを「管理者として実行」する必要があるということです。Windows PowerShell を起動する際に必ず右クリックしてから 「管理者として実行」 するようにしてください。

    PowerShell 実行ポリシー

    PowerShell の現在の実行許可状態によって下記のメッセージが初回に表示されることがあります。

    PowerShell

    IIS PowerShell プロバイダのファイルはすべて署名されていますが、PowerShell は実行ポリシーが「Restricted」になっている場合に信頼するスクリプトは「信頼された発行元」に登録されているものだけです。この点に関しては二つの方法で解決できます。

    実行ポリシーを緩和する

    上記のメッセージを見た場合にはおそらく実行ポリシーが「Restricted」になっています。上記に登録されていない他のコードを実行するには実行ポリシーを「RemoteSigned」 にする方法があり、ローカルのスクリプトをデジタル署名なしで実行することを許可できます。「管理者として実行」された PowerShell ウィンドウで以下のコマンドを実行してください。

    PS C:\> Set-ExecutionPolicy RemoteSigned

    下記のコマンドを実行すると署名や実行ポリシーについてのヘルプ情報を見ることができます。

    help about_signing

    マイクロソフト コード署名 証明書 を「信頼された発行元」のリストに追加する

    IISプロバイダのスクリプトとバイナリを信頼するには上記のメッセージが表示された時に 「A」のキーを入力していただくことで可能です。これにより、IISプロバイダで使用されているコード署名 証明書が「信頼された発行元」のリストに追加されます。このリストは以下のコマンドを実行することで確認できます。

    dir cert:\CurrentUser\TrustedPublisher | fl

    まとめ

    本ウォークスルーではIIS 7.0 PowerShell プロバイダをインストールし、自動あるいは手動でWindows PowerShell に登録する方法を学びました。

    /* 翻訳 終わり*/

  • [独自翻訳] IIS 7.0 PowerShell プロバイダ を使ってみよう!

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

    /*原文*/

    Getting Started with the IIS 7.0 PowerShell Provider
    http://learn.iis.net/page.aspx/428/getting-started-with-the-iis-70-powershell-provider/

    /*翻訳*/

    はじめに

    IIS 7.0 PowerShell プロバイダは IIS7.0のシステム構成と実行時情報を管理することができるWindows PowerShell のスナップインです。 容易にWebサイト、アプリケーションプール、仮想ディレクトリ、実行中のリクエスト、ワーカープロセス、ワーカープロセス中の.NET アプリケーションドメインにアクセスできます。

    下記のウォークスルーをぜひ実施してみてください。これらではIIS 7.0 PowerShell プロバイダを一般的なシナリオを網羅的にカバーしています。 いきなり難度の高いものを実施するのではなく、基本的なものから実施いただくのが推奨です。

    ウォークスルーのラインアップ

    · IIS7.0 PowerShell プロバイダをインストールする
    (原文:Installing IIS 7.0 PowerShell Provider

    · IIS7.0 PowerShell プロバイダ ネームスペースへの招待
    (原文:Introduction to IIS 7.0 PowerShell Provider Namespace

    · PowerShell のヘルプシステムを使用する
    (原文:Using the PowerShell Help System

    · Webサイト、Webアプリケーション、仮想ディレクトリ そして アプリケーションプールを作成する
    (原文:Creating Web-Sites, Web Applications, Virtual Directories and Application Pools

    · Webサイト、Webアプリケーション、仮想ディレクトリ そして アプリケーションプール の シンプルなシステム構成プロパティ変更を実施する
    (原文:Changing Simple Configuration Properties on Web-Sites, Application Pools, Web Applications and Virtual Directories

    · ハンドラーやモジュールに関するシステム構成情報の追加、変更
    (原文:Adding and Changing Configuration Dettings like Handlers and Modules

    · もう少し進んだシステム構成タスク
    (原文:Advanced Configuration Tasks

    · 実行時情報の照会と変更(Webサイトの状態、アプリケーションプール状態、現在実行しているリクエスト)
    (原文:Querying and Changing Run-time Data (Web-Site State, Application Pool State, Currently Executing Requests)
    Tech Preview 1 でサポートされない機能

    · SSL 証明書のバインディングは構成できません。
    · システム構成のバックアップと復元はできません。

    /* 翻訳 終わり*/

  • 【IIS7】 バーチャルラボ、ようやく公開 ふぅ~

    私の力(体力?)不足のあまり、長らくお待たせして申し訳ありませんでした。まず第一弾の2つのラボを公開しました。

    Internet Information Services バーチャル ラボ
    http://www.microsoft.com/japan/technet/traincert/virtuallab/iis.mspx 

    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
    Internet Information Services 7.0: インストールと新しいモジュール方式のアーキテクチャ
    このバーチャル ラボでは、共有ホスティング ガイドに基づき、IIS7.0 のインストール環境を確認いただけます。ServerManagerCmd を使った機能の追加や Server Core にインストールを行う手順もオプションで入っています。IIS.NET で入手できる wfetch ツールの使い方も体験いただくことができます。(所要時間: 約 60 分)

    Internet Information Services 7.0: IIS マネージャの使用
    このバーチャル ラボでは、新しい GUI 管理ツール IISマネージャ (inetmgr.exe) の使い方を確認いただけます。そして、具体的な管理の例として SSL の設定、4000 サイトある場合の管理を体験いただきます。また、PowerShell を使って IIS を管理する方法の一例をこの中で体験できます。(所要時間: 約 60 分) 
    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

    本ラボはいち早く、Windows Server 2008 Standard Edition の製品版を使用しています。

    ご協力いただいた皆様、ありがとうございました!
    皆さん、ぜひご活用ください!! そして、これからあと何個か続きますのでそちらもご期待ください。

    やっと約束守れたぁ ふぅ~

    = English =

    [IIS7] Virtual Lab, finally made public. Thank you for waiting…

    Lacking power myself, I couldn’t prepare the Virtual Labs in the past and thank you for waiting for a while. At last, we got the first two of them published today.

    Internet Information Services Virtual Labs ( Japanese )
    http://www.microsoft.com/japan/technet/traincert/virtuallab/iis.mspx 

    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
    Internet Information Services 7.0: インストールと新しいモジュール方式のアーキテクチャ
    (Localized version of TechNet Virtual Lab: Installation and the New Modular Architecture )

    Internet Information Services 7.0: IIS マネージャの使用
    (Localized version of TechNet Virtual Lab: Working with the IIS Manager )
    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

    This lab uses Windows Server 2008 Standard Edition RTM builds.

    Thank you for everybody who helped to make this happen!
    And everyone, please try it out! There will be more following so stay tuned…

    At last, I can keep my promise…

  • 【IIS7】 MSC2008 セッションより (おまけ)

    ここでは QDIG という PHPアプリケーションを使い、WCAT6.3 を絡めつつ IIS7 の新しいキャッシュ機構を見ていくことにします。これ実際にぜひやってみてください。面白いですよ。(●^o^●)

    IIS7 はインストール済みである前提です。私は全モジュール入れてやりました。

    ●QDIG のダウンロードと展開

    まず QDIG を入手します。下記へ行ってZIP形式で入手しましょう。
    http://qdig.sourceforge.net/Qdig/Download

    c:\QDIG へ展開しましょう。

    ●WCAT6.3を入手し、インストールする

    WCAT は IIS.NET から入手します。
    WCat 6.3 (x86)
    ※x64版はこのリンクを辿って、右側のリンクから入手してくださいね。

    これは.msiなので、実行してインストールするだけです。ただ、英語なので気になる方はお手軽な環境でぜひ。

    ●WCATの準備

    WCATには元々のIIS7トップページ http://localhost ページに負荷をかけるサンプルがついています。c:\Program Files\WCAT\sample\scripts にある home.ubr と settings.ubr です。

    WCATを実行するバッチをここで提供しましょう。WCAT-GO.BATとでもしてデスクトップに作ってください。

    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*v

    @REM [ダウンロードしたMSIをコントローラのマシンで実行します。]
    @REM WCatX86.msi を実行してインストール
    @REM Completeでインストールする
    @REM VistaだとUACメッセージ、許可する
    @REM Readme.txtが起動するので閉じる

    @REM [試験準備]
    @REM コントローラに管理者権限でログオン
    @REM WCATのパスへ移動
    cd "\Program Files\WCAT"

    @REM Cscript をデフォルトに。
    Cscript //H:Cscript
    pause

    @REM 初期設定
    @REM 空白をいれずに負荷を担当するクライアント名をカンマ区切りで指定する。
    @REM コントローラ自身も含まれる場合、localhostあるいはマシン名を追加しておく。
    Wcat.wsf -terminate -update -clients localhost

    @REM カウンタにアクセスできるようにIPC$に繋いでおく
    net use \\localhost\ipc$
    pause

    @REM [実行]
    @REM シナリオ(サンプル:home.ubr)と設定(サンプル:settings.ubr)
    Wcat.wsf -terminate -run -clients localhost -t .\samples\scripts\home.ubr -f .\samples\scripts\settings.ubr -s "localhost" -singleip -x
    pause

    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

    WCAT-GO.BATを実行してください。注意!ここでマシンがリブートするかもしれません。そのつもりで。

    このままだとエラーになります。settings.ubr を少しいじりましょう。メモ帳で開きます。clientsとvirtualclientsの数字を有効にします。

    clients        = 10;
    virtualclients = 100;

    counters の上にコピー&ペーストしましょう。Example というところにこれは元々コメントアウトされて書いてあります。これで上書き保存します。もう一つ、テストが緩慢だといけないんで、home.ubr もちょっと duration のところを120秒から30秒に変えておきましょうか。

    で、WCAT-GO.BATを実行してください。コマンドプロンプトの二つ目が開いてlocalhost上での負荷試験が始まります。私が実行した仮想環境では下記のようになって終わりました。

    WCAT1

    Status 200 のところを見てください。406/sec となっています。まあこれがスループットだと乱暴に言いましょう。また、あとでWCATを使います。

    ●PHPの入手と展開

    これは前の投稿を見てください。PHP.NET から Non Thread-Safe Binary をゲットしましょう。c:\PHP5 にでも置きましょう。

    ●QDIGアプリケーションの設定

    今回のテストのために Default Web Site はここでバインドを ポート 80 じゃないものに変えておきましょう。

    IISマネージャでQDIGをアプリケーション設定しましょう。面倒な方はこうしましょう。
    cd \windows\system32\inetsrv
    appcmd add site /name:”QDIG” /bindings:http/*:80: /physicalPath:”c:\QDIG”
    これでSITE、APP、VDIRができますので。

    でもってIEで http://localhost へ行くと403.14エラー、当然ですな。何もファイルを指定しなかったので、ディレクトリそのものを開こうとしたのですが、許可されていないわけです。何も指定しない場合には index.php を見てほしいので、以下のようにします。

    IISマネージャを開いて、QDIGサイトをクリックします。既定のドキュメントをダブルクリック。追加でindex.phpを指定してOK。実はここで一番上にあるのがパフォーマンス上 重要です。上から毎回全部チェックしますので。厳密にやるなら必要ないものは削除しちゃいましょう。QDIGサイトだけに効きますのでここでやる分にはほかに影響ありません。

    さて、もう一回 IE で http://localhost へ行くと404.3 エラー。.phpをどう取り扱えばいいのか IIS7 がわからないと言ってます。IISマネージャを開いて、またQDIGサイトをクリックします。今度はハンドラマッピングをダブルクリックします。モジュールマップの追加を実行します。ここからは前の投稿と同じです。

    *.php / FastCgiModule / c:\PHP5\php-cgi.exe / なんでもいいですが、PHP5

    ダイアログが表示されるので はい。

    もう一回 IE で http://localhost へ行くとQDIGがちゃんと動いて、Empty Gallery! となるはずです。

    ●画像ファイルの追加

    なんでもいいのでいくつかの画像が入ったフォルダをc:\QDIGフォルダ下にコピーします。汎用的な例として、Vistaがあれば C:\Windows\Web\Wallpaper のフォルダごと使うといいでしょう。そうするとQDIGが検知して、トップページにWallpaperというフォルダができます。ちょっと画像が大きいんで、できればテストしている環境の解像度に収まるくらいのサイズの画像を集めるといいでしょう。

    ●WCATをQDIGに負荷をかけるように変更する

    では home.ubr を少しいじって、QDIGに負荷をかけるように変えてみましょう。折角のサンプルファイルはとっておきたいので home.ubr はコピーしておきましょう。その上で元の home.ubr を変更しましょう。ページをアクセスするシナリオの箇所は request のところです。で、QDIGのページを3パターンくらいURLを入手して貼り付けます。

    request
    {
         url         = "/index.php?Qwd=./Wallpaper&Qiv=none&Qis=M";
         statuscode  = 200;
    }

    request
    {
         url         = "/index.php?Qwd=./Wallpaper&Qif=img7.jpg&Qiv=none&Qis=M";
         statuscode  = 200;
    }

    request
    {
         url         = "/index.php?Qwd=./Wallpaper&Qif=img8.jpg&Qiv=none&Qis=M”;
         statuscode  = 200;
    }


    こんな感じです。WCAT-GO.BAT を実行すると、、、私の仮想環境ではこんな感じに。。。35/sec ですな。厳しい。。。

    WCAT2

    ●IIS7のキャッシュを試してみる

    IIS7には色々なキャッシュ機構がありますが、まずは一つめ。IISマネージャを開いて、QDIGサイトをクリックして、出力キャッシュを実行しましょう。で、追加。拡張子には .php を入れて、今回はユーザーモードキャッシュにチェックを入れましょう。そして、詳細設定ボタンを押します。で、QDIGの場合にはクエリ文字列を使って表示をしていますからクエリ文字列の変数の方を使いましょう。Qwd,Qif,Qiv,Qis と入力してOKしましょうもう一つOKで完了。さてどうなるか。。。

    WCAT3

    あらぁ 1872/sec までいっちゃいました。これ Thomas Deml にキャッシュ内容の確認方法は?って聞いたらメモリ内でやってて見る方法が用意されていないんだとか。。。「作って」って言っておきました。

    さて、次いってみましょう。まず、クエリ文字列���キャッシュは削除しましょう。また 追加、拡張子に.phpを入れます。今度はカーネル モード キャッシュいってみましょう。特に指定ありませんのでこれでOKします。さて。。。

    WCAT4

    はうぅ 2744/sec ですわ。。。すご。

    ちなみにカーネル モード キャッシュを使用している場合には netsh http show cachestate を試してみてください。キャッシュ内容が実際に入っているが確認できます。

    という具合に IIS7 のキャッシュはかなりパワフルです。そして上記は結構条件の悪い仮想環境での結果なので、物理環境 あるいは Disk I/Oのいい環境での数字を採るともっと差が出ることもあります。実際にMSCのデモマシンでやった時にももっと差が開き、最後の数字は5桁いってました。まあ画像のサイズがもっと800x600くらいのものだったこともあるでしょう。

    ただ、今回は画像集でやったのでキャッシュがファイルの変更通知レベルで問題ないのでぜひとも使いたいシナリオになりますが、厳密なトランザクションのページでは使えないでしょう。毎回結果違うでしょうし。でもWebサーバー上の多くがそういうオンラインアプリではないでしょうからうまく活用するとかなりスループットを稼げると思います。

    一度、MVPの方に圧縮は?と聞かれたことがあって、それも今度書こうと思うのですが、WCATのパラメータで転送量がないので上記と同じ手法が使えないんです。確か IIS6.0 Resource Kit に入っている古いバージョンだと転送量もあったと思うので今度それでやってみようかなと思っとります。

    ということで。。。( ^^) _旦~~

    = English =

    [IIS7] From my sesssion – the Microsoft Conference 2008 (Appendix)

    I didn’t have enough time to demo this one but it’s fun so I’ll show you here. For the English world, it’s a very famous demo from Bill Staples. But mine is step-by-step so anyone can really follow my steps here.

    ================

    I’d like to use an application called QDIG which uses PHP and also WCAT6.3 for stress test to see how caching in IIS7 works. Please try it out yourself once you understand the details. It’s really fun… and effective.

    I am assuming that IIS7 is already installed and I did this with all modules installed.

    - Downloading QDIG and extracting it

    First you have to get QDIG from the following as a ZIP archive.
    http://qdig.sourceforge.net/Qdig/Download

    Extract the ZIP file to c:\QDIG.

    - Getting WCAT6.3 and installing it

    You can get WCAT (FREE!) from IIS.NET. Go to the following link.
    WCat 6.3 (x86)
    * For x64 version, look for the link on the right after you go to the above URL.

    This is delivered as an .msi file. Execute it and the installation will start.

    - Prepare WCAT for testing

    WCAT includes a test scenario script to stress test the IIS7 top page – http://localhost/iisstart.htm  The sample scripts are placed in c:\Program Files\WCAT\sample\scripts. home.ubr and settings.ubr.

    I’ll share my .BAT file I use to execute WCAT test. Copy it as a text file and name it something like “WCAT-GO.BAT"

    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*v

    @REM [Execute the downloaded .MSI file on the controller machine]
    @REM Execute WCatX86.msi or WCatX64.msi
    @REM Do a Complete Install
    @REM If it’s a Vista machine, there will be a UAC message so accept it
    @REM At the end the Readme.txt file will open in notepad so close that

    @REM [Prepare for testing]
    @REM Login to the controller using administrator user
    @REM Move to WCAT path 
    cd "\Program Files\WCAT"

    @REM [Make Cscript as default]
    Cscript //H:Cscript
    pause

    @REM [Initialization]
    @REM Don’t put spaces in between when you list the client machines for stress 
    @REM If the controller machine also participates, add localhost or machine name in the clients list
    Wcat.wsf -terminate -update -clients localhost

    @REM [Connect to IPC$ to access the performance counters]

    net use \\localhost\ipc$
    pause

    @REM [Execute test]
    @REM Scenario (Sample: home.ubr) and settings (Sample: settings.ubr)
    Wcat.wsf -terminate -run -clients localhost -t .\samples\scripts\home.ubr -f .\samples\scripts\settings.ubr -s "localhost" -singleip -x 
    pause

    =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

    Execute WCAT-GO.BAT. Be aware that the machine might be rebooted here…

    This will cause an error if you execute it as it is. Let’s touch settings.ubr a little bit. Open it with notepad. You have to activate the “clients” and “virtualclients” parameter.

    clients        = 10;
    virtualclients = 100;

    Copy and paste these lines above “counters”. These lines exist commented in the “Example” section. After you added these lines, overwrite the file. One more thing, the test will take a while if you use the default so let’s change the “duration” parameter in home.ubr, 120 to 30 seconds.

    OK, execute WCAT-GO.BAT. Another command prompt will open on the machine and the stress test will begin. On my virtual machine, the test ended with the following results.

    WCAT1

    Look at “Status 200” where the result is 406/sec. Very rough but let’s call this throughput in this test. We’ll use WCAT again later on.

    - Get PHP and deploy it

    Please look at the previous post for this. Get the Non Thread-Safe Binary from http://php.net. Extract it to   c:\PHP5.

    - Configure QDIG for testing

    Let’s change the bindings for the default web site something other than 80 so that the steps would be easier.

    Open IIS Manager and setup the QDIG application. If you want to do it simply then execute the following.
    cd \windows\system32\inetsrv
    appcmd add site /name:”QDIG” /bindings:http/*:80: /physicalPath:”c:\QDIG”
    This makes the SITE & APP & VDIR.

    OK so let’s go to http://localhost where you will get 403.14 error. Obviously. I didn’t specify any file so IIS7 tried to access the directory itself but it is not accessible by default. Actually we want index.php to be the default document so let’s set it up.

    Open IIS Manager and click the QDIG site. Double click default document and add index.php in the list. Putting it on top of the list means alot to performance so don’t forget that. IIS7 needs to check each one in the list until it hits something so if you want to be sure, delete all the others. This will effect only the QDIG application so don’t worry about the other applications.

    Alright, let’s try it again. Go to http://localhost where you’ll get 404.3 error this time. It means that IIS7 can’t understand how to treat “.php” files. Open IIS Manager again and click the QDIG web site. This time double click the handler mapping icon. Add a module map. From here it is the same with the previous post.

    *.php / FastCgiModule / c:\PHP5\php-cgi.exe / PHP5

    A dialog will open but move on.

    OK go to http://localhost again where you will see QDIG working properly showing "Empty Gallery!"

    - Adding some picture files

    QDIG is a picture gallery application so let's get something to show. Copy them under C:\QDIG folder. If you can't find anything, for the test use why don't you copy C:\Windows\Web\Wallpaper folder from a Vista machine. Then QDIG will pick them up and on the top page, you'll see "Wallpaper". The Vista wallpapers are quite large to fit in the default QDIG settings so it would be better if you use something more smaller like 800 x 600 or something.

    - Change WCAT scripts to stress test the QDIG application

    OK, let's open home.ubr and think how you can change it to stress QDIG. You always want to keep the original sample files right? So copy home.ubr and edit the original after that. The scenario is explained in the "request" section of the file. Access QDIG manually with the browser and get 3 URLs that actually works. Something like the following and replace it with the iisstart.htm and welcome.png stuff.

    request
    {
         url         = "/index.php?Qwd=./Wallpaper&Qiv=none&Qis=M";
         statuscode  = 200;
    }

    request
    {
         url         = "/index.php?Qwd=./Wallpaper&Qif=img7.jpg&Qiv=none&Qis=M";
         statuscode  = 200;
    }

    request
    {
         url         = "/index.php?Qwd=./Wallpaper&Qif=img8.jpg&Qiv=none&Qis=M”;
         statuscode  = 200;
    }

    Alright! Execute WCAT-GO.BAT and this is what I got in my virtual machine. 35/sec...pretty heavy.

    WCAT2

    - Try IIS7 caching

    IIS7 has several types of caches and let's try one of them first. Open IIS Manager, click the QDIG site again, execute Output Cache. Add one, input ".php" for extensions and check the User Mode cache this time. Go to the details dialog. QDIG uses a querystring mechanism so let's try out the querystring one. Input "Qwd,Qif,Qiv,Qis" as you can see from what you got above when you changed the scenario and OK. Let's see what happens...

    WCAT3

    Wow! 1872/sec it says... I asked someone in the IIS team how to see what's in the cache when you use this option but the answer was there is no way for this one since it's inside memory. I hope they make something to let us do it :-)

    OK, let's move on. First delete the querystring cache setting. Add one again, input ".php" and let's try the kernel mode one this time. Nothing else to specify so push OK, let's go...

    WCAT4

    Gosh, 2744/sec is quite something...

    By the way, if you want to check inside the cache, this one you can do it by "netsh http show cachestate". You'll actually be able to see that these URLs are cached.

    As you can see, the caching mechanisms in IIS7 are VERY powerful. The numbers you have seen here are from a virtual machine with a normal HDD so if it's a physical machine or you have a better Disk I/O environment, this will go up naturally. The machines I actually used at the Microsoft Conference(Launch event in Japan) showed a 5 digit figure in the last test. Well the pictures were smaller - actually some shots I took at the Asahiyama Zoo - like 800 x 600 pixel so this made it lighter too.

    This example was a picture gallery so if the cache uses the file system change event to cache, this will be a perfect scenario to use the cache. But if you have a very strict transactional application, obviously you can't use it. But you saw that the setting worked by application, so if you design how you put your pages well, you can get the most out of this feature because not all the pages will be that strict. If you have something like a blog page, it will be a perfect candidate to cache.

    I was once asked by a MVP, what about compression? So I'd like to try that one out and write something in the near future but the problem is WCAT6.3 doesn't show content bytes returned so I can't use the same method to do this. I think the old one in the IIS6.0 Resource Kit worked different so maybe that is one way to do it so I'm gonna try and will write something if I get an interesting result.

    So see you again... :-) Have fun!!

  • 【IIS7】 MSC2008 セッションより (第三話)

    ではでは 第三話。

    {IIS7.0を展開・管理する手法を色々とみてみる}

    ●様々なインストール方法

    この点は既にご案内している How to と @IT さんのサイトで書いた内容でいいでしょう。ただ、資料に入れていた表は貼っておきます。

    展開1

    ただ、一つだけいつもとは違う点をお話したつもりです。それは OS の展開 と一緒に IIS もセットアップしてしまう方法論も検討する必要があるという点です。BDD の後継である MDT を使うと下の図のように実はインストール後処理で OS の役割の一つである IIS も容易にインストールできるわけです。これは IIS に限らず、他の役割や機能も同じことが言えますので展開の計画を立てる時にじっくり検討をお願いします。

    展開2

    ●アプリケーションランタイム

    OSが展開できて、IISもセットアップされたら、アプリケーション というわけです。ただ、その前に使うアプリケーションのランタイムを検討してみます。

    静的コンテンツ(Static)、XML、ASP、ASP.NETについては IIS のモジュールをインストールすることで実装されます。これに該当しないのは今までの IIS でランタイムが ISAPI や CGI 構造で動作するようになっていたものです。例えば、PHP然り、Perl然り ということです。MSC では PHP on IIS のセッションがありましたので、私はあまりふれませんでした。PHPについては今までも色々書いてますし、IIS.NET の PHP on IIS のサイト もだいぶ充実してきています。ちょっとだけリークするとどうも Windows Server の製品マーケティングチームの方で日本語の PHP on IIS サイトを準備中のようですから公開のタイミングでまた紹介しますね。

    ちなみにお見せできたデモは PHP4 と PHP5 の環境が簡単に同居できるという話です。それぞれでWebサイトを作成し、それぞれのサイトの web.config に片方は PHP4 の ハンドラマッピングを書き、もう一方では PHP5のハンドラッピングを書けばいいのです。ざっとGUIを使った手順を書いておきましょう。

    1. PHP.NETから下記をとってきます。
    PHP 5.2.5 Non-thread-safe Win32 binaries ・・・c:\PHP5 に展開
    PHP 4.4.8 zip package ・・・c:\PHP4 に展開
    2. IISマネージャを開き、Webサイトを二つ作ります。(PHP4:c:\p4site/ポート81、PHP5:c:\p5site/ポート82 のような感じで)
    3. PHP4のサイトをツリーからクリックし、ハンドラマッピングを実行
    4. モジュールマップの追加 を実行、ダイアログが表示されたらOK
    PHP4-map
    5. PHP5のサイトをツリーからクリックし、ハンドラマッピングを実行
    6. モジュールマップの追加 を実行、ダイアログが表示されたらOK
    PHP5-map
    7. サンプルコンテンツを作成
    phpinfo.php というファイルをメモ帳で作成。内容は下記の一行で。
    <? phpinfo(); ?> 
    それぞれ PHP4のサイトのフォルダとPHP5のフォルダに1つずつ用意する。
    8. http://localhost:81/phpinfo.phphttp://localhost:82/phpinfo.php にアクセスする

    phpinfo4 phpinfo5

    簡単ですよね、本当。あとは PHP の世界だと思うので php.ini をアプリに合わせてセットしていけばいいでしょう。

    ●コンテンツの展開

    さあ ようやくアプリまで辿り着きました。IIS におけるコンテンツの展開は 大きく 3つ考えておけばいいです。これは IT Pro道場 アプリプラットフォーム編でも繰り返し言ったことでもあります。

    展開3

    1.アプリの入ったフォルダ、2.アプリの環境設定(web.config) そして、3.IIS の環境設定(つまり、アプリフォルダに対してアプリケーション設定あるいはWebサイト設定、アプリケーションプール設定などで、applicationHost.config に書いてあります。)

    実は 1、そしてそこに含まれる2 についてはファイル共有を指すように設定するとWebサーバーに展開は不要になります。Webサーバー上のフォルダに置きたい場合には Webサーバーへフォルダをコピーする必要がありますね。そして、例えば2にデータベースへの接続文字列なんかが書いてある場合には展開先のデータベースサーバー名に書き変えないといけないですよね。

    3については所謂 IIS7 の管理するそれぞれの方法で実施できます。appcmd であれば appcmd set config /? とでもやってください。サンプルが表示されますので。IIS マネージャで設定をGUIで実行するのももちろん一つの手ですが、前述のAdmin Pack を入れると実は Config Editor がついていたりもします。MWA(.NETのAPI)や WMI については割愛します。

    Visual Studio も含めたもっと大きな視点では下記の表のように整理できます。

    展開4

    簡単にやりたければフォルダコピー+appcmdなんていうのもいいでしょうね。

    ●Webファームの味方 “共有構成”

    製品ベータ段階の私の説明を聞いたことのある方は Shared Configuration のことです。要は上で説明したコンテンツをファイル共有におく方式を なんと!環境設定ファイルも置いてしまう方式です。過去の色々な Windows の環境ファイルの考え方では ini も xml も全部ローカルマシンに置くのが当然と思えますが、IISはこれをやってしまいます。

    共有構成

    まずはマスター機で設定を全部行って、構成のエクスポート機能を使用して共有に.config ファイル類をコピーします。この時に暗号化用のパスワードを指定します。それぞれのWebサーバーでこの共有構成を使う場合にはここで指定したパスワードが必要になります。嘘みたいに簡単な仕掛けなんですが、これがかなり有効です。何故なら各サーバーを構成する必要がなく、しかもコンテンツが全部ファイル共有を差すようにしてあればこれでWebサーバー n 台が簡単に構成できてしまうからです。驚き ((+_+)) ローカルでポインターの役割を果たすのは redirection.config なので、中身を覗いておくといいでしょうね。今回は説明しませんでしたが、実はあまりにも仕掛けが簡単で、枯れたことをやっているので、ファイルサーバーの色々な仕掛けを併用することができます。オフラインフォルダ機能なんかもこの一つですし、場合によっては VSS(以前のバージョン というタブを表示する版管理機能)なんかも使えます。とても便利です。

    ●セキュアなリモート管理

    アプリの展開が終わった後はメンテナンスということになると思うのですが、基本的に  IIS7 の管理のほとんどは HTTP/HTTPS ベースで動きます。Windows Server 2008 を勉強なさっている方は winrm.exe(WS-Managementの実装、リモート管理設定)や winrs.exe(リモートシェル)については知ってますよね。appcmd + winrs というのは強力なタッグです。いずれにしても HTTPS が使えます。IISマネージャも同様でHTTP/HTTPSベースでの管理が可能なのでファイアウォールをあまり意識せずに管理が行える優れものです。IISマネージャの場合には サーバーをIISマネージャで選択し、管理サービスを実行すると リモート管理の設定が行えます。

    IIS7 はさらに管理の委任機能があるのでそれを組み合わせることで、ADの組織単位での委任のようなことができ、自分が管理するところだけにIISマネージャを接続できたり、どうしても管理専用のユーザー管理を行いたい場合にはIISマネージャ用のユーザー登録のメカニズムもあります。あとは機能の委任で細かく制御すればいいことになります。もっと細かくやりたい人は applicationHost.config を直にいじくることであらゆる粒度の Lock をかけることが可能です。

    ●(そして)Windows PowerShellによる IIS の管理

    これからは image ですよ、皆さん。新しいマイクロソフトのサーバー製品はほぼ PowerShell のスクリプトを出力する機能がついてきていますからまず間違いないところでしょう。

    IIS7 については PowerShell を待てずに appcmd という専用コマンドを用意してしまった背景があります。ただ、IIS7自身のシステム構成メカニズムがファイルベースで行われていることから展開のところで説明したようにフォルダのコピー��なんらかの方法でapplicationHost.configを書き換えればいいわけで、PowerShellの得意なテキストファイル制御を駆使すると同時 n 台 コンテンツ展開、構成の調整なんかも自動化可能です。これは Microsoft On の私のセッションなんかでご紹介していたりします。

    MSON_PS

    ただ、今回のMSCセッションの直前にIIS開発チームが別口を出してきました。まだ TechPreview 段階ですが、IIS7用のPowerShell プロバイダ です。これをインストールすると、Exchange で PowerShell を使うのと同じ感覚で IIS7 を管理できるようになります。もうこのブログでこの件は投稿しておいたのでその投稿を読んでくださいまし。セッションではとても寒いデモをやってしまいました、時間的に焦ってたんだな、きっと。Windows Server 2008 で使う場合には IIS7のセットアップと Windows PowerShell の追加を忘れないようにしてください。面倒だったら、servermanagercmd –install powershell で入れちゃいましょう。さむいデモの様子↓ でもどういうことかはわかってもらえたんじゃないかな...と期待します。(*^^)v 詳細については IIS.NET を参照ください。

    PowerShell Provider

    Windows PowerShell は .NETのクラスが扱えて 且つ オブジェクトをパイプする恐ろしい機能を有しているので可能性は無限大だと思います。.NET をこれから勉強する人は意外と PowerShell から入るのもありなんじゃないかと思うほどです。

    ●まとめ

    まとめでは、今後の新機能登場の形態や IIS7 の機能多様化についてふれました。

    IIS7 の新機能はここで説明をしてきた Admin Pack や PowerShell のプロバイダなどと同じように、OSのサービスパックやメジャーリリースを待たずにどんどん登場することになります。FTP7、FPSE、WebDAVなんかもこれに含まれます。一方で、ストリーミングメディアがどんどん普及していくのに合わせて、ビデオコンテンツをWebで提供することも多くなってくることから Windows メディアサービスも IIS開発チームが取り扱うように変わっています。なので同様にIIS7にストリーミングビデオを配置する際に使用できるBit Rate Throttlingのモジュールなんかも登場しています。もう一つの拡張性としては WCFやWFなどを利用したアプリケーションの実行ホストとしてのWASとIIS7です。こちらはベース機能が揃っているので拡張する話は聞こえてきませんが、当然この用途で多く使われていくことになるでしょう。そしてPHPに関してはふれましたが、CGI/FastCGI 環境を利用した他のアプリケーションの動作も今後はIIS7上で多く行われていくことになるでしょう。

    ということで、MSCの私のセッションに関する報告はひとまず区切りとしておきます。実はセキュリティのところでHeaderFooter モジュールを使用したデモをやってますが、これはバーチャルラボの登場をお待ちください。4番目のラボで実際に触っていただくことができます。逆に言うとそこから持ってきました。QDIGを使用したPHPアプリケーションで実は計測とキャッシュの効用を見せようと思っていたのですが、それが一番できなくて後悔してます。なので、この点についてはおまけとしてもう一つ投稿しようと思っています。

    では また逢う日 まで ♪(●^o^●)

    = English =

    [IIS7] From my sesssion – the Microsoft Conference 2008 (Part 3)

    OK here goes the third part.

    {Try out several ways to deploy and manage IIS7.0}

    - Various ways to install

    This point is well discussed in another post here and also at my article at the @IT web site. But I’ll paste the chart I had in the slide here too.

    展開1

    To add, I spoke something new this time. It’s about deploying IIS with the OS itself and you need to consider that option too. If you use MDT, next version of BDD, as you can see in the picture below, you can setup a post setup action that installs OS roles and features and obviously IIS too easily. This applies to not just IIS but for other features so you should really consider this option and design your deployment scenario carefully.

    展開2

    - Application runtime

    So you got the OS deployed and IIS installed then you will want to think about your application. But before that let’s think about the application runtime environment you’ll need for your application.

    For static contents, XML, ASP, ASP.NET you’ll just have to install the module for each runtime. Things that don’t apply like this are runtimes that uses the ISAPI  or CGI structure. For example, PHP or Perl. At the event, there was a PHP on IIS session separately so I didn’t talk much about it. I’ve written pretty much about PHP on IIS in the past and the PHP on IIS pages on IIS.NET is getting richer every day. To leak some information from my side, it seems that the Windows Server Marketing team is working on a Japanese page for PHP on IIS. I’ll inform you when we get ready to inform you.

    I did one demo showing how easy it is to have both PHP4 and PHP5 on a same machine, no switching needed. You just have to make each Web site separately and put PHP4 handler mapping on one web.config and one for PHP5 on the other. I’ll write a very simple step-by-step to accomplish this using the GUI tool.

    1. First you have to get the PHP binaries
    PHP 5.2.5 Non-thread-safe Win32 binaries –- Extract this in c:\PHP5.
    PHP 4.4.8 zip package –- Extract this in c:\PHP4.
    2. Open IIS Manager and make two web sites. (PHP4: c:\p4site/Port81, PHP5: c:\p5site/Port82)
    3. Click PHP4 site and execute Handler Mapping
    4. Execute Add module map, press OK after enter the parameters like the picture below.
    PHP4-map 
    5. Click PHP5 site and execute Handler Mapping
    6. Execute Add module map, press OK after enter the parameters like the picture below.
    PHP5-map
    7. Create a sample PHP content
    Create a phpinfo.php file with notepad. Just enter the following one line.
    <? phpinfo(); ?> 
    Put one in each site folder in PHP4 and PHP5.
    8. Access http://localhost:81/phpinfo.php and http://localhost:82/phpinfo.php

    phpinfo4 phpinfo5

    Very easy isn’t it?  Don’t forget to use FastCgiModule.
    After this you will be in the PHP world so edit php.ini for your application and for your needs.

    - Deploying content

    OK, so you’re now ready for your application deployment. Application deployment in IIS consists of three things to keep it simple. I’ve explained this repeatedly at the IT Pro Dojo seminar.

    展開3

    1.Application folder , 2.Application specific configuration (web.config) , 3.IIS configuration (Application or virtual directory setting for your application folder = written in applicationHost.config)

    First of all, if you place your content folder(web.config is included) on a file share, you won’t have to deploy them, you just need to point the servers to them. If you want to place copies to each web server, then you’ll need to think how to deploy. Also you have to think about changing the web.config so that it includes for example the correct database connection string for the environment.

    For 3.IIS configuration, it’s all about the various ways you can manage IIS7. If you are using appcmd, try appcmd set config /? to see samples to change configuration. If you’re using IIS Manager, the steps are obvious but to add, if you install the Admin Pack then there is a Configuration Editor added to edit every setting in the config files. I’ll skip MWA (the .NET API) and WMI here.

    If you include Visual Studio, the scenarios you can use will expand. You probably can’t read the Japanese so, I’ll write them in English here…

    a. Using publish feature in Visual Studio:
    You can’t automate this and it’s not integrated with team development

    b. File copy, change web.config, set IIS configuration
    You can do this manually and you can automate this using the above techniques, but it’s still not integrated with team development

    c. Create a web installer with Visual Studio
    This will be handy for IT Pros and since it will be a MSI file, very easy to deploy. Still it’s independant and no idea of team development.

    d. Deployment with Visual Studio Team System
    This one is THE one to choose if you can afford it. It understands the process of team development and you can have profiles about the development environment, staging environment, production environment where things like the name of the database servers will obviously differ – you have to change the .config files before you deploy. With Team System you can pack these variables so that you can deploy from one place to another correctly and quickly.

    展開4

    Well if you’re looking for something very easy, folder copying + appcmd maybe your best choice :-)

    - Your powerful friend for web farms, Shared Configuration

    To explain it in very simple words, it’s about putting not just contents but also the applicationHost.config file on a file share. In the past, configuration files like something.ini or something.xml was always on the local machine and you might not believe it but IIS7 makes it possible.

    共有構成

    First you do all the configuration you need on one machine manually(or automate it) and you use the export feature to copy the .config files to a file share of your choice. When you do this, you specify a encoding password. When you set shared confguration on other servers you’ll need this password. It’s so easy and so simple but it’s quite effective. Why? You don’t have to configure anything on each web server for IIS and additionally if your web sites are pointing to a share for content too, you can very easily setup many web servers at once. First time I heard about this feature, I was amazed… 

    The pointer is located in a file called redirection.config so if you’re interested, you might as well check the file. For the event, I didn’t have time to explain this feature so well but what this does is very stable, long-history stuff which let’s you use many file server features. Offline folders, DFS-R, VSS are some of them. You must consider this configuration when you have more than 2 servers.

    - Secure remote management

    After you finish application deployment then maintenance is left. Fundamentally all management features ready for IIS7 works with HTTP/HTTPS. If you already know about Windows Server 2008 quite well, you probably know about winrm.exe (WS-Management, remote management settings), winrs.exe (remote shell). appcmd + winrs is actually a very powerful duo. As you know, this pair can also use HTTPS. It’s the same with IIS Manager and you can manage IIS7 thru HTTP or HTTPS so you don’t have to worry so much about having a firewall between you and the server. For IIS Manager, click the server and check the Management Service to see how your server is configured for remote management.

    IIS7 also has feature delegation so if you use these together, you can do delegation like AD, and you can connect to only the area you have rights. You can even create special users for IIS Manager management only. After that, you just set the feature delegation to how you want it. If you want to do it more in detail, you can lock and unlock in various levels in the applicationHost.config file.

    - AND, using Windows PowerShell for IIS management

    Now on it is  image everybody!!!!

    Every new server product that Microsoft is shipping mostly has PowerShell scripting feature so BELIEVE me…

    As for IIS7, it couldn’t wait for PowerShell and made a special command line tool, appcmd. But IIS7 itself has a file based system configuration mechanism so when you deploy, you just need to copy some folders and change the applicationHost.config in some way. This is where PowerShell’s strong text file manipulation ability comes in and you can deploy your application to multiple servers so easily by it’s normal functions only. The following picture shows a sample I explain when I go to Microsoft On seminars. :-)

    MSON_PS

    But just before the launch event in Japan, the IIS development team came up with something else. It’s still in  TechPreview level but the PowerShell provider for IIS7 came finally. If you install this, you can manage IIS like you can manage Exchange with PowerShell. I already posted about this provider here so please read that post.  Well to be honest I did a very very simple demo, I didn’t have time…  If you’re using this on Windows Server 2008, setup IIS7 and Windows PowerShell. If you don’t want to do all the setup manually, try “servermanagercmd –install powershell” to do it instantly. The simple demo I did, you can see from the picture. I think the audience got what it means though, I hope. If you want to know more detail, go to IIS.NET.

    PowerShell Provider

    Windows PowerShell is so powerful because it can pipe OBJECTS and can use .NET classes so easily. I can’t imagine how much PowerShell can do with this capability. If you’re gonna learn .NET from now on, maybe it’s a good idea to learn using PowerShell.

    - Summary

    In summary, I spoke how the upcoming features are coming and how IIS7 is becoming a very feature rich platform.

    The upcoming features of IIS7, like the Admin Pack & PowerShell provider I explained are coming out independently and quickly not waiting for service packs and OS major releases. FTP7, FPSE, WebDAV is also included in this list. Additionally, as streaming media becomes a first class citizen in the web world, Windows Media Service changed to be developed by the IIS team. Accordingly, modules like Bit Rate Throttling is also coming out for this type of content. One more big thing, IIS is also a platform for WCF & WF applications. The baseline features for these are already there and I don’t know of any feature updates but this usage will increase dramatically in the next few years. Another dimension is a platform for PHP and other CGI/FastCGI environment languages which will also be a major citizen in the IIS7 world.

    So this will be the end of my report regarding the session I did. Actually I haven’t explained about the HeaderFooter module I showed in a demo but please wait for the localized virtual labs where I got these demos from. You can actually see how it works in the planned 4th lab coming. I also was going to show QDIG and how the cache mechanism is so powerful but I couldn’t squeeze it in time. I’m regretting that very much so I’ll write how it works and how you can actually use the feature in the next post as an appendix to these series of posts.

    So farewell, see you again :-)

  • 【IIS7】 MSC2008 セッションより (第二話)

    では 第二話。

    {IIS7.0 で強化されたセキュリティ機能の紹介}

    ●IISセキュリティ対策の現状

    セキュリティ更新プログラムに関してバージョンと更新プログラム数の比較表を掲載しました。それとSecuniaにおけるIISとApache単体でのAdvisory数とUnpatch%の表も一緒に載せました。

    http://www.microsoft.com/japan/technet/security/current.aspx
    図1

    Windows Vistaについては MS08-005: インターネット インフォメーション サービスの脆弱性により、特権の昇格が起こる (942831) 深刻度:重要 が登場しています。Windows Vista SP1 は Windows Server 2008 と同レベルなので、SP1環境については0です。

    http://www.secunia.com
    図2

    Advisory に基づいてパッチが必要なものは製品を取り扱っているところがパッチをしていくという流れになっていますが、数字を拾ってきたところ単純比較という意味ではこんな感じです。もちろん Apache については単体ではなく、アプリケーションプラットフォーム込みのものを見ないといけませんが、それは是非 ご自身でSecuniaサイトにてご覧ください。

    ●アーキテクチャの変更

    1. モジュール化構造

    Windows Server 2008と同様、IIS7.0もモジュール構造に変わっています。セキュリティの観点では「必要なもののみインストールする」ことが完全にできるようになったわけです。

    図3

    ちょっとこれだとあっさりしてますが、セミナーでは既定インストール、Server Core、ASP.NET(最小)を図で入れていました。これは以前の How to インストール 投稿をご覧になって判断していただければと思います。

    2. IIS関連アカウント、グループのビルトイン

    IIS6では IIS_WPGというグループに実行アプリケーションプールのユーザーを含めることが必要でしたが、IUSRというNETWORK SERVICE や SYSTEM などと同じように IIS 用のビルトイングループができました。これにより IIS6.0 でやっていたことは不要になりますが、その仕掛けは次のSIDインジェクションのところで説明します。なお、IUSR_マシン名は互換性のために存在します。

    image

    3. SID インジェクション IIS_IUSRSを“注射”

    インジェクションという言葉は最近よく脆弱性の説明で登場しますが、ここでのインジェクションは文字通りで使っているだけで攻撃方法のことではありません。下記のような動作のことを言います。
    ※インジェクション:直訳だと”注射”

    a. HTTPのリクエストが来る
    b. HTTP.SYSドライバがカーネルモードでこのリクエストを受け取る
    c. ユーザーモードに渡し、該当アプリのワーカープロセスを起動するように促す
    d. WASが起動を行うために環境情報から実行アカウントを入手する
    ※WAS:プロセス起動サービスの略でIIS7では独立したサービス
    e. ADの場合、WASがLogonUserを使用してADからトークンを受け取る
    f. WASがトークンにIIS_IUSRSグループとアプリケーションプールのSIDをインジェクションする
    ※IIS7ではアプリケーションプール毎にSIDがふられる
    g. WASがこのトークンを使ってワーカープロセス(w3wp.exe)を起動する
    h. リクエストが処理される
    i. リクエストが自身のアプリケーションフォルダをアクセスする場合にはアクセスできる
    j. リクエストが別のアプリケーションフォルダをアクセスする場合にはアクセスできない

    この仕組みはまさホスティングを想定し、他のユーザーのディレクトリにアクセスがなされないことを構造的に実現するものです。一方で社内の環境においてもプロセスの壁とACLによって守られる新しい仕組みになっています。

    4. 既定で独自アプリケーションプールの設定

    この点は過去にも何度かセミナーで話しをしていますが、新しいサイトを作ろうとした時、今までは何もしなければDefaultAppPoolが選択されていました。IIS7(Windows Server 2008, Vista SP1)では App1というサイトを作ろうとすると自動編集でApp1というアプリケーションプールが新規作成されるようになっています。ただもちろんプロセス数を多くしたく無い場合には明示的に今までと同じように任意で選択することも可能です。要はデフォルトを変更しました。SIDインジェクションなどの構造を生かす上でも実はこの機能が重要なのです。

    ��新しいセキュリティ管理機能群

    特に新しいセキュリティ機能については IIS.NET の新しい Learn のセクションから Configuring Security を参照ください。

    1. リクエスト フィルタリング ルール

    Windows Server 2003 で利用できる URLScan という機能を標準実装したのがこれです。IIS7では完全に標準機能になっていて、システム構成でアクセスを許したくないフォルダやファイルをURLベースで定義可能です。ただ、設定UIが無いのが玉に瑕でした。過去形で書いているのは意味があって、Administration Pack for IIS 7.0 (現在 TechPreview 版)を使用すると設定するUIがIISマネージャに増えます。

    Administration Pack for IIS 7.0
    ※実は当日はPackの中から IIS Reports という機能をチラ見せしました。この機能はLog Parserが入ってないとLog Parserを入れてくださいといわれるので明らかに依存しているレポート機能で、SQL Reportingサービスライク(実際に使っているかは未確認なんですが)なUIで色々なレポートを表示してくれます。結構アクセス解析方面でも便利そうです。

    image

    image

    過去の私のセッションをご覧になった方には少しインプットがあって、スキーマを見るとより確実にわかるのですが、HiddenNameSpace と過去呼んでいたものが HiddenSegments という名称に変わっています。これは過日シアトルでIIS開発チームの Thomas Deml 氏にも直に確認したので間違いありません。ここに定義されているところにアクセスにいくと404.8 エラーになる、そういう動きをするものです。

    他のフィルタリングについては下記を参照ください。
    http://learn.iis.net/page.aspx/143/how-to-use-request-filtering/

    2. ルールベースの URL 認証

    セミナーでは時間がとれずに紹介だけで終わったのですが、ここでは少し書きましょう。

    詳細はここに書いてあります。
    http://learn.iis.net/page.aspx/142/understanding-iis-7-url-authorization/

    ACLを利用したアクセス制限は非常に手間がかかる上にさらにマシン間でコピーするのが困難です。その状況に一石を投じようというのがこの機能です。web.config にアクセス制御を取り込むことでアプリフォルダをコピーした時にこの辺りの内容もコピーできてしまう優れものです。じゃあ web.config が攻撃されたら?と思う方はちょうど上のHidden Segmentsの図を見てください。(*^_^*)

    3. リモート管理と管理の委任

    これも他のセミナーでは話をしてきているので、第一話で紹介したWebcastをご覧いただきたいのですが、要点は以下です。

    - 今まではサイトをいじるだけの人もほぼサーバー管理者権限をあげないと設定を委任できなかった
    - IIS7では「機能の委任」とIISマネージャ専用ユーザーなどの組合せにより機能が粒度を制御しつつ委任できるようになった
    - リモート管理は重要な機能として取り扱われ、HTTP/HTTPSで接続する各種ツールが用意されている
    - IISマネージャはVista版とWindows Server 2008版で違い、Vista版はリモート管理できないバージョン
    - IIS.NETでリモート接続できる版がダウンロード可能 ここ
    - コマンド管理ツールの Appcmd は Winrs.exe(設定はWinRM.exe)と併用することでリモート管理できる

    これくらいでしょうか。まあこれだけ知っていれば後は実践あるのみでしょう。


    次回へ続く...(*^_^*)

     

    = English =

    [IIS7] From my sesssion – the Microsoft Conference 2008 (Part 2)

    OK here goes the second part.

    {Introducing Security features powered by IIS7.0}

    - How is IIS doing in the security world?

    I showed a chart that shows about the number of IIS security updates for each version. Also I had one that shows the nubmer of advisories on the Secunia web site including IIS and Apache alone.

    http://www.microsoft.com/japan/technet/security/current.aspx
    図1

    For Windows Vista, there’s MS08-005 KB942831 Vulnerability in Internet Information Services could allow elevation of privileges  Severity: Important. Windows Vista SP1 is in the same level as Windows Server 2008 so you can think of SP1 as 0.

    http://www.secunia.com
    図2

    When there’s an advisory shown, the people who make the product are responsible for patching it. Well I just picked up the numbers from the site as a fact. Regarding Apache, I know that we need to get the one’s including the application layer to compare but I didn’t do that so please go on and check your environment at the site.

    - Changes in the architecture

    1. Modular structure

    Same as Windows Server 2008, IIS7.0 is also modular in architecture now. In terms of security, now you can really do “Install only what you need.”

    図3

    This picture just shows the whole module in view but at the event I showed the combination needed when you have the default settings, what Server Core has, and the least you need for ASP.NET. If you need details on this, please look at the article at IIS.NET about modules.

    2. IIS related accounts and groups are Built-In now

    In IIS6, there is a group called IIS_WPG where you have to put the execution IDs of application pools. Now in IIS7, there is a built in account called IUSR just like the NETWORK SERVICE or SYSTEM group but for IIS specifically. I’ll explain how it works in the SID injection part later. IUSR_machinename is still there for compatibility.

    image

    3. SID injection – injecting IIS_IUSRS

    インジェクションという言葉は最近よく脆弱性の説明で登場しますが、ここでのインジェクションは文字通りで使っているだけで攻撃方法のことではありません。下記のような動作のことを言います。
    ※インジェクション:直訳だと”注射”

    a. HTTPのリクエストが来る
    b. HTTP.SYSドライバがカーネルモードでこのリクエストを受け取る
    c. ユーザーモードに渡し、該当アプリのワーカープロセスを起動するように促す
    d. WASが起動を行うために環境情報から実行アカウントを入手する
    ※WAS:プロセス起動サービスの略でIIS7では独立したサービス
    e. ADの場合、WASがLogonUserを使用してADからトークンを受け取る
    f. WASがトークンにIIS_IUSRSグループとアプリケーションプールのSIDをインジェクションする
    ※IIS7ではアプリケーションプール毎にSIDがふられる
    g. WASがこのトークンを使ってワーカープロセス(w3wp.exe)を起動する
    h. リクエストが処理される
    i. リクエストが自身のアプリケーションフォルダをアクセスする場合にはアクセスできる
    j. リクエストが別のアプリケーションフォルダをアクセスする場合にはアクセスできない

    この仕組みはまさホスティングを想定し、他のユーザーのディレクトリにアクセスがなされないことを構造的に実現するものです。一方で社内の環境においてもプロセスの壁とACLによって守られる新しい仕組みになっています。

    4. 既定で独自アプリケーションプールの設定

    この点は過去にも何度かセミナーで話しをしていますが、新しいサイトを作ろうとした時、今までは何もしなければDefaultAppPoolが選択されていました。IIS7(Windows Server 2008, Vista SP1)では App1というサイトを作ろうとすると自動編集でApp1というアプリケーションプールが新規作成されるようになっています。ただもちろんプロセス数を多くしたく無い場合には明示的に今までと同じように任意で選択することも可能です。要はデフォルトを変更しました。SIDインジェクションなどの構造を生かす上でも実はこの機能が重要なのです。

    ●新しいセキュリティ管理機能群

    特に新しいセキュリティ機能については IIS.NET の新しい Learn のセクションから Configuring Security を参照ください。

    1. リクエスト フィルタリング ルール

    Windows Server 2003 で利用できる URLScan という機能を標準実装したのがこれです。IIS7では完全に標準機能になっていて、システム構成でアクセスを許したくないフォルダやファイルをURLベースで定義可能です。ただ、設定UIが無いのが玉に瑕でした。過去形で書いているのは意味があって、Administration Pack for IIS 7.0 (現在 TechPreview 版)を使用すると設定するUIがIISマネージャに増えます。

    Administration Pack for IIS 7.0
    ※実は当日はPackの中から IIS Reports という機能をチラ見せしました。この機能はLog Parserが入ってないとLog Parserを入れてくださいといわれるので明らかに依存しているレポート機能で、SQL Reportingサービスライク(実際に使っているかは未確認なんですが)なUIで色々なレポートを表示してくれます。結構アクセス解析方面でも便利そうです。

    image

    image

    過去の私のセッションをご覧になった方には少しインプットがあって、スキーマを見るとより確実にわかるのですが、HiddenNameSpace と過去呼んでいたものが HiddenSegments という名称に変わっています。これは過日シアトルでIIS開発チームの Thomas Deml 氏にも直に確認したので間違いありません。ここに定義されているところにアクセスにいくと404.8 エラーになる、そういう動きをするものです。

    他のフィルタリングについては下記を参照ください。
    http://learn.iis.net/page.aspx/143/how-to-use-request-filtering/

    2. ルールベースの URL 認証

    セミナーでは時間がとれずに紹介だけで終わったのですが、ここでは少し書きましょう。

    詳細はここに書いてあります。
    http://learn.iis.net/page.aspx/142/understanding-iis-7-url-authorization/

    ACLを利用したアクセス制限は非常に手間がかかる上にさらにマシン間でコピーするのが困難です。その状況に一石を投じようというのがこの機能です。web.config にアクセス制御を取り込むことでアプリフォルダをコピーした時にこの辺りの内容もコピーできてしまう��れものです。じゃあ web.config が攻撃されたら?と思う方はちょうど上のHidden Segmentsの図を見てください。(*^_^*)

    3. リモート管理と管理の委任

    これも他のセミナーでは話をしてきているので、第一話で紹介したWebcastをご覧いただきたいのですが、要点は以下です。

    - 今まではサイトをいじるだけの人もほぼサーバー管理者権限をあげないと設定を委任できなかった
    - IIS7では「機能の委任」とIISマネージャ専用ユーザーなどの組合せにより機能が粒度を制御しつつ委任できるようになった
    - リモート管理は重要な機能として取り扱われ、HTTP/HTTPSで接続する各種ツールが用意されている
    - IISマネージャはVista版とWindows Server 2008版で違い、Vista版はリモート管理できないバージョン
    - IIS.NETでリモート接続できる版がダウンロード可能 ここ
    - コマンド管理ツールの Appcmd は Winrs.exe(設定はWinRM.exe)と併用することでリモート管理できる

    これくらいでしょうか。まあこれだけ知っていれば後は実践あるのみでしょう。


    次回へ続く...(*^_^*)

  • 【TechNet】 フォーラム拡張作戦 進行中!

    皆さん、TechNet フォーラム(MSDN フォーラム)をご存じですか? 答えてねっと よりも専門的な質問をするオンライン掲示板になっています。もちろん日本語利用可能な環境です。

    フォーラムのご紹介 Power to the PRO ページ
    http://www.microsoft.com/japan/powerpro/community/forum/ 

    このページからの抜粋です。 

    「マイクロソフトのオンライン掲示板である ”MSDN フォーラム” (開発者向け) と ”TechNet フォーラム” (IT プロフェッショナル向け) は、利用者の方々の投稿による 「質問」 と 「回答」 を通じて、マイクロソフト製品や技術に関する疑問解決、ノウハウやティップスといった情報交換のための参加費無料のオンライン掲示板です。マイクロソフト社員も積極的に参加しています。相互協力の関係作りを目指すマイクロソフトのコミュニティ サイトを是非ご利用ください。」

    ちょっと一言 言っておくと、製品数の多さに比して TechNet フォーラムは数がそれほど多くなく、今まで多くのご要望を頂戴していました。田辺が PowerShell 、安納が System Center Essentials、私が IIS のフォーラムをそれぞれ眺めていたのですが、やはりもっとあった方がいいだろうということでオーディエンス マーケティング チームの松井・舟越 中心にTechNet フォーラムの拡充作戦を開始しました。

    早速 数がもう増えているのがおわかりいただけますでしょうか。

    TechNet フォーラムへ!

    最初のご案内投稿が入ったら利用開始可能になりますのでまだ0件のフォーラムはもう少しお待ちくださいませ。それとフォーラムが無いものについてのご希望は「ご意見、ご要望」のフォーラムへどうぞ。

    私は引き続き IIS のフォーラムや仮想化のフォーラムに出没しますのでフォーラムでもお会いしましょう!!

  • 【IIS7】 MSC2008 セッションより (第一話)

    それでは早速 第一話。

    {IIS7.0 を検討する際に見ておきたいこと}

    ●技術的な概要は押さえておこう!

    IIS7と一言で言ってもWebサーバーというのは本当に多くの機能を備えており、IISの場合は用途が多様化を続けています。コンテンツがビデオにも及ぶことを考慮した色々な機能や先進的なFTPであったりと機能を列挙するだけで本当に数多いです。ということを踏まえると、何ができるのか? それぞれどういうことなのか?を大まかでもいいので、捉えておくことが重要になってきます。そこでこのパートでは現在入手できる概要を勉強するためのリソースをご紹介することにしました。以下がスライドに書いてあったリンクそのものです。

    読み物:Web記事、ブログ

    @ITサイト:柔軟性と機能性を大幅に高めたIIS 7.0
    http://www.atmarkit.co.jp/fwin2k/winsv2008/index/index.html
    ※これも以前ご紹介した通り、奥主が書いた記事です。全体像を捉える読み物としてご利用ください。

    講師ブログ:タグでIIS7.0を選んで絞って見ることも可能
    http://blogs.technet.com/hirookun
    ※ここですな。。。

    IISコミュニティサイト(英語)
    http://www.iis.net
    ※英語です。わかってます、日本語化についても一生懸命動いています。少しずつでも出していけるように努力します。

    ビデオ形式で学ぶ:Webcast

    ベータ3セミナー収録、Tech・Ed 2006 収録 のウェブキャスト
    https://www.microsoft.com/japan/seminar/lhs/beta3_seminar/t301/play.aspx
    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339580&culture=ja-JP
    ※過去に実施してきたセッションで、使っているバージョンが古いですが、全体コンセプトを学ぶにはよろしいかと。

    体験して学ぶ:バーチャルラボ

    IIS7.0 をテーマに順番に公開予定
    https://www.microsoft.com/japan/technet/traincert/virtuallab/default.mspx
    ※もう少し詳細に下に書きます。

    質問をする:Microsoft TechNet フォーラム

    IIS7.0 だけでなく、IIS5.x と IIS6.0 のフォーラムも
    http://forums.microsoft.com/TechNet-JA/default.aspx?ForumGroupID=495&SiteID=36
    ※ぜひ お試しください。私も参加して情報提供できることはします。

    ●TechNet バーチャルラボ

    新しいテクノロジーを学ぶ際に大きな障害になるのが環境の準備です。その意味ではこのインフラが登場した時、私は「画期的だ」と関心したものでした。IIS7については長く毎回セミナーを実施するたびにお約束してきたのですが、実現できず、情けない思いでいっぱいだったのですが、ようやく他の方の力もお借りして実現しそうです。まずは下記のラボを今 本番化に向けて手がけています。これに加えてあと5つほど登場する予定です。

    https://www.microsoft.com/japan/technet/traincert/virtuallab/default.mspx

    Internet Information Services 7.0:
    インストールと新しいモジュール方式のアーキテクチャ

    Internet Information Services 7.0:
    IIS マネージャの使用

    Internet Information Services 7.0:
    APPCMD の使用

    ●日本語書籍:「IIS7.0 Webサーバー管理ガイド」 発行決定!

    原書は How to Cheat at IIS 7 Server Administration という元 IIS 開発チームの Chris Adams さんが書いた本なのですが、Vistaのベータ段階で書かれた本だけあって、Vista と 2008 の両方を取り上げている、どちらかというと文章体ではなく、かなりカジュアルな表現の多い本です。彼は元々 IISのサポートチームでお客様サポートを担当していたことから、IISのソースコードもよく見ていた関係でかなり開発素養が高い人です。なのでAdministrationと言いつつ、本書ではプログラムコードも書かれています。私の方でこの本を監修させていただき、下記の詳細をMSCで発表しました。これも概要を掴むための第一歩としてご利用いただければと思います。原書の まえがき を書いている IIS 開発チーム責任者である Bill Staples には今回の日本語に向けてコメントをもらいましたの��それも記載されています。(●^o^●)

    image

    出版:日経BPソフトプレス社
    http://ec.nikkeibp.co.jp/item/books/C06100.html

    タイトル:IIS 7.0 Webサーバー管理ガイド

    ページ数:248ページ

    ISBN:978-4-89100-570-2
    定価:本体2800円+税
    発行日:2008年5月19日

     

    ちなみにセッションでは言いませんでしたが、ここでは再度 英語の本の現在ラインアップも紹介しておきます。

    How to Cheat at IIS 7 Server Administration Syngress Media Inc 上記の本の原書
    Chris Adams , Conrad, Jr. Agramont , Gene Whitley

    Mastering IIS 7 Implementation and Administration Sybex Inc
    John Paul Mueller

    Professional IIS 7.0 Wrox Press
    Ken Schaefer, Jeff Cochran, Scott Forsyth, Rob Baugh, Mike Everest

    Professional IIS 7 and ASP.NET Integrated Programming Wrox Press
    Shahram Khosravi

    Internet Information Services (IIS) 7.0 Administrator's Pocket Consultant Microsoft Press
    William R. Stanek

    Internet Information Services (IIS) 7.0 Resource Kit Microsoft Press
    Mike Volodarsky, Olga Londer, Brett Hill, Bernard Keach, Steve Schofield
    ※Mike は http://mvolo.com でよく知られたIIS開発チームメンバー、Olga はヨーロッパのエバンジェリストマネージャー、Brett は元 IIS エバンジェリスト、他の二人も IIS の MVPさん です。実は Olga とは先週の出張で会ってきたので、リソキ買ったよーと言ったら喜んでくれました。事実としてはかなり彼女が書いたようで。。。

    Microsoft Press の本は有力な日本語化対象だと思います。私は IIS7 の新たな可能性を広げるために Shahram の本をなんとか日本語化したいと思って促進運動を今しています。どうなるかは今後にご期待ということで。

    ●プランニングの重要性

    IIS7.0は色々な面で拡張され、セキュアになり、多機能化し、ASP.NETと統合していますが、その影響で今までよりも検討するべきことが多いかもしれません。なので、プランニングがすごく重要になってきます。セッションで取り上げたのは下記の要点です。

    - 数台の話なのかもっと多い台数なのか?
    IIS7は設計段階からホスティングを意識した製品構造になっているので、展開手法も数多く存在します。その中で台数が多いケースでの展開手法も考慮されています。その一例が「共有構成」という機能だったり、サーバーOS+アルファでMDTなどを利用してイメージで展開してしまう方法だったりします。なのでどう展開するかの計画が欠かせません。もう一つあげたのはアクティベーションです。実際に今回 バーチャルラボを私の方で本番環境向けにレビューをしているわけですが、そこでもアクティベーションを本社環境でするなど、事前検討が足りないことがありました。

    - 何を実行するWebサーバーなのか?
    ご存じのように IIS7 は各機能がモジュール化されています。これにより、セキュリティリスクとキャパシティプランニングに影響がありますので、ASP.NETだけ動けばいいのか、それ以外のアプリケーションタイプも動くのかなど検討することが結構あります。多く機能を搭載すれば、セキュリティリスクが増大するわけで、同様にしてモジュールを多く動かすことでプロセスが使用するメモリフットプリントが増大します。

    - アップグレード?新規インストール?
    アップグレードの検討は常に新プラットフォームの検討段階においては発生すると思いますが、今回も同様です。二つの影響事例を挙げました。IIS5.0 からは直接アップグレードできないこと、それから IIS6.0に無い機能(モジュール化 等)は自動構成されることです。後者が特に要注意で、アップグレードした時点では思うように動かず、設定をその上でする必要があるケースがあったり、入れるつもりではないモジュールがインストールされていたりします。これはIIS6.0とIIS7.0の機能相違から発生するのでこの検討を省くのであれば新規インストールを前提としてください。

    - どのような管理・運用を行っていくのか?
    IIS7.0にはかなり優秀な新診断機能があり、これを活用しない手はありません。あるいはアプリケーションのエラー処理実装を現行のもののまま行うのではなく、一度は再考察すべきです。これは新診断機能がかなり今までできなかったことを実現してくれるためで、アプリ側でも何か新しいことをする想定をすべきだからです。

    ●いざ、インストール でもその前に

    IIS7.0はモジュール化されています。これは Windows Server 2008 自身 でも同様で、インストールする前に実は選択すべきことがいっぱいあります。

    - オペレーティングシステムは?
    開発用であれば Windows Vista、運用環境であれば Windows Server 2008 を選択しましょう。そして、Windows Server 2008 を選択した場合には今度は 今まで同様のフルインストールを選択するのか、Server Coreを選択するのかという次の検討があります。Server Core についてはASP.NETが動作しないので注意しましょう。

    - 32 ビット か 64 ビットか?
    どうしても互換性を重視するのであれば 32ビット、そうでないのであれば迷わず 64ビット を選択しましょう。特にヘビーなパフォーマンス要求のある環境(重厚長大なサーバーをイメージしてますが)では物理メモリと仮想メモリのマッピング(PTE)で32ビット上限をヒットするケースが出てくるでしょう。この場合、CPUもメモリもネックじゃないのにスループットが伸びないケースが出てきます。それを防ぐ意味でも 64ビットをできるだけ選択しましょう。

    - インストール方法は?
    とにかくインストール方法は多くありますので、@ITの記事か、以前の投稿(提供形態, インストール方法)を参照してください。既定ではHTMLをホストする最低限で抑制されていますので、ASP.NETがいるのか、ASPがいるのか、PHPがいるのか、それ以外で利用するのかを決定しておかないとセキュリティリスクが増したり、パフォーマンスの最適化ができなかったりします。

    - 新規なのか、アップグレードなのか?
    アップグレードは事前検証を入念にすべきです。実はOSだけでも既存環境を確認するためにインストール時間が余計にかかることがわかっていますから、必ず実行時間の事前調査をまず行うべきでしょう。

    次回へ続く...(*^_^*)

  • 【MSC】 東京会場へのご参加、ありがとうございました!

    the Microsoft Conference 2008 東京会場にご参加いただいた皆様、ありがとうございました!

    私のセッションはほぼ満席くらいで本当に感謝してます。今回はかなりの数の参加者に会場にお越しいただいた結果、過ごしにくい環境だったようですね、多くの方から私自身もフィードバックをいただきました。会場で気分が悪くなった方、本当にごめんなさい。<(_ _)> この点についてはイベント開催に携わったメンバーにもフィードバックをしており、今後のイベント開催に活かせるように我々エバンジェリストからもインプットしていきます。

    さて、私のセッションに関しては諸事情によりお越しいただけなかった方、及び東京以外の方に向けてこのブログで何回かのシリーズものでセッション内容を書こうと思っています。お楽しみに。ぶっちゃけ、道場病(ほぼ5時間セミナー)にかかってまして、50分には入れられないほどデモを用意してしまった関係で、見せれなかった物が結構あります。それもここで取り上げておき、重要なものは IIS のフォーラムの方にもポインターを置いておこうと思ってます。

    資料についてはいずれ下記のサイト近辺で公開予定ですので、そこを巡回いただければと思います。

    Windows Server 2008 HEROES happen {here} ポータルサイト
    http://www.microsoft.com/japan/heroeshappenhere/portal/

    さて、私のセッションは下記のタイトルとアジェンダでした。
    NA-34 IIS 7.0 を用いたセキュアな Web サーバーの展開と新しくなった IIS 管理ツール 徹底解剖

    ●マイクロソフト Web プラットフォーム
    ●{I I S 7.0 を検討する際に見ておきたいこと}
    ●{I I S 7.0 で強化されたセキュリティ機能の紹介}
    ●{I I S 7.0 を展開・管理する手法を色々とみてみる}
    ●まとめ

    最初に 現在のWebプラットフォームにおける様々なマイクロソフトテクノロジーを図にしたものを持ってきました。もちろん IIS7 もその中にありますが、あくまでも Visual Studio や Expression などのツール、ASP.NET AJAX と Silverlight などのテクノロジー、クライアントにおける Vista や Windows Mobile、Windows Live のサービス群 の組合せの中にサーバーインフラの一端として IIS7 が位置づけられる点を見ていただき、その上で IIS7 の話に入りました。

    次回へ続く...(*^_^*)

  • 【MSC】 MIX でもやっていたVirtual Launch サイトを MSC でも

    MSDN Flash ニュースレターでもトップストーリーでご紹介していますが、バーチャル ラウンチ イベント(”VLE”)をMSCと同時に公開しています。会場に足を運べない方もあるいは行ったけれども色々と情報収集したい、あるいは同僚に紹介したい方も是非この VLE のサイトに足をお運びください。Webcast もかなりの本数が日本語で提供されていますのでかなりお楽しみいただけると思います。

    http://www.microsoft.com/japan/vle

    実は私もIIS7で1本ビデオを収録しました。探し出して見てみてください。非常に大枠ではありますが、IIS7の特徴を「無理やり」15分に収めてみました。(●^o^●)

    ではでは。講師の一人なのに開催中にこんなにブログを書いていていいんだろうか。。。いいんでしょう、きっと。(*^_^*)

    伝えたいことが最近多すぎます。。。

  • 【IIS7】 お待ちかね、PowerShell Provider Tech Preview 1

    Thomas Deml さんのブログ でも書かれていますが PowerShell Provider 第一弾が登場です。
    背景を書くと長いのですが、、、

    IIS7 を管理するコマンドラインツールの構想は長く、PowerShell 登場前にさかのぼります。既にモジュール化、多様な管理方法を先行して開発を行っていた IIS 開発チームでは PowerShell を待てず、appcmd という多機能ながらも独自のコマンドを実装して世に出したのでした。あくまでも目指すのは管理の選択肢を多く提供することであり、Windows Server 2008 の開発完了まで PowerShell 対応は見送られてきたのですが、ここでプロバイダを提供することにしたということです。

    プロバイダを提供したことにより、IISを管理するためのコマンドレットが追加され、IISをドライブとして取り扱えるようになっているということです。まだ Tech Preview、それも第一弾なので、これからお客様のフィードバックを元に良くしていくに違いありません。またまた楽しみな機能が追加されていくのを確認できて、うれしい限りです。

    Windows PowerShell 派のあなたにもちゃんと IIS チームは道を作ります。(●^o^●)

    つーか もう WalkThrough(ラボのマニュアルに近いもの)ができてるみたいです。

    Getting Started with the IIS 7.0 PowerShell Provider
    http://learn.iis.net/page.aspx/428/getting-started-with-the-iis-70-powershell-provider/

  • Installing IIS 7.0 PowerShell Provider 
  • Introduction to IIS 7.0 PowerShell Provider Namespace
  • Using the PowerShell Help System 
  • Creating Web-Sites, Web Applications, Virtual Directories and Application Pools
  • Changing Simple Configuration Properties on Web-Sites, Application Pools, Web Applications and Virtual Directories
  • Adding and Changing Configuration Dettings like Handlers and Modules 
  • Querying and Changing Run-time Data (Web-Site State, Application Pool State, Currently Executing Requests)
  • Advanced Configuration Tasks
  • ただ、早速触った感じだと AppCmd に慣れてしまった私はちょっともたついていますが。。。明日のセッションで実物をちょっと動かしちゃおうかな、などとまた欲が出てくるのでした。。。止めようかな ふーむ。

  • 【MSC】 そう、今日は the Microsoft Conference 初日です。

    これまで何度かご案内していましたが、今日 東京会場の1日目になります。
    the Microsoft Conference 2008

    ジェフ・レイクス、樋口のかなりインパクトのある基調講演も見どころですし、今日だけで24セッションありますのでかなり盛り上がること間違いなしだと思います。Windows Server 2008概要、Hyper-V関連セッション、Active Directoryセッションはかなりの混み具合になるのでは?と予想をたてています。相当 注目されていますからね、この3つは。

    さて、我らがエバンジェリスト軍団はどこで登場するのかと言うと。。。昨年のTech・Edで作ってみた歩き方をここでもやってみると奥主の一押しは「エバンジェリスト巡り」と題して下記の通り!

    4/15 14:50-15:40 RoomF 高添 SP-51
    Hyper-V も含めた仮想化環境の効率的な管理方法とは
    ※要はSCVMMを絡めた仮想と物理の入り混じった世界の管理ですわ。

    4/15 14:50-15:40 RoomC 大野 NA-31
    進化した ASP.NET で実現するリッチな Web アプリケーション開発
    ※もうほとんどお家芸ですな、このテーマだと。

    4/15 16:10-17:00 RoomC 小高 NA-32
    データアクセスは次の時代へ。LINQ を活用した効率的アプリケーション開発術
    ※小高ちゃん もう一個あるからね。小高ファン必見。

    4/15 17:20-18:10 RoomC 辻郷 NA-33
    SQL Server 2008 と Visual Studio 2008 による次世代 + 地図アプリケーション開発
    ※ご存じ、元デベロッパーエバンジェリストです。(●^o^●)

    4/15 17:20-18:10 RoomD 小高 BP-43
    2007 Office system を徹底活用 : Office 統合型アプリケーションの開発
    ※松崎を捕まえたい方はこのセッションあたりをうろうろしているといいかも。(*^_^*)

    4/16 10:00-10:50 RoomA 安納 ST-14
    サーバー展開のための留意事項および Server Core の導入シナリオ
    ※Server Core中心で見たい方はこっちおススメ。

    4/16 10:00-10:50 RoomC 奥主 NA-34
    IIS 7.0 を用いたセキュアな Web サーバーの展開と新しくなった IIS 管理ツール 徹底解剖
    ※よろしければお越しください。ちょっと弱気?

    4/16 10:00-10:50 RoomD 高橋 BP-44
    Visual Studio 2008 と Expression Blend™ 2 でデザインする WPF アプリケーション
    ※誰よー 忍と同じ時間帯に俺のセッション置いたの。俺が見れないじゃん。( ^)o(^ )

    4/16 11:10-12:00 RoomC 物江 NA-35
    IIS 7.0 と ASP.NET を組み合わせた Web サイト構築手法
    ※物江はWeb系のエバンジェリストです。The Next Web ブログ 行くと会えます。

    4/16 14:30-15:20 RoomC 佐藤 NA-37
    "次世代 Web" を攻略せよ! Silverlight & ASP.NET Futures
    ※今の肩書はエバンジェリストじゃあないですが、この人も有名人ですな。

    4/16 16:00-16:50 RoomC 長沢 NA-38
    Visual Studio 2008 を活用したチーム開発のベストプラクティス
    ※これ、見れるなら必ず見てください。内容の良さは保障します。

    4/16 17:10-18:00 RoomA 田辺 ST-19
    簡略化されたサーバー管理と強化されたスクリプト "Windows PowerShell™" で実現する新しい管理手法
    ※今回はどんな技を披露してくれるか楽しみですね。

    4/16 17:10-18:00 RoomB 高添 VD-29
    Dynamic IT に向けた仮想化環境の統合運用管理ソリューション
    ※大きな話を聞きたい方には是非おすすめ。とにかくBig Visionな高添の話は勉強になります。


    松崎中原は今回は他のイベントもあってお休みなのかな?でも会場にはいると思われ。。。(*^^)v
    さあ会場でお会いしましょう!!ではでは。

  • 【☆ミ】 いやぁ 美しい、自然には敵いませんな

    どこもかしこも”花”盛りかもしれませんが、私もやっちゃいますかね。

    DSC_0100 DSC_0073 DSC_0063

    あれーでもなんか違うなぁ と感じたあなたは鋭いです。(^-^)

    DSC_0066 DSC_0083 DSC_0089

    私は今(日曜から)米国ワシントン州レドモンドに来ています。IT Proエバンジェリストを含んだエバンジェリストの親玉が世界中から来る集まりに参加することになったのでした。マイクロソフトの期は7月からなのですが、それに向けて色々な議論を行うのです。

    シアトル&レドモンドは東京よりはやはり少し寒い感じで飛行機のアナウンスでは6度(摂氏)と言っていました。確か今週末くらいにMVPの方が多くシアトルに来られると思うのですが、上に着るものを多少は持ってきた方がいいと思います。長袖で出歩いても少し寒い感じです。(*^_^*) まあ自分へのお土産で現地調達というのもありですが、空港でいきなり寒いと初日から風邪ひくという寂しい経験をしてしまいますので。。。

  • 【★ミ】 仕事が楽しいという気持ちはどこから生まれるか

    今日は色々なことがありました。ついに課長からスタートした主人公がついに社長になることを決断した漫画を読んだのも一つです。日本のビジネスマンからするとまさに夢のキャリアと人生ですよね、プライベートも豊かですしね。マイクロソフトってすごい遠い存在と私は前職から転職するまでは感じていましたが、マイクロソフト株式会社はあくまでも日本人が多く勤務する日本の会社です。その一例として今日は外部の比較的小さな貸会議室の一室をお借りしてホワイトボードを使って来期を考える小規模な缶詰合宿(通いですけどね)をやってました。4月は人が多いのでどこも大変ですが、今朝もかなりエレベーター混んでる、そんなところでした。

    私は仕事が辛いなぁと思ったことはあっても楽しくないと思ったことは今の会社に入ってから一度もありません。とても恵まれた勤務環境なのかもしれませんが、意見が衝突することはあってもすごくみんな頑張っているからというもあるでしょうね。でも「あの人 いつも何やってるんだろ」と思うこともあるし、基本的なマインドは純粋な日本企業であった前職と何ら変わってません。ちょっと違うのは人が何を考えてどうしてこういう行動をするんだろというのを先読みしてからコンタクトすることが多くなっているのかもしれません。そう思って人と接していると驚くほど「人の頑張り」というものが「見える」ようになるんです。

    例えば、今日はいつも一緒に働いてくれているマーケティングチーム(「IT交差点」出したり、TechNetオンラインやFlashを出しているチームのことです。)とそれこそいっぱい話をしたのですが、みんな一生懸命で日常行われているマーケティングに関するスキルアップの研修で学んだことやテクニックを披露してくれて考え方を整理してくれるのです。自分は当然そういうところよりも技術的な畑で情報収集に努めているので可能な範囲でしかマーケティングは勉強できていません。講習を受けたものは年数が経ってあああの時にやったあれが役に立ったということも多いわけですが、彼ら・彼女らはそれをバチッと本業に当てはめて色々と発言してきます��これは仲間として嬉しいし、本当に楽しいです。

    同僚が頑張っている姿とそれに反応している自分を発見した時、「楽しい」が増します。マイクロソフトでは Your Potential.Our Passion という大きな標語を持って日々の業務を考えるようにここ数年は従業員は気持ちをもって仕事をしてきました。私の部門はまさにIT技術者の方のポテンシャルを再発見いただき、あるいはそのお手伝いをし、そこにマイクロソフト製品を使っていただけると嬉しいですというメッセージを堂々と言える部門なので会社の大きな方向性と自分のやることがまさに直結している稀有でかつ、幸せなところです。もう一つ、Make others great... というフレーズをマイクロソフトでは学びます。これは人のポテンシャルを発見してそれを発揮するお手伝いをすることに直結しているとともに同僚に対してもそうあるべきだという考えに基づいています。

    人の頑張りを認め、それを支えて さらにその人が支え返すという関係がうまくいっている時、人は仕事を楽しいと思えるのではないかと本気でこの会社にいる8年間強 思ってきました。いますよ、確かにすごい人も、でも大きな物事を動かす時、個人がすごいのではなく、総合力がすごいことが素晴らしいととっても実は日本的な発想が底流に流れていて今の部門では少しずつ見えてきているのです。だからこそ「楽しい」が増幅しているし、今後もこれをさらに加速したいと思った一日でした。今日はちょっとハッピーです。(●^o^●)

    マネージャ、管理職をしている方はこの思想をぜひ自分のチームで試していただきたいのです。前に書いた先読みもそうなんですが、コンタクトする相手のステージを含めて先読みしつつ、人のいいところ、「頑張り」をうまく見つけてください。メンバーよりもマネージャが「楽しい」と思えるのはだいぶ時間がかかるし、労力も半端じゃないですが、逆に労多い分、喜びと「楽しい」の増幅ももっと大きいはずです。前回の Back to the IT というイベントは巡業中で参加できなかったんですが、こういう話を今度開催する時には参加してぜひ皆さんとお話できたらうれしいです。今日現在はまだ予定は未定だと思うんですが、必ずやりますので。