まあ、興味があれば下記の一連の記事を読んでいただきたいのですが、今までに”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
そもそもなんで 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^●)
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 に検証目的で放り込んでみましたが、
のような画面を見ていただくとどんな機能なのかわかると思います。これの注意はいくつかこの Extension をインストールすることで同時に Update されるものがある点です。
これの入手もぜひ IIS Extensions のサイトへ。 http://iis.net/extensions
皆さん、いかがお過ごしですか? 私はというとあっという間に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、新宿でお待ちしています!!
いつもセミナーやった後で振り返りと要点を整理するようにしていますが、今回は「-1」をやってみようというこの企画いってみよう!実はなんで「-1」をやろうと思ったかというと、検索で「IIS8」でここに来ている人が結構多いからです。
私の最初の予告デモはこちら。
前置き: インターネット インフォメーション サービスと言えば 「Microsoft の Web サーバー」という認知をしていただいてきました。歴史的に・・・云々 ・・・そこで IIS7.0に辿り着きました。IIS7.0 では・・・云々・・・。それでは R2 の IIS ってどうなんでしょう? まあ見てみましょうか。。。
→→→ Server: Microsoft-IIS/7.5\r\n
Windows Server 2008 R2 および Windows 7 に搭載される Web サーバーは IIS8 ではなくて、IIS7.5 です。
と行こうかなと思っております。
ちなみにこの wfetch ってあまり見たこと無いかもしれませんが、IIS.NETで単独でも入手できるブラウザー依存を気にしないでレスポンスヘッダーをチェックしたい時に使えるツールです。他の方法もよくデモされますが、ブラウザの中でレスポンスヘッダーを返すようにページを作ったり、PowerShell の中で System.Net.WebClient を使って表示するとか色々とありますけど、簡単にやりたい時にはこれがとても便利です。(^-^)
Steve Schofieldさんのブログから http://weblogs.asp.net/steveschofield/archive/2009/02/16/more-cool-stuff-from-iis-team-the-dynamic-ip-restrictions-module.aspx
機能の抜粋ですが、以下に日本語で書いておきます。
これらの機能に加えて、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
もうお手元に 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 との関係を見ていきたいと思っていますけど。
昨年の 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
サーバーとクライアントを再起動する。
楽チン!!
私は 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 ファイルをみてしまうのが結構今までお薦めだったんですが、ここをまず見る方が便利かもしれません。
すでにお気づきの方もいらっしゃると思いますが、マイクロソフトのサイトでの 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 が返ってきますよ。
この画面ショットは 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 CATチーム(ワールド ワイドでユーザー様向けのデータベースの設計支援や困難な問題を解決するためのチューニングのアドバイス等を行っているマイクロソフトの開発部門に所属するチームです。)から出てきている様々な資料の整理を行っています。今回 SQL ベストプラクティスページとして公開し、順次 よくしていきますので皆様のフィードバックをお待ちしています。
■SQLベストプラクティス http://technet.microsoft.com/ja-jp/sqlserver/bb331794.aspx
特に TOP10 リストシリーズが米国では好評なんですが、日本ではまだアクセスが少ないようです。多分 検索で当たらないのだと思うのでぜひこの機会に直接 ここから飛んでご覧ください。(●^o^●)
金曜のセッションではここで書いているテーマに関しては大きくふれることができないのでブログで書いておこうと思いましたのであらためてまとめておきます。
まず、あえて小数点を書かなかったのはこうすることでクライアント系を含みたかったからです。
このように整理するとわかりやすいですかね。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 一枚程度の投稿ですが、これが基礎です。これを押さえていただければ移行に関して結構理解いただけたと思っていいと思います。概観はかわっていますが、色々な点で便利になっているので慣れれば便利さを体感いただけると思います。
いやぁ 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^●)
大変遅くなりましたが、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^●)
この投稿の内容は@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設定)のものです。
これらとともに継承してサイトやアプリケーションで設定を上書き(Override)することができ、例えば下記のような設定ができます。下図の例は左がサイトレベルでのディレクトリ参照を許可し、アプリケーションレベルで index.php を追加した場合になります。
これらが実はメモリー上でうまく合わさって構成が成り立っています。 ここで実は R2 の IIS から搭載される 構成エディターを少しご覧いただきました。構成エディターはこのマージされたシステム構成を把握するのにとてもいいツールになっています。
そして、この構成システムはすごく単純でありながらほぼすべての設定がこのテキストファイルベースでできること、どう書けばいいのかはスキーマファイルが用意されていることをお伝えしました。IISの開発チームは最近でこそ新しい構成エディターを使い始めているようですが、実際には.configファイルを書く際にスキーマファイルを「教科書」のように使っていた点もお話しました。スキーマに書いてない設定は動かないので「バイブル」と言っていいかもしれません。
モジュール構造
IIS7 の二つ目の大きな特徴は各 IIS のサーバー機能が一つ一つ独立した DLL になったことが挙げられます。セキュリティ面、リソース面において今までの IIS に比べると自由度が大幅に向上しました。そして、IIS のサーバー機能を皆さんが.NETのコードで開発することもできる(& 売ることができる)ようになったことで新しいビジネスモデルも登場しています。
次にお話したのは二つのモードについてで、IIS5互換モードが無いこと、つまり、IIS5互換モードで動作しているアプリケーションはあくまでもIIS5対応のアプリケーションであって、IIS6対応したアプリケーションではないことなどをお話しました。この辺は当日十分にお話できないと思い、下記の投稿を事前にしていました。
【IIS7】 IIS5からIIS7への移行を考えるとき
IIS7 におけるモードは ASP.NET の動作を切り替えるモードであり、アプリケーションの汎用的な互換性とは関係がありません。もちろん ASP.NETアプリケーションの互換性には影響があります。
モジュール構造は実は裏でとても大きな影響を開発プロセスに与えました。開発チームは OS の出荷(メジャー、マイナー、サービスパック)を待たずに IIS のサーバー機能を個別に出荷できるようになったのです。このことで登場してきたのが IIS Extensions です。以前は OOB ツールと呼んでおり、このことは下記の Tech・Ed の振り返りで書きました。
【IIS7】 Tech・Ed 2008 セッション振り返り(01)
サーバー機能の出荷方法の自由度が上がったこの変更により、下記の図のような構造でIISの環境というのはインストールされます。R2ではいくつかの Extension を標準機能として取り込んだ形になるので 標準機能+標準機能にならなかったExtension +今後開発されてくる Extension と利用できるサーバー機能の位置づけが少し複雑になります。
そして 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 のサイトできちんと確認ください。
以上、Part I でした。。。とっても要約するとこんな感じです。(*^_^*)
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 が管理できるようになります。
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 には搭載されます。
WebDAVについても補足が必要でしょう。IIS7、つまり Windows Server 2008 のレベルでは WebDAV サーバーの機能は標準で搭載されていません。これは Windows Server 2003 のインストールからすると機能が無くなったと感じた人もいると思いますが、2003 の WebDAV には改良すべき点があり、Windows Server 2008 用に再開発が必要だった背景があります。このため、IIS Extension として開発が行なわれ、R2では標準搭載となるわけです。
IISマネージャの追加機能
IIS だけでなく、現在の Windows Server の設計思想は基本的に CUI から全機能・設定操作を利用できることをまず考えてライブラリが構築され、そこから必要な GUI が作成される思想が根底を流れています。これは R2 に Windows PowerShell がコマンドプロンプトと同様にインストールなしで最初から入っていることからもわかると思いますし、PowerShell の思想でもあります。
このことから IISマネージャでは設定できず、.configファイルを直接編集する、あるいは appcmd set config ~ などで設定を行なう必要のある設定が今までありました。その中から GUI があった方がいいという希望の多かったものについて IISマネージャの機能も追加されているという流れでいくつか GUI 操作ができるようになります。
この中でも要求フィルターの機能は多用される UrlScan というツールが標準機能化されたモジュールのため、とても声が大きかったですし、PHP を IIS で動作させる用途で FastCGI を GUIで設定できるようになっています。
実はこれらは Administration Pack という IIS Extensionとして開発されてきた機能たちになっています。Administration Pack ではあと二つアイコンが追加されるのですが、R2にはその内の一つを搭載予定で、もう一つは改良を続けることになり、R2には入らない予定です。
入る方の機能は 構成エディター です。
この構成エディターはすごく新しい構成エディターをわかりやすくするもので、XMLを直接編集するのではなく、ノードを表示してそのノードにある構成(設定)を直接編集するものになっています。
そして設定を編集後に実は その設定をスクリプトで行なう場合のスクリプトを自動生成してくれます。マネージコード(Microsoft.Web.Administration)、JavaScript(Microsoft.ApplicationHost.WritableAdminManager)、AppCmd それぞれの生成例が表示されるのでこれをカット&ペーストして自動化に役立てることができます。
改良して欲しいなあと当然思うのは PowerShellのスクリプトをまだ吐いてくれない点です。これは開発チームに強くフィードバックしています。
一方で含まれない機能は IIS Reports というものです。皆さんは Log Parser というツールをご存知でしょうか。IISのログを収集してそれを整理して解析を行なう際に便利なツールです。IIS Reports はこれを一歩進めて、現場でよく利用される典型的なグラフを自動生成してくれる機能で、当初は Log Parser を内部的に使っていましたが、現在はどうか私は知りません。初めて登場したときには Administration Pack は Log Parser のインストールを前提条件にしていました。現在はその前提条件は無くなっています。下記のようなグラフが出るんですよね。
R2 に入らないことが残念なんですが、察するにこのツールへのお客様の期待値が高く、機能的に不十分だったため人気が出なかったと想像しています。普段 W3C ログから Excelに取り込んで苦労なさっている方にはこういうものの開発は朗報だと思います。とりいそぎ この機能を使いたい方は Administration Pack を Windows Server 2008 にインストールいただければこの機能も使用できます。各 Extension の R2 対応については今後対応していくと思いますのでお待ちください。
システム構成ファイルへの設定の監査ログ
IIS7.0 でできなかったことの一つとして、構成ファイルへの書き込み内容を記録として残すという点があります。R2ではイベントビューアで記録を確認できるようになります。既定ではオフになっているのでオンにしてから使うものになります。
ベストプラクティスアナライザー
これはIISの新機能というよりは R2 の新機能で、IISはその対象になっている役割と言ったほうが正しいと思います。以前からサーバー製品で製品とは別に出荷されてきたものですが、今回はOSにそういうものを載せているということになります。例えば 基本認証だけどSSLは? とかいう項目をチェックしてくれます。
サーバーマネージャ-の機能として搭載されますので Webサーバー の役割を追加した際にはチェックしてみてください。ただ、ベータ段階ではチェック項目が少ないのでどんなものかだけ把握できると思います。Server Core にも PSH のコマンドレットが搭載されますのでそちらでも使えるようになると思います。
Start /w ocsetup BestPractices-PSH-Cmdlets add-module BestPractices get-bparesult, invoke-bpamodel set-bparesult
そして Part II の最後にはアプリケーションの移行に関する注意点を説明をしましたが、それは別テーマで今度書こうと思います。
Part III : さらに続くIISの可能性の追求
この Part については このブログでかなり取り上げているものの中からいくつか紹介したものになります。
Web Platform Installer
これはまだ英語版環境のみなんですが、Microsoft の Web環境を構築するための統合インストーラです。 http://www.microsoft.com/web から入手します。
こういうシンプルな画面です。うーん 日本語版が欲しい。。。というフィードバックは既にしています。
開発コードネーム ”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
Smooth Streaming の Tech Preview、実際にご覧ください! http://www.smoothhd.com/
松崎と全国を回ってお話をさせていただいた IT Pro道場 アプリケーションプラットフォーム編 のオンライン版、自主トレシリーズが最近にわかに注目を集めていて、結構好評いただいている状況です。とてもうれしい(●^o^●)です。
Webアプリケーション(ASP.NET、WCF、WFも含む)の基本的な構築にこれから着手しようと思っていらっしゃる方には最適のコンテンツだと思うので是非 まだアクセスしたことの無い方はサイトにお越しになってください。開発要素だけでなく基盤周りや運用監視も視野に入れた情報が揃っています!
もし何かもっとこういう情報が欲しいなどご要望がありましたらそれもぜひお寄せください。 検討して追加してきたいと思っています。
現在、TechNetのトップページでお役立ちコンテンツとしてリンクがあります。 http://technet.microsoft.com/ja-jp/default.aspx