Visual Studioを使用してWindows Azure WebロールをWeb Deployする方法

Enabling Web Deploy for Windows Azure Web Roles with Visual Studioをざっくり意訳した投稿です。

先週、Windows Azure SDKチームは、Windows Azure SDK 1.4.1 refreshをリリースしました。これは、とても重要です。このリフレッシュ版では、Windows Azure用にVisual StudioでWeb Deployのサポートを追加しました。これは、とても重要です。Web Deployは、開発者がWindows AzureのWebロールのコードを頻繁に変更できるようにします。テストの為に、変更したコードをアップデートするのに5分以上待っていた人には朗報です。機能紹介は、Channel 9ビデオで確認できます。

Web Deployは、開発・テスト用にWindows Azureで動作させているWebロールへ、開発者が簡単に変更の増分だけを送信することができます。新しいパッケージを作成しデプロイすることなく、直接対象のロールに変更を適用できます。Production環境へデプロイする最終パッケージを作成する前に、クラウド上でコードや設定を調整するに最適な方法です。

Web Deployを使用する際の、いくつかの制限事項:

  • Webロールは、必ずシングルインスタンスでなければなりません。
  • Webロールに加えた変更は、一時的なものです。ロールインスタンスが再起動すると、変更はなかったことになります。
  • 開発とテスト目的のみに使用できます。Productionでアプリケーションのアップデートへの使用を考えてはいけません。 SDK refreshのダウンロードは、 Web Platform Installer を使用できます:

Visual Studio Tools for Windows Azureは、Web Deployの使用をサポートしています。Webアプリケーション公開ウィザードを使用して、増分更新をするための公開プロフィールを自動的に作成します。

Web Deployプラグインをインストールすると、クラウドツールのダイアログに、“Enable Web Deploy for all Web Roles (requires Remote Desktop)”という項目の新しい選択肢が追加されます。

 

この機能を使用するために、最初にリモートデスクトップのセットアップをしなければなりません。一度リモートデスクトップを有効にすると、Web Deployにチェックを入れられるようになります。

補足: Web DeployはデフォルトでSSL暗号化に自己証明書を使用して設定します。Web Role上のIIS Manageで証明書を変更することができます。

いつも通り、Windows Azureプロジェクトを公開します。Web Deployを有効にするために、しなければならない作業はすべてVisual Studioからできます。Visual Studioが、Web Deployプラグインを内包し、ServiceDefinitionのinputエンドポイントを定義します。これらの変更は、公開プロセスの一部だけで、開発には影響がありません。

一度デプロイが完了すると、Webアプリケーションプロジェクト上で右クリックをし、“Publish”を選択できるようになります:

クラウドツールは自動的に、正しい公開プロフィールを作成します。:

Web Deployは、リモートデスクトップと同じ証明書を使用します。パスワードを入力し、“Publish”をクリックします。Web Deployは、Windows Azureに通常再デプロイするのにかかる時間よりも短い時間で更新します。

Web Deployポート番号の変更

デフォルトでは、Web Deployは、Web管理のポート番号8172を使用します。多くの場合は、これで問題ありません。しかし、IT環境によっては、このポートを使用してSSL通信をできない場合があります。そんな場合は、別のポートを使用するためにWeb Deployをカスタマイズしなければなりません。

Visual Studioクラウドツールは、ポート番号をカスタマイズするためにWeb Deployのinputエンドポイントの設定を変更することができます。IT管理者に確認し、推奨するポート番号を確認します。もしくは、一般的にSSLで使用されているので、大抵の環境で開いている443ポートを使用するようにWeb Deployの設定を変更します。ポート番号の変更はマニュアル作業で、クラウドプロジェクトファイル(.ccproj)を編集します。

 

1) 「Unload the project」を選択します。

2) 「Edit the project file」を選択します。:

3) プロジェクトのプロパティに、この設定を追加します。(‘WebRole1’は、個々のwebロール名に置き換えてください。): <WebDeployPorts>WebRole1:443</WebDeployPorts>

複数のWebロールの設定を追加できます。’|’ で区切って定義します。:

<WebDeployPorts>WebRole1:443|WebRole2:444</WebDeployPorts>

4) プロジェクトをreloadし、Windows Azureへクラウドプロジェクトをデプロイします。

Web Deploy for Windows Azureのトラブルシューティング

Windows AzureにWeb Deployする際の一般的な問題を記載します。

現象: Web Deployを使用して、Webロールを更新しようとするとエラーメッセージが返ってきます。

"Error : Web deployment task failed. (…) The response header ‘MSDeploy.Response’ was ” but ‘v1’ was expected."

問題 1: IT環境によっては、Web DeployとWeb Management Serviceのデフォルトポート8172でのSSL接続を許可していないことがあります。

解決方法 1: 上の内容を参照して、Web Deployポート番号を変更します。

 

問題 2: Web DeployサービスがWeb Roleインスタンス上で正しく動作していません。

解決方法 2: リモートデスクトップでWebロールインスタンスにログインし、Web Management ServiceとWeb Deploy Serviceが両方動作しているか確認します。両方のサービスを再起動してみてください。

現象: Web Deployチェックボックスにチェックを入れ、クラウドプロジェクトを公開したのに、Webアプリケーションプロジェクト上に公開プロフィールがありません。

問題: Visual Studio 2010 RTMで公開プロフィールが削除されることがあります。

解決方法: Visual Studio 2010 SP1で、この問題は解決しています。