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

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

February, 2009

  • 【IIS7】 あまり知られていない IIS 7.0 Hostable WebCore

    まあ、興味があれば下記の一連の記事を読んでいただきたいのですが、今までに”Cassini”で何かをしようとした深いHTTP実装をしたいと思ったハイレベルな方々には興味のある話だと思います。とっても開発者な話ですが一応IIS関連ですので私のブログでも書くことにしましょう。

    要約しておくと、IIS7はモジュール化しただけでなく、そのコアですら w3wp.exe 以外のプロセスで利用できる hwebcore.dll という実装になっています。当然のことながら applicationHost.config や ルートの web.config は独自のパスで独自に運用できる構造になります。

    Host your own Web Server in your application using IIS 7.0 Hostable Web Core
    http://blogs.iis.net/carlosag/archive/2008/04/14/host-your-own-web-server-in-your-application-using-iis-7-0-hostable-web-core.aspx

    Ins & Outs of hostable web core
    http://blogs.iis.net/ksingla/archive/2007/12/20/ins-amp-outs-of-hostable-web-core.aspx

    そもそもなんで IIS 自身を使わないで自分の実行プロセスで IIS要素を動かしたいのかという点についてはこのブログ投稿でもいくつかシナリオを挙げていますのでここで翻訳しておきます。

    1.たぶん もっとも有用な使い方は、管理者でないユーザーがアプリケーションを開発する環境として他のサーバー機能に直接的に影響を与えずに開発やデバッグを行うことができること。

    2.デモとかトライアルCDのようなものを作りたい場合にユーザーが自身の環境では本当のWebサーバーをインストールせずにいきなりWebアプリケーションのデモが起動してライブで見ることができるような実装をしたい。

    3.テスト ドリブン 開発。実際のWebサーバーでの試験というのは基本的にそのマシンの状態に影響を与えることが多いです。テスト実施者は基本的にマニュアルで構成をするようなことを気にせずに隔離された環境で本来アプリケーションをテストしたいはずです。この機能を利用すると自身の専用システム構成を保持でき、自動テストの一部をハードコードすることができます。サーバーやサイトの状況を毎回セットするのではなく、いつも事前に構成された状態でテストができる。

    4.自身の専用サービスを構築したい。ご自身のサービスを開発し、HWCをHttpListenerで何かを実装する強力な代替品として使ってマネージドコードやネイティブコードで作られたモジュールやハンドラーをASP.NETのインフラでカスタムホスティングすることに対して何もせずに実施できる。

    5.開発用専用Webサーバーを持つことで、標準では実行できないようなクライアントとサーバー間のトレースやライブにデバッグ情報を確保するような仕組みも作ろうと思えば作れる。

    ...まだまだ多彩な方法で活かせます。

    IT管理者にとってはとっても人間生活的に嫌ですが、こんなこともできるという例です。http://blogs.iis.net/sukesh/archive/2008/03/06/iis7-mobile-admin.aspx

    というようにちょっと特殊だったり、深い実装をする場合にこのHWCが役に立つ人もいると思ったので書いてみました。

    ちなみに Windows Server 2008 R2 Beta版 でもインストールする機能の一つとして HWC が IIS とは別に用意されているようですので、見た時に「これ 何?」と思わないように補足として書いたという背景の方が実は強かったりしますが。(●^o^●)

  • 【IIS7】 Application Request Routing モジュールが 開発完了 です

    Bill Staples さんのブログで公開されています。
    http://blogs.iis.net/bills/archive/2009/02/16/iis7-request-routing-and-load-balancing-module-released.aspx

    以前、下記の投稿で取り上げていたモジュールです。
    【IIS7】 Tech・Ed 2008 セッション振り返り(11)

    あくまでも画面キャプチャ用に 手元の Windows 7 Beta に検証目的で放り込んでみましたが、

    imageimage

    imageimage
    imageimage
    image

     

     

     

     

     

     

     

    のような画面を見ていただくとどんな機能なのかわかると思います。これの注意はいくつかこの Extension をインストールすることで同時に Update されるものがある点です。

  • Microsoft URL Rewrite Module for IIS 7.0
  • Microsoft Web Farm Management Version 1 for IIS 7.0
  • Microsoft Application Request Routing Version 1 for IIS 7.0
  • Microsoft External Cache Version 1 for IIS 7.0
  • Hotfix (KB 954438)
  • これの入手もぜひ IIS Extensions のサイトへ。
    http://iis.net/extensions

  • 【TFセミナー】 3/16 のご参加お待ちしています

    皆さん、いかがお過ごしですか? 私はというとあっという間に1月が過ぎてしまい、もう建国記念日!そして 2/20 にイベントを控えています。

    2/20 の方はもう満員御礼なんですが、Windows 7 と Windows Server 2008 R2 中心のセッションが並んでいます。私はいつも通りといってはな��ですが、IIS の話をさせていただきます。こっちの方は終わった段階でまたブログで内容を少しずつ解説つきで書きますね。

    Future Technology Days
    http://www.microsoft.com/japan/powerpro/ftd/windows7/default.mspx

    そして ある意味、久しぶりに 道場/TF系 のセミナー講師を務めさせていただきます。3/16を予定しております。内容はと言うとやはり Web で、今回はかなりの時間を Webサーバーそのものに焦点をあてて、他のイベントで話しているようにIIS を純粋に、足回りをしっかり見るような内容で実施したいと思います。最近しゃべりすぎるので念のため私のパートは 4時間もらっています。(爆)

    2/20 の件で頭がいっぱいでまだ 3/16 の内容はおおまかに決めているレベルなので、もしよろしかったら IIS 周りでお聞きになりたいことをお知らせください。Web Server 2008 R2 でやるつもりなので横に Web Server 2008 も置いて、違いを見ながらお話するほか、WSS など上で動くアプリもいくつかは入れてみたいと思います。多分 PHP のアプリも入れるし、できれば PHP→MSSQL ネタなんかも見せつつ、やっぱりメディアをサーブする方法とか色々とお見せしたいなぁと考えています。

    やっぱり情報系の製品のようにかなりコンセプトと用途がはっきりしているものと違って、IIS はベースになっているプラットフォームなわけでとても汎用的な製品です。だからお話する範囲も広く、とっても面白いです。

    Tech Fielders セミナー ページ
    http://www.microsoft.com/japan/powerpro/TF/seminar.mspx

    直接お申し込みいただける方は以下へお越しください。
    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032403036&Culture=ja-JP

    なお、3/16 の Lightning Talk も応募開始しています。
    http://www.microsoft.com/japan/powerpro/community/LT/default.mspx

    ライトニングトークの方は 全然 Web 周りに拘りませんから試してみたい方はぜひこちらもご応募ください。ただ、実はWeb周りってあまり今まで登壇実績が少ないので 「IIS を使ってこんなことをしてみた」ネタがある人はぜひ登壇をお願いします。(^-^)

    IIS ネタ面白そうだけどネタがなぁ という方はぜひ 「インストールマニアックス2008」でネットを検索してみてください。それこそインストールTipsでも全然いいと思いますよ。

    TFセミナーは続きますからぜひ定期的にページをご覧になって興味のあるものにご応募ください。
    それでは 3/16、新宿でお待ちしています!!

  • 【IIS7】 FTDセミナー振り返りシリーズ Vol.-1

    いつもセミナーやった後で振り返りと要点を整理するようにしていますが、今回は「-1」をやってみようというこの企画いってみよう!実はなんで「-1」をやろうと思ったかというと、検索で「IIS8」でここに来ている人が結構多いからです。

    私の最初の予告デモはこちら。

    前置き:
    インターネット インフォメーション サービスと言えば 「Microsoft の Web サーバー」という認知をしていただいてきました。歴史的に・・・云々 ・・・そこで IIS7.0に辿り着きました。IIS7.0 では・・・云々・・・。それでは R2 の IIS ってどうなんでしょう? まあ見てみましょうか。。。

    image

    Server: Microsoft-IIS/7.5\r\n

    Windows Server 2008 R2 および Windows 7 に搭載される Web サーバーは IIS8 ではなくて、IIS7.5 です。

    と行こうかなと思っております。

    ちなみにこの wfetch ってあまり見たこと無いかもしれませんが、IIS.NETで単独でも入手できるブラウザー依存を気にしないでレスポンスヘッダーをチェックしたい時に使えるツールです。他の方法もよくデモされますが、ブラウザの中でレスポンスヘッダーを返すようにページを作ったり、PowerShell の中で System.Net.WebClient を使って表示するとか色々とありますけど、簡単にやりたい時にはこれがとても便利です。(^-^)

  • 【IIS7】 Dynamic IP Restriction モジュールの開発を開始

    Steve Schofieldさんのブログから
    http://weblogs.asp.net/steveschofield/archive/2009/02/16/more-cool-stuff-from-iis-team-the-dynamic-ip-restrictions-module.aspx

    機能の抜粋ですが、以下に日本語で書いておきます。


    • 同時リクエスト数に基づいた IP アドレスのブロック
      HTTP クライアントが多くの同時実行リクエストを送信している場合にクライアントのIPアドレスを一時的にブロックすることができる
    • 単位時間中の同時リクエスト数に基づいた IP アドレスのブロック
      HTTPクライアントが短い単位時間に多くの同時実行リクエストを送信している場合にクライアントのIPアドレスを一時的にブロックすることができる
    • 様々な拒否アクション
      ブロックされたIPアドレスに何のレスポンスを返すか指定することができます。このモジュールでは状態コード 403 あるいは 404 を返すか、単にHTTP接続をドロップして何もレスポンスを返さないなどの選択を行えます。
    • 拒否されたリクエストのログ機能
      動的に拒否された全リクエストをW3Cフォーマットのログファイルに記録させることができる。
    • 現在ブロックされているIPアドレスを表示
      現在動的にブロックしているIPアドレスの一覧を取得することができ、IIS マネージャで確認したり、RSCA というAPIを使用して確認することができる。
      ※RSCA は ワーカープロセス内のリクエストやサービスの実行状態を確認できるようにする API
    • IPv6 対応
      本モジュールは IPv6 アドレスに対応している。

    これらの機能に加えて、IIS7.0が標準で持っている IPv4 アドレスおよびドメインの制限 機能も持っています。このことに関連して、本モジュールは 標準のこの機能を置き換えて配置されます。

    モジュールの使い方(Walkthrough):(英語のみ)
    http://learn.iis.net/page.aspx/548/using-dynamic-ip-restrictions/

    フォーラムでのサポート: (英語のみ)
    http://forums.iis.net/1043.aspx


    という感じの IIS Extension を開発し始めたみたいなので、興味がある方はぜひ検証してみてください。
    Beta 版なのであくまでも検証環境でお試しください。 (*^_^*)

    入手は以前にもご案内している IIS Extensions のサイトへお越しください。
    http://iis.net/extensions

  • 【Win2008R2】 DISM ってなんだろう?

    もうお手元に Windows Server 2008 R2 環境があって、検証している人向けです。

    Deployment Image Servicing and Management の略で Windows 7/Windows Server 2008 R2 で OS のオプションをコマンドでメンテナンスしたい時に使います。今までの私の説明で登場していた pkgmgr, ocsetup, servermanagercmd に加え、WAIKに入っていたイメージ操作系の様々な処理がこのコマンドでできるとんでもなく強力なコマンドになります。

    以下でビデオがもうあります。

    Deployment Image Servicing and Management
    http://technet.microsoft.com/en-us/windows/dd320284.aspx

    私がこのコマンドにどこから入ったかというと、新しい Windows Server 2008 R2 の Server Core で ASP.NET を有効する手順を確認していた時です。わかりやすい行動パターンだ、我ながら。。。

    このコマンドのすごさは WIM イメージ操作と同様に、実行中の OS も ターゲットの一つの種類と捉え、/Online で今 実行中の OS と指しているだけでオフラインのイメージにも同じようなドライバーの追加とか機能の追加・有効化とかができてしまう点で、今まで欲して得られなかった様々なことがこのコマンドで実現されています。しかも一つで。Netsh 並みに高機能ですね、このコマンドは。

    かなり いいかも これ (●^o^●)

    Server Core でも DISM は使える予定で、Beta版でも動いています。

    以上を総合していくとこんなことになります。

    DISM /Online /Enable-Feature /FeatureName:IIS-WebServerRole

    ログの機能もあったりとかなかなかこれは使い勝手が良さそうですよ。Windows 7 と Windows Server 2008 Beta2 専用です。

    展開方面では下記がもうダウンロードできるみたいなので興味がある人はお楽しみいただければと思います。

    Windows Automated Installation Kit (Windows 7 Beta)
    http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=4ad85860-d1f4-42a1-a46c-e039e3d0db5d

    ここにあるように、WAIK –> ImageX/DISM/Windows PE/USMT という使い方になるっぽいですね。私は専ら /Online の方を追いかけて、Server Manager との関係を見ていきたいと思っていますけど。

  • 【仮想化】 ワークグループ環境の Hyper-V 環境をリモートから管理(続き)

    昨年の 8/21 に書いた投稿の続きです。

    「このタスクを完了するために必要なアクセス許可がありません。このコンピュータ ‘xxxxxxx’ の承認ポリシーの管理者に問い合わせてください。」の Workgroup 環境での対処方法です。

    今日 久し振りにこの操作をする必要が出たので Howard氏 のブログを見に行ったらスクリプトできてました!
    素晴らしい。。。

    Configure Hyper-V Remote Management in seconds
    http://blogs.technet.com/jhoward/archive/2008/11/14/configure-hyper-v-remote-management-in-seconds.aspx

    http://code.msdn.microsoft.com/HVRemote/Release/ProjectReleases.aspx?ReleaseId=2084

    ここにスクリプトのファイル(HVRemote.wsf)とドキュメントが PDF であります。

    Quick Start をさらに抜粋して貼っておきます。

    サーバーで
    cscript hvremote.wsf /add:domain\user (ドメインに所属しているマシンの場合)
    cscript hvremote.wsf /add:user (ワークグループのマシンの場合)

    クライアントで
    cscript hvremote.wsf /mmc:enable
    cscript hvremote.wsf /anondcom:grant

    サーバーとクライアントを再起動する。

    楽チン!!

  • 【IIS7】 システム構成のリファレンス登場

    私は IIS 関連で「システム構成」という訳をしてきて未だにしっくりこないのですが、System Configuration のいい置き換えを考えるより何を指しているかを一生懸命話した方がいいなと思い、あまりそこにパワーを割くのをやめました。
    (●^o^●)

    まあ要は applicationHost.config + 多段階の web.config の組み合わせによって生まれる IIS が動作する環境設定のことで、実際にどの構成で動作するかはメモリー上で組み合わせるという結構よーく眺めると複雑なことが起こっています。Administration Pack という IIS Extension をインストールすると Configuration Editor というアイコンがIIS マネージャに増えて、それを使うと組み合わさった結果セットに対して編集ができるので便利です。なお、この Editor は Windows Server 2008 R2 Beta に入っているところを見ると、要望が多かったことがわかります。

    今日の紹介物品は Configuration Editor じゃなくて、リファレンスです。

    Windows Server 製品開発チームも下記のブログで紹介しています。
    http://blogs.technet.com/windowsserver/archive/2009/01/22/brand-new-comprehensive-resource-for-iis-7-0.aspx

    IIS 7.0 Configuration Reference
    http://www.iis.net/ConfigReference

    各 Config 内の設定に関して関連モジュールのインストール方法と構成を操作するスクリプト(appcmdの実行例 など)まだ列挙してあって、探し物がある場合には今までは iis_schema.xml ファイルをみてしまうのが結構今までお薦めだったんですが、ここをまず見る方が便利かもしれません。

  • 【IIS7】 www.microsoft.com も早速 R2 に換装

    すでにお気づきの方もいらっしゃると思いますが、マイクロソフトのサイトでの R2 Beta 稼働が始まっています。

    www.microsoft.com Completes Move to Microsoft-IIS/7.5
    http://news.netcraft.com/archives/2009/01/29/wwwmicrosoftcom_completes_move_to_microsoftiis75.html

    実際に Netcraft さんのサイトレポートでもご覧のとおり。
    http://toolbar.netcraft.com/site_report?url=http://www.microsoft.com

    直接確認してもヘッダーで 7.5 が返ってきますよ。
    image

    この画面ショットは wfetch.exe のもので、このように直接レスポンス内容を確認する上で便利なツールです。IIS6のリソースキットツールに入ってますし、単独でもダウンロードできます。V1.4が最新で更新されてないと思います。

    IIS 6.0 Resource Kit Tools
    http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1352

    WFetch 1.4
    http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1307


    今後の動向はここをウォッチするといいと思います。microsoft.comを運営しているチームのブログです。
    http://blogs.technet.com/mscom/default.aspx

    以前の投稿でも紹介していますが、実際に運用しているチームの正直な話が載っていてすごく参考になります。
    【IIS7】 実世界の IIS7.0 パフォーマンスデータ

    実は IIS 開発チームとこのチームはすごく親密に活動していて、人員も結構 MSCOM のチームの人が IIS の開発に異動したりと活発です。私は会ったことがあるのですが、Web Deployment Tool(MSDeploy) の開発プログラムマネージャーである Faith Allington さんももともとは MSCOM で運用をしていた IT Pro で、経験を開発に活かしてくれています。

  • 【SQL】 TechNet に SQLベストプラクティス ページできました

    日本の SQL 製品マーケチームとTechNet チーム 共同で 本社SQL CATチーム(ワールド ワイドでユーザー様向けのデータベースの設計支援や困難な問題を解決するためのチューニングのアドバイス等を行っているマイクロソフトの開発部門に所属するチームです。)から出てきている様々な資料の整理を行っています。今回 SQL ベストプラクティスページとして公開し、順次 よくしていきますので皆様のフィードバックをお待ちしています。

    ■SQLベストプラクティス
    http://technet.microsoft.com/ja-jp/sqlserver/bb331794.aspx

    特に TOP10 リストシリーズが米国では好評なんですが、日本ではまだアクセスが少ないようです。多分 検索で当たらないのだと思うのでぜひこの機会に直接 ここから飛んでご覧ください。(●^o^●)

  • 【IIS7】 IIS5からIIS7への移行を考えるとき

    金曜のセッションではここで書いているテーマに関しては大きくふれることができないのでブログで書いておこうと思いましたのであらためてまとめておきます。

    まず、あえて小数点を書かなかったのはこうすることでクライアント系を含みたかったからです。

    OSバージョン IISのバージョン
    Windows 2000 IIS5.0
    Windows XP IIS5.1
    Windows Server 2003, Windows XP x64 IIS6.0
    Windows Vista, Windows Server 2008 IIS7.0
    Windows 7, Windows Server 2008 R2 IIS7.5

    このように整理するとわかりやすいですかね。Windows XPの 64 ビット環境が実は 5.1 ではない点が注意ですね。つまり 言い換えると IIS5 から IIS7 へ移行するということは 2000・XP から Vista/2008/7/2008 R2 へ移行するということになります。

    互換モード

    まず注目すべきは互換モードの搭載状況でしょう。ある意味 以前のバージョンのエミュレーションをしてくれる互換モードは IIS6 では IIS5 互換が、IIS7 では IIS6 互換(クラシックモードという)がそれぞれ搭載されているので残念ながら IIS7には IIS5 互換モードはないということになります。なので、ほとんど触らないで移行できるということを前提には考えない方がいいです。まず何かあることを前提に結果として何もしないで済むこともあると思った方がいいということです。

    実は IIS6 が登場した時に対応をあきらめて互換モードを使った環境も IIS5 対応のアプリケーションと分類すべきだと思います。というのは IIS6 で登場した ワーカープロセス分離モード(アプリケーションプールの概念の登場)のモデルが IIS7 でも同じように利用されていて、IIS7 の IIS6 互換モードであるクラシックモード(引き続き aspnet_isapi.dllを利用)でもアプリケーションプールを利用できる状態だからです。このことから IIS5 互換モードと IIS6 互換モードの意味合いが違うのがわかりにくいかもしれません。

    整理して表現をするとこういうことじゃないかと私は思っています。

    IIS5互換モード :IIS5 と同じプロセス分離モデルで動作する IIS6 のモード
    クラシックモード:IIS6 と同じようにASP.NETを動作させる IIS7 のモード

    もう一つ違う点ありました。IIS5互換モードはサーバー単位での切り替え(それほど大きい影響)になっていて、クラシックモード(反対が統合モード)への切り替えはアプリケーションプール単位になっています。なので、IIS7ではASP.NETの動作環境としてかなり混在した環境を一台で提供できることになります。

    クライアント環境の差異

    手元に Windows クライアントがあって、そこで開発をしているというとても多くあるケースではまた少し考察すべき点があります。こちらはどちらかというと制限の解除なのでより便利になっている要素です。IIS5 でのクライアント版はサイトが一つしか持てないとか接続制限があったりとかサーバーとはまったく異なる IIS と言ってもいいほど多くの制限を持っていました。IIS7 では OS の登場時期での差異はあるものの、ベースでは同じと考えて問題ありません。この点は少し要素を列挙することにしましょう。

    - Windows Vista 以降でも同時接続数制限(3あるいは10)があるが、印刷のようにキューに溜まる構造になっていて、待つだけの制限になっていて、キューの上限(すごく大きな数)を超えない限りはエラーを返さない。
    - Windows Vista 以降も エディションによっては IIS が搭載されていない、あるいはフル機能ではないものがある。
    - 複数のサイトを取り扱えるようになった。
    - IIS7 の IIS マネージャはクライアント系は自分しか管理できない。別バージョンの IIS マネージャをIIS.NETからダウンロードしてインストールするとリモートの IIS7 を管理できるようになる。これは Beta 版の Windows 7 でも同じ。
    - Windows Server 2008 は Windows Vista SP1と同期して登場しているのでどうすれば同じレベルなの?ということではこれが解になる。

    ASP.NET

    IIS7 では残念ながら .NET1.0には対応していない。また、Vista/2008系ではOSに搭載されている.NETフレームワークのベースが 2.0、選択してインストールすれば 3.0 が入るので 1.1も入っていない。従って、1.1 を動作させるには 1.1 をダウンロードしてセットアップし かつ クラシックモードで利用しないといけない。新モードである(ASP.NET)統合モードでは 2.0 以降の利用になる。なお、.NET3.0 と .NET3.5 はクラスの拡張であって、ランタイム的な観点では 2.0ベースになっています。.NET4.x に関してはベースを拡張すると聞いていますが、詳細は私の同僚のデベロッパーエバンジェリストの面々のブログで聞くとかどこかのセミナー会場で彼らにより具体的に聞いてみてもらえればと思います。

    前にも書きましたが、ASP.NETとしてはIIS7との統合度合いで クラシックモード、統合モードをアプリケーションプール単位で別々に実行できます。ということで下記のような状態が一台の中で存在でき��わけです。

    AppPool1 .NET1.1 クラシックモード
    AppPool2 .NET2.0 クラシックモード
    AppPool3 .NET2.0 統合モード
    などなど・・・

    ASP

    IIS5 ということは拡張子が.aspである ASP アプリケーションも多くあるでしょう。IIS7 という観点ではあくまでもASP.NETの動作原理の切り替えなので、クラシックモードでも統合モードでも ASP に関しては違いが無いです。ただ、今までと比べるとアクセス制限などが厳しくなっていることで動作しないことの可能性の方が高いです。困ったらぜひ下記の記事を一読いただきたいと思います。Access(MDB)に関しても Bill はちゃんと書いています。

    Tips for Classic ASP developers on IIS7 (英語)

    大きく一点だけ取り上げると、スクリプトエラーや行番号管理などは既定ではオフになっているのでトラブルシュートをする際は明示的に IISマネージャでオンにしないと何が起こっているのかよくわからない点があります。

    ASP でのコーディングにおいては 複雑なロジックは COM コンポーネントを作成して ASP内のスクリプトから COM を呼び出す構造が多いと思うので、IIS7 で動作するかはむしろその COM コンポーネントが当該 OS で動作するかの方が移行に影響があるでしょう。

    PHP

    IT交差点という無償冊子でも書きましたが、PHPに関しては ISAPI 式のセットアップ方法に慣れている方が多いと思いますが、現在は FastCGI 式での利用をオススメしています。Vista SP1、2008 以降では FastCGI が最初から搭載されているので PHPのランタイムを入手すれば設定は簡単と言っていいです。

    IIS6のころに提供していた表

    @ITさんのサイトの記事を書いたときに転記しておいたので以下の記事もぜひ読んでいただければと思います。
    http://www.atmarkit.co.jp/fwin2k/winsv2008/04iis7_01/04iis7_01_02.html

    最後に

    A4 一枚程度の投稿ですが、これが基礎です。これを押さえていただければ移行に関して結構理解いただけたと思っていいと思います。概観はかわっていますが、色々な点で便利になっているので慣れれば便利さを体感いただけると思います。

  • 【Community】 田辺が仙台で PowerShell を語ります

    いやぁ Future Technology Days のセッションが終わりました。
    イベントの後は大体放心状態なんですよね。。。

    さて、今回のご紹介は以下のコミュニティイベントです。

    INETA & techbank.jp & PowerShell from Japan & HIRO's.NET 合同勉強会 in 仙台
    http://techbank.jp/event-sendai/

    マイクロソフト 東北支店(仙台) セミナールーム
    2009/03/28 (土) 13:00~16:30

    『デベロッパー向け SQL Server 3つの性能ポイント』
    『PowerShell入門』
    『PowerShell関連(お題未定)』

    ということでお題未定なところを田辺が80分もらっていますのでどんなネタを展開してくれるやらとても楽しみです。

    今日まさに Future Technology Days で Windows 7 や Windows Server 2008 R2の話をしましたが、今後のOSでは Windows PowerShell はインストール作業なし、コマンドプロンプトと同じように標準搭載です! PowerShell を学ぶには今が絶好のタイミングです。また、最新のOSで無くてもダウンロードすれば使えますからお手元の Windows をパワフルに制御するには今後 必須の技術になってきます。

    お近くの方は必見ですのでぜひ上記のリンクからお申し込みくださいませ。まだまだお申し込み可能です。(●^o^●)

  • 【IIS7】 FTDセミナー振り返りシリーズ Vol.0

    大変遅くなりましたが、2/20 の Future Technology Days の私のセッションにご参加いただいた皆様ありがとうございました。また、これから何回かに分けてセッション内容をブログで整理しますので来れなかった方もぜひお読みいただければと考えています。ぜひ感想などをコメントでお寄せいただければと思います。

    まずは、今回のセッション内容の概要をこの投稿でご紹介します。

    Windows 7 セミナー ~ 企業向け Windows 7 の全貌 ~
    http://www.microsoft.com/japan/powerpro/ftd/windows7/default.mspx

    この中で高添と私が身の回りではセッションを担当いたしました。それと実は IT Pro道場 を一緒に立ちあげた 元 IT Proエバンジェリストの井戸も実は今回セッションをやっていました。

    Windows Server 2008 R2 で仮想化は次のステージへ高添
    64bit プラットフォームへのアプリケーション移行 (井戸)
    Web プラットフォーム(IIS プラスアルファ)の次なる進化の行方 (奥主)

    ということで私のセッションは下記がセッション概要で書いてありました。


    本セッションでは、Web サーバー IIS7.0 のその後の進化について解説します。Windows Server 2008 R2 で標準搭載される今まで OOB ツールと呼ばれていた機能群 (代表的なものが FTP7、WebDAV、Admin Packなど) および Server Core 上で動作する ASP.NET 環境、PowerShell 2.0 と IIS プロバイダーによる管理環境を含む新機能をご覧いただきます。


    それではスライドから内容をピックアップして書いておきます。

    今回は4部構成でした。

    Part I : IIS, Yesterday & Today
    Part II : Windows Server 2008 R2における IIS 変更点
    Part III : さらに続くIISの可能性の追求
    Part IV : まとめ と 役に立つリソース

    Part I では今まで(IIS7.0 まで)の話。Part II は R2 での変更点。Part III は IISの機能と可能性の拡大の話。Part IVはまとめといきました。

    ということで、今後の投稿で Vol.1~Vol.3 でそれぞれのパートを解説する投稿をしていきます。
    お楽しみに。(●^o^●)

  • 【IIS7】 FTDセミナー振り返りシリーズ Vol.1

    この投稿の内容は@ITさんのWebサイト向けに書かせていただいた記事と重複しているところも多くありますが、更新された内容も書かれています。

    Part I.  IIS, Yesterday & Today

    最初にお聞きしたところ、会場では IIS6 をお使いの方が多い状況でした。ということで実はこの Part I も飛ばさずにお話をしました。

    IIS5での厳しい体験、IIS6での再出発、IIS7での互換性高く しかし 新しいプラットフォームへの流れをまずご紹介しました。いつも通り、厳しい体験の話は CodeRed や Nimda の話でした。開発チームもすごく辛かった時期でもあります。IIS6 のセキュリティ一義な考え方、それを受け継いでいながらしかし 新しい構造への一歩を踏み出したのが IIS7 です。

    3年お話してきてとても思うのは、IIS7を正確に捉えるには大きく二つの要素を把握することが大事である点を強調しまし���。そこでこの Part I は主にこの2点にフォーカスしています。

    - 新しい構成システム(環境設定)
    - モジュール構造

    新しい構成システム

    新しい構成システムは .config 形式の XML ファイル群で、今までの metabase.bin や metabase.xml とはまったく違うシステムです。簡単に要約すると、ASP.NET の構成システムを参考に作られた仕組みになります。

    下記は ダウンロードセンターで入手できる XML Notepad 2007 で各ファイルを開いて、構成セクショングループの階層の画面ショットをとったものです。

    左から machine.config(.NET Framework 設定)、root web.config(ASP.NET 設定)、applicationHost.config(IIS7設定)のものです。

    image imageimage

    これらとともに継承してサイトやアプリケーションで設定を上書き(Override)することができ、例えば下記のような設定ができます。下図の例は左がサイトレベルでのディレクトリ参照を許可し、アプリケーションレベルで index.php を追加した場合になります。

    image image

    これらが実はメモリー上でうまく合わさって構成が成り立っています。
    ここで実は R2 の IIS から搭載される 構成エディターを少しご覧いただきました。構成エディターはこのマージされたシステム構成を把握するのにとてもいいツールになっています。
    image

     

     

     

     

     

    そして、この構成システムはすごく単純でありながらほぼすべての設定がこのテキストファイルベースでできること、どう書けばいいのかはスキーマファイルが用意されていることをお伝えしました。IISの開発チームは最近でこそ新しい構成エディターを使い始めているようですが、実際には.configファイルを書く際にスキーマファイルを「教科書」のように使っていた点もお話しました。スキーマに書いてない設定は動かないので「バイブル」と言っていいかもしれません。

    モジュール構造

    IIS7 の二つ目の大きな特徴は各 IIS のサーバー機能が一つ一つ独立した DLL になったことが挙げられます。セキュリティ面、リソース面において今までの IIS に比べると自由度が大幅に向上しました。そして、IIS のサーバー機能を皆さんが.NETのコードで開発することもできる(& 売ることができる)ようになったことで新しいビジネスモデルも登場しています。

    次にお話したのは二つのモードについてで、IIS5互換モードが無いこと、つまり、IIS5互換モードで動作しているアプリケーションはあくまでもIIS5対応のアプリケーションであって、IIS6対応したアプリケーションではないことなどをお話しました。この辺は当日十分にお話できないと思い、下記の投稿を事前にしていました。

    【IIS7】 IIS5からIIS7への移行を考えるとき

    IIS7 におけるモードは ASP.NET の動作を切り替えるモードであり、アプリケーションの汎用的な互換性とは関係がありません。もちろん ASP.NETアプリケーションの互換性には影響があります。

    image

    モジュール構造は実は裏でとても大きな影響を開発プロセスに与えました。開発チームは OS の出荷(メジャー、マイナー、サービスパック)を待たずに IIS のサーバー機能を個別に出荷できるようになったのです。このことで登場してきたのが IIS Extensions です。以前は OOB ツールと呼んでおり、このことは下記の Tech・Ed の振り返りで書きました。

    【IIS7】 Tech・Ed 2008 セッション振り返り(01)

    サーバー機能の出荷方法の自由度が上がったこの変更により、下記の図のような構造でIISの環境というのはインストールされます。R2ではいくつかの Extension を標準機能として取り込んだ形になるので 標準機能+標準機能にならなかったExtension +今後開発されてくる Extension と利用できるサーバー機能の位置づけが少し複雑になります。

    image

    そして Vol.–1 で書いたように R2 の IIS のバージョンは IIS 7.5 になります。WFetchでヘッダーを確認するデモのほか、すごく簡単ですが、下記をやってレスポンスヘッダーでちゃんと 7.5 を返しているのをご覧いただきました。

    Windows PowerShell を開きます!
    $x = New-Object System.Net.WebClient
    $x.OpenRead(“http://localhost”)
    $x.ResponseHeaders.GetValues(“Server”)

    3/15 思い切りミスタイプしてましたので直しました。すみません。

    この Part I の最後では IIS Extensions の現在の出荷状況の表をつけました。セッション前日にも状況が変わったんですが、今日時点でもまーた変わってます。IIS Smooth Streaming のベータが上がりました。
    ※ IIS Extensions の状況についてこの図は参考情報で、実際の最新状況は Extensions のサイトできちんと確認ください。

    image

    以上、Part I でした。。。とっても要約するとこんな感じです。(*^_^*)

  • 【IIS7】 FTDセミナー振り返りシリーズ Vol.2

    Part II : Windows Server 2008 R2における IIS 変更点

    それでは R2 でバージョン以外(それだけってことは無いですな)に何が変わったか見ていきましょう。
    ただ、この Part は現在のベータ版での話が多いので製品版出荷時に内容や仕様が異なることがある点をご承知おきの上、お読みください。

    Server Core 上の ASP.NET サポート

    お待ちかね、かなり多くの人が私にコメントしていただいた機能が R2 に搭載されます。
    本題に入る前に実は少し Server Core を採用した場合の効用を少しお話しました。
    ※ここに書いてあることの多くは Server Core 開発チームのブログにも書いてあります。

    ライトウェイトな OS 形態を目指している Server Core はシェル、IEなど多くの完全インストールにあるコンポーネントが存在しないため、適用する必要のある更新プログラムが当然かなり減ります。元々常に最新の更新プロ���ラムを適用することにしているルールで運用している場合に比して最大65%(かなり概数)適用数を減らすことができるような数字も出ています。

    また、どんどんライトウェイトにしていくと今度は OS が占有する HDD の領域も気になってくると思いますが、Windows Server 2008 以降では各機能がパッケージ化されており、DVDの挿入が必要ないようにセキュアな場所にキャッシュされているわけですが、そのキャッシュを削除する方法が開発チームのブログで紹介されています。

    Reducing the Server Core disk footprint

    R2 の Server Core上に載るものは具体的には何が今までと違うのでしょう?簡単に要約すると以下が搭載されることになると現時点では言われています。

    .NET Framework 2.0 のサブセット
    .NET Framework 3.0 のサブセット
    .NET Framework 3.5 のサブセット
    ASP.NETのサブセット
    ※ベータの段階なのでどの名前空間が無いのかの議論は確定情報ではないのであまり有益ではないと思うのですが、以下で列挙されています。簡単に言うと CUI な Server Core では WPF が使われないという想定から搭載されないのが大きな特徴です。

    .NET 2.0 and Server Core in Windows Server 2008 R2

    そしてこれらが存在することでついに Windows PowerShell (これは次の項で取り上げます。)も搭載されます。

    一つ、Server Core R2で汎用的に覚えておくべきなのは Windows Server 2008 R2 が 64ビット版のみの提供になることで 32ビットのアプリケーションの動作を行いたい場合の WOW64 の状況だと思います。Server Core R2 では WOW64 は既定では入っていないので個別にインストールする必要があります。

    ここで 余談として DISM.exe というコマンドの話をしました。実は実現できて来なかったものがもう一つあって、更新プログラムや機能のオフライン適用があります。Windows 7 や Windows Server 2008 R2 に対応した展開用のツールとして、つまり imagex などと並んで開発されたツールとして DISM.exe というのができました。

    Dism /online /enable-feature /featurename:MicrosoftWindowsPowerShell

    ここで注目に値するのは /online でここを /image にするとオフライン適用が wim と vhd(これは確認しないで書いています。) に実行できるかなりパワフルなツールです。これは下記で書きました。

    【Win2008R2】 DISM ってなんだろう?

    デモ的には以下を用意していました。

    DISM /?
    DISM /online /get-features
    DISM /online /enable-feature /feature-name:MicrosoftWindowsPowerShell /feature-name:ServerManager-PSH-Cmdlets

    PowerShell を起動。
    Import-Module servermanager
    $module = Get-Module servermanager
    $module.ExportedCmdlets

    Get-WindowsFeature

    このコマンドは完全インストールにおける servermanagercmd –query の出力によく似ていてきれいにフォーマットされています。やっぱり PowerShell 一本で行くと物事がスムーズ?! ( ^^) _U~~

    Add-WindowsFeature

    この Add-WindowsFeature も役割や機能をインストールできるのでこれで選択肢はいくつになったんだろうか?

    ちょっと数えてみよう。。。GUI(クライアントはコンパネ、サーバーはサーバーマネージャー)で、pkgmgrで、 ocsetupで、 servermanagercmd(完全インストールのみ)で、 dismで、 Add-WindowsFeature と7つかぁ あとは OS 展開とともに準備する MDT を全部総合すると 8つ。。。多いな。今度特徴を整理しますね。

    IIS7関連のインストール関係の投稿に全部この DISM および この ServerManager のコマンドレットについて追記していきます。

    PowerShell Snapin for IIS7

    IIS7 が他の PowerShell 対応製品と違うのは PowerShell の開発時期と IIS7 の開発時期が重なっていた点があります。このため、今までのセミナーなどでも繰り返し appcmd.exe というのがあって、、、という話をしてきましたが、今回のこの Snapin が提供されると他の OS の機能と同じようにネイティブに PowerShell で IIS が管理できるようになります。

    image

    R2 だと Import-Module WebAdministration をしてから。

    実行中のリクエストの詳細が取れたりもしますが、 IIS7 が RSCA(Runtime Status/State Control API)という状態公開の API を持っているからで、それすらも PowerShell で触れるようにしてくれます。相当パワフルです!

    FTP7 & WebDAV

    FTP といえば、IIS7 に付属してなかったっけ?という質問をいつもいただきますが、あれは IIS6 相当の FTP であって、管理も今まで通りに IIS6 の IISマネージャーで管理するものです。なので、IIS7 の IISマネージャーで FTP を探しても何も出てきません。今回の話題である FTP はこの FTP ではなく、IIS7 に完全対応した FTP7 と呼ばれている IIS Extension として開発がされてきたものです。その FTP7 が標準機能として IIS7.5 には搭載されます。

    image

    WebDAVについても補足が必要でしょう。IIS7、つまり Windows Server 2008 のレベルでは WebDAV サーバーの機能は標準で搭載されていません。これは Windows Server 2003 のインストールからすると機能が無くなったと感じた人もいると思いますが、2003 の WebDAV には改良すべき点があり、Windows Server 2008 用に再開発が必要だった背景があります。このため、IIS Extension として開発が行なわれ、R2では標準搭載となるわけです。

    image

    IISマネージャの追加機能

    IIS だけでなく、現在の Windows Server の設計思想は基本的に CUI から全機能・設定操作を利用できることをまず考えてライブラリが構築され、そこから必要な GUI が作成される思想が根底を流れています。これは R2 に Windows PowerShell がコマンドプロンプトと同様にインストールなしで最初から入っていることからもわかると思いますし、PowerShell の思想でもあります。

    このことから IISマネージャでは設定できず、.configファイルを直接編集する、あるいは appcmd set config ~ などで設定を行なう必要のある設定が今までありました。その中から GUI があった方がいいという希望の多かったものについて IISマネージャの機能も追加されているという流れでいくつか GUI 操作ができるようになります。

    image image image image

    この中でも要求フィルターの機能は多用される UrlScan というツールが標準機能化されたモジュールのため、とても声が大きかったですし、PHP を IIS で動作させる用途で FastCGI を GUIで設定できるようになっています。

    実はこれらは Administration Pack という IIS Extensionとして開発されてきた機能たちになっています。Administration Pack ではあと二つアイコンが追加されるのですが、R2にはその内の一つを搭載予定で、もう一つは改良を続けることになり、R2には入らない予定です。

    入る方の機能は 構成エディター です。

    image

    この構成エディターはすごく新しい構成エディターをわかりやすくするもので、XMLを直接編集するのではなく、ノードを表示してそのノードにある構成(設定)を直接編集するものになっています。

    image

    そして設定を編集後に実は その設定をスクリプトで行なう場合のスクリプトを自動生成してくれます。マネージコード(Microsoft.Web.Administration)、JavaScript(Microsoft.ApplicationHost.WritableAdminManager)、AppCmd それぞれの生成例が表示されるのでこれをカット&ペーストして自動化に役立てることができます。

    image

    改良して欲しいなあと当然思うのは PowerShellのスクリプトをまだ吐いてくれない点です。これは開発チームに強くフィードバックしています。

    一方で含まれない機能は IIS Reports というものです。皆さんは Log Parser というツールをご存知でしょうか。IISのログを収集してそれを整理して解析を行なう際に便利なツールです。IIS Reports はこれを一歩進めて、現場でよく利用される典型的なグラフを自動生成してくれる機能で、当初は Log Parser を内部的に使っていましたが、現在はどうか私は知りません。初めて登場したときには Administration Pack は Log Parser のインストールを前提条件にしていました。現在はその前提条件は無くなっています。下記のようなグラフが出るんですよね。

    IIS Reports

    R2 に入らないことが残念なんですが、察するにこのツールへのお客様の期待値が高く、機能的に不十分だったため人気が出なかったと想像しています。普段 W3C ログから Excelに取り込んで苦労なさっている方にはこういうものの開発は朗報だと思います。とりいそぎ この機能を使いたい方は Administration Pack を Windows Server 2008 にインストールいただければこの機能も使用できます。各 Extension の R2 対応については今後対応していくと思いますのでお待ちください。

    システム構成ファイルへの設定の監査ログ

    IIS7.0 でできなかったことの一つとして、構成ファイルへの書き込み内容を記録として残すという点があります。R2ではイベントビューアで記録を確認できるようになります。既定ではオフになっているのでオンにしてから使うものになります。

    image

    ベストプラクティスアナライザー

    これはIISの新機能というよりは R2 の新機能で、IISはその対象になっている役割と言ったほうが正しいと思います。以前からサーバー製品で製品とは別に出荷されてきたものですが、今回はOSにそういうものを載せているということになります。例えば 基本認証だけどSSLは? とかいう項目をチェックしてくれます。

    image

    サーバーマネージャ-の機能として搭載されますので Webサーバー の役割を追加した際にはチェックしてみてください。ただ、ベータ段階ではチェック項目が少ないのでどんなものかだけ把握できると思います。Server Core にも PSH のコマンドレットが搭載されますのでそちらでも使えるようになると思います。

    Start /w ocsetup BestPractices-PSH-Cmdlets
    add-module BestPractices
    get-bparesult, invoke-bpamodel set-bparesult

    そして Part II の最後にはアプリケーションの移行に関する注意点を説明をしましたが、それは別テーマで今度書こうと思います。

  • 【IIS7】 FTDセミナー振り返りシリーズ Vol.3

    Part III : さらに続くIISの可能性の追求

    この Part については このブログでかなり取り上げているものの中からいくつか紹介したものになります。


    Web Platform Installer

    これはまだ英語版環境のみなんですが、Microsoft の Web環境を構築するための統合インストーラです。
    http://www.microsoft.com/web から入手します。

    image

    こういうシンプルな画面です。うーん 日本語版が欲しい。。。というフィードバックは既にしています。


    開発コードネーム ”Dublin”

    IIS は コンテンツをホストする Webサーバーでもありますが、WCF(Windows Communication Foundation)、WF(Windows Workflow Foundation)を使ったサービスをホストするアプリケーションプラットフォームでもあります。

    ”Dublin”はこのようなアプリケーションの運用面を強力にサポートしてくれる機能群を提供し、IISとして目に見えるものとしては IIS マネージャにこれらを管理する機能のアイコンが増えます。英語ですが、構造的な話は下記を参照ください。

    WCF And WF Services In The .NET Framework 4.0 And “Dublin”
    http://msdn.microsoft.com/en-us/magazine/2009.01.net40.aspx

    私も以下の投稿を以前にしていますのでそちらもよろしければお読みください。

    【IIS7】 ASP.NETとの統合が進んであとは何を出してくるのかと思ったら。。。


    IIS Smooth Streaming

    メディアコンテンツは今まさに流行していますが、IISがメディアストリーミングの強力なホストにどんどん成長していきます。特に IIS Smooth Streaming は 下記のサイトでのデモをお見せしましたが、リアルタイムに配信状態情報を提供できるなど強力な機能をこれからどんどん実装していくことになっています。

    http://www.smoothhd.com

    補足:2/20の本番以降に実は ベータ版の提供が始まっていますので試したい方は www.iis.net/extensions へお越しください。

    メディアのストリーミングについては歴史も含め、整理するつもりですので、別途投稿したいと思います。


    というようなセッションを実施いたしました。ここで書いていないデモなどはきれいにまとめ次第、書いていきますのでお待ちください。

    最後のスライドにあった関連リソースは下記に貼っておきます。

    IIS 製品ページ
    http://www.microsoft.com/japan/iis

    TechNet/MSDN IISフォーラム
    http://social.technet.microsoft.com/forums/ja-JP/iis7ja/threads/
    http://social.msdn.microsoft.com/forums/ja-JP/iis7ja/threads/

    tech・days Japan 2009 (T3-301 “Dublin“)
    http://www.microsoft.com/japan/events/techdays/default.mspx

    IIS.NET(英語)
    http://iis.net

    Server Core チームのブログ(英語)
    http://blogs.technet.com/server_core/default.aspx

    WCF And WF Services In The .NET Framework 4.0 And “Dublin”
    http://msdn.microsoft.com/en-us/magazine/2009.01.net40.aspx

    Smooth Streaming の Tech Preview、実際にご覧ください!
    http://www.smoothhd.com/

  • 【IT Pro道場】時間が経ってから結構注目されている自主トレシリーズ

    松崎と全国を回ってお話をさせていただいた IT Pro道場 アプリケーションプラットフォーム編 のオンライン版、自主トレシリーズが最近にわかに注目を集めていて、結構好評いただいている状況です。とてもうれしい(●^o^●)です。

    Webアプリケーション(ASP.NET、WCF、WFも含む)の基本的な構築にこれから着手しようと思っていらっしゃる方には最適のコンテンツだと思うので是非 まだアクセスしたことの無い方はサイトにお越しになってください。開発要素だけでなく基盤周りや運用監視も視野に入れた情報が揃っています!

    もし何かもっとこういう情報が欲しいなどご要望がありましたらそれもぜひお寄せください。
    検討して追加してきたいと思っています。

    現在、TechNetのトップページでお役立ちコンテンツとしてリンクがあります。
    http://technet.microsoft.com/ja-jp/default.aspx