Web配置(Web Deploy)
4/12から4/14に、米国で開催されたマイクロソフト社のイベント MIX11で発表されたWindows Azureの追加機能の1つにWeb配置機能があります。これは、一度Windows Azureへアプリケーションパッケージを配置しておけば、次回からはWeb配置機能を利用してWebアプリケーションのみ入れ替えることができます。通常のIISでできることが、またひとつAzureでも可能になったといえます。
ただし、以下のように、PaaS環境であるWindows Azure固有の制限も存在します。
- Web配置は、1ロール1インスタンスのみ可能です。1インスタンスならば、複数Webロールでも利用可能です。
- 反復的な開発とテストのシナリオのみ対象としています。
- Web配置は、パッケージの作成をバイパスします。Web ページへの変更は永続的ではありません。変更を保存するには、パッケージし、サービスを展開する必要があります。
結論として、「永続的な変更でないこと」を理解し、あくまで開発やテストでの利用に限って利用するようにしましょう。また、本機能を利用するには、Windows Azure SDK 1.4 Refresh版が必要です。
Web配置の有効化
それでは、実際にWindows AzureのWeb配置機能を試してみましょう。初期状態のまま配置し、Web配置機能で変更してみます。そのためサンプルファイルはありません。
Visual Studioを起動し、[ファイル]-[新規作成]-[プロジェクト]を選択します。Windows Azureプロジェクトを選択し[OK]ボタンをクリックします。新しいWindows Azureプロジェクト作成画面が表示されるため、ASP.NET Webロールを[OK]ボタンをクリックし、新しいソリューションを作成します。
プロジェクトを作成したら、初期状態のままパッケージの配置を行います。ソリューションエクスプローラーからプロジェクトを選択し、コンテキストメニューから[発行]を選択します。
Windows Azure プロジェクトの配置ダイアログが表示されます。ダイアログには、[すべてのWebロールのWeb配置を有効にする]チェックボックスがあり、これを有効にすることでWeb配置機能を利用することができます。ただし、Web配置機能を有効にするためには、あらかじめリモートデスクトップ接続の構成が必須です。
「Windows Azureの運用/デバッグを効率化する リモートデスクトップ」の記事を参考に、リモートデスクトップ接続を構成すると、[すべてのWebロールのWeb配置を有効にする]のチェックボックスをチェックすることができるようになるため、チェックをオンにします。(図7)。
警告アイコンにマウスを載せると上の図の通り、自己証明書を利用する旨の警告メッセージが表示されるため、利用にあたっては注意してください。
パッケージの配置が完了したら、Webサイトを開いてみます。いつもの見慣れた画面が確認できます。
Web配置の利用
パッケージの配置が完了し、Webアプリケーションの画面が確認できたら、Webアプリケーションを変更します。Webフォームをリスト6のように修正しますが、自由に修正していただいて構いません。
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <h2> Web配置 サンプル </h2> <p> 日付:<%= System.DateTime.Now %> </p> </asp:Content>
Webアプリケーションの修正が終わったら、Web配置を実行します。Web配置は、Webロールプロジェクトを選択して[発行]を選択します。同じ発行で紛らわしいのですが、パッケージを配置する場合は、Azureプロジェクトのコンテキストメニューから[発行]を選択し、Web配置を利用する場合は、Webロールのコンテキストメニューから、[発行]を選択します。
下図のWebの発行ダイアログが表示されます。サービスURLと、サイト/アプリケーションは既定の値が設定されています。ユーザー名とパスワードに、リモートデスクトップ接続の構成で設定したユーザー名とパスワードを入力します。[発行]ボタンをクリックし、エラーが表示されなければWeb配置は成功です。
Web配置が完了したら、ブラウザをリロードしてみましょう。修正した内容が、即座に反映されていることが確認できます。
Web配置の注意
以下の場合、Web配置が有効化できないことを確認しています。
- Web配置は、Visual Studioからパッケージの配置を行ったときのみ有効化されます。サービスパッケージの作成をVisual Studioから行って、管理ポータルから配置する方法では有効化できません。
- WebロールがFull IISではなく、HWCとして構成されていると、本機能は有効化できません
- ソリューションをReleaseビルドで構成していると、本機能は有効化できません。
インスタンス数を2以上に設定した状態で、パッケージの配置を行おうとすると、図11の警告ダイアログが表示されます。ダイアログの通り、強制的に1インスタンスで配置されますが、サービス構成ファイルのインスタンス数が書き換えられるわけではありません。
![図11 インスタンス制限の警告画面](http://cz-cdn.shoeisha.jp/static/images/article/5959/5959_Z2-Warn.gif)
先ほどのWeb配置のダイアログをみて気づいた方もいると思いますが、Web配置機能を有効にすると、InputEndpointを1つ消費することになります。図12の通り8172番ポートを利用していることが分かります。
![図12 管理ポータルのInputEndpoint一覧](http://cz-cdn.shoeisha.jp/static/images/article/5959/5959_Z2-InputEndpoint.gif)
まとめ
IISのカスタマイズ方法は、TechNetやMSDNによって、幅広く公開されています。スタートアップタスクと組み合わせて、柔軟なカスタマイズを行うことによって、PaaSならではのAzureサービスが提供できると思います。
またWeb配置機能の登場によって、より開発しやすくなるのではないかと思います。