2014年2月26日より日本データセンターでの稼働を開始したWindows Azure。本連載ではWindows Azureが提供するサービスの内、「 Windows Azure Webサイト 」( 以降、Webサイト)の機能をASP.NET利用者の視点から紹介します。
連載の目的
初めての「Webサイト」に対する疑問を解消し、ASP.NETで作成するWebアプリケーションを「Webサイト」上で運用するイメージを掴みます。「 何ができて何ができないのか?」「 ASP.NETのような動的なWebアプリケーションを運用するには不十分ではないか?」「 クラウドサービスの方が適しているのではないか?」といった疑問を解消します。
「Webサイト」だからこそできること
「Webサイト」はWindows Azureが提供するサービスの中で、最もWebホスティングに特化したPaaSと言えます。Webホスティングに特化しているからこそ、利用者はWebアプリケーションの構築/運用に集中でき、「 Webサイト」の強力なサポートを受けられます。ただのオンプレミス環境の代わりでは収まらない、「 Webサイト」の機能を、ASP.NET利用者の視点から紹介します。
第1回目のポイント
第1回目は、ASP.NET Webプロジェクトの用意から「Webサイト」へのデプロイ、サイトへのアクセスまでの一連の流れを追いながら、以下のポイントを押さえます。
ポイント
「Webサイト」はClassic ASPから昨今のASP.NETフレームワークまで対応
ASP.NET Webプロジェクトをそのままデプロイ可能
WebDeployやソース管理システム等、数多くのデプロイ方法をサポート
デプロイ履歴の参照/ロールバックが可能
既定ドメインに対し、SSL接続が提供される
ASP.NET Webプロジェクトの用意
「Webサイト」ではどのようなプロジェクトを用意すればよいのでしょうか?「Webサイト」では、Classic ASPやASP.NETで構成されたプロジェクトをそのままデプロイできます。 プロジェクトの作成手順はオンプレミス環境の場合と同様で、Windows Azure特有のプロジェクトを用意する必要はありません。
図1 ASP.NET Webプロジェクト
画像はVisual Studio 2013でASP.NET Webプロジェクトを1つ作成した後のソリューションエクスプローラーです。このプロジェクト構成のままデプロイが可能となります。
.NET Frameworkのバージョンとマネージパイプラインモードの選択
ASP.NET Webプロジェクトの.NET Frameworkのバージョンは、現在2.0から4.5.1までが利用可能です。また、ASP.NETだけでなくClassic ASPも動作可能です。
環境設定は、管理ポータル(Windows Azureの設定を行うサイト)から行います。参考として、.NET Frameworkのバージョンの選択とClassic ASPを動かすための設定―マネージパイプラインモードの設定を行う図を、IISマネージャー/管理ポータルの両方を比較して掲載します(図2 ) 。左がIISマネージャー(バージョン8.5)での設定画面、右が管理ポータルでの設定画面です。
図2 .NET Framework のバージョンとクラシック/統合モードの設定比較
上の.NET Frameworkのバージョンで表示される数字は、IISマネージャーではCLRのバージョンが、管理ポータルでは.NET Frameworkのバージョンが表記されているので注意。
ASP.NETのフレームワークはすべて(ASP.NET Web ページ/ASP.NET Web フォーム/ASP.NET MVC/ASP.NET Web API /ASP.NET SignalR)利用できます。 また、ASP.NET Webプロジェクトの種類はWebアプリケーションプロジェクト/Webサイトプロジェクトの双方が利用できます。
「Webサイト」へのデプロイ
プロジェクトを用意した後は、「 Webサイト」へのデプロイを行います。デプロイの前にプロビジョニングを行う必要がありますが、ここでは省略します(プロビジョニングは管理ポータルから数クリック、数秒~数十秒でできます) 。
「Webサイト」ではデプロイ方法の種類が数多く用意されています。ここでは、特徴により次の3つのグループに分けて紹介します。
A.オンプレミス環境と同じ方法でのデプロイ:WebDeploy/FTP
B.ローカル環境からGitを使ってデプロイ:ローカルGit
C.ソース管理システムと連携した継続的なデプロイ:Git/Mercurial/Bitbucket/CodePlex/Dropbox/GitHub/Visual Studio Online
特徴B、Cのデプロイ方法では、デプロイ履歴の参照/ロールバックを行うことができます。それぞれどのようにデプロイを行うのか順番に見ていきます。
A.オンプレミス環境と同じ方法でのデプロイ
「Webサイト」はオンプレミス環境と同じ様にWebDeploy/FTPによるデプロイが可能です。ASP.NET利用者にとって一番お手軽なデプロイ方法は、Visual StudioやWebMatrixから直接操作を行うことができるWebDeployでしょう。
Visual Studio 2013の場合は、プロジェクトの右クリックメニューの発行から「Webサイト」へデプロイします(図3 ) 。WebDeployの設定は、管理ポータルから発行プロファイルをダウンロードする、またはダイアログ上でWindows Azureアカウントの情報を入力することで取得します。
図3 Visual Studio 2013からデプロイする様子
FTPを使ってファイルをアップロードする場合は、ホスト名とユーザ名を管理ポータルより確認します。ユーザ名とパスワードは、管理ポータルの「デプロイ資格情報のリセット」より設定/変更が可能です。
参考として、FTPクライアントを使って接続先のルートディレクトリを、ツリーで表示した図を掲載します。
図4 接続先のルートディレクトリ
「\site\wwwroot」がアプリケーションファイルを配置するフォルダです。
B.ローカル環境からGitを使ってデプロイ
図5 ローカル環境からGitを使ってデプロイ
この方法は「ローカルGit」と呼ばれます。ローカル環境にあるGitリポジトリから、「 Webサイト」内に作成されるGitリポジトリ対してプッシュを行うことで、「 Webサイト」の内容を更新します。「 Webサイト」内のGitリポジトリは、管理ポータル上でローカルGitを有効化した際に作成されます。
次の図6 は、管理ポータルにてローカルGitを有効化した後の画面です。プッシュ先のGitのURL、プッシュを行う手順を確認できます。
図6 管理ポータルからローカルGitの方法を確認する
このローカルGitでは、デプロイ履歴の参照/ロールバックを行うことができます。
例として、ローカルGitの方法で3回デプロイを行った後の画面を掲載します(図7 ) 。3回分のプッシュ情報(時間、コミットのコメント、ユーザ名等)が表示されています。ロールバックを行うには、該当するデプロイを選択し、ページ下部の「再デプロイ」をクリックします。
図7 3回プッシュを行った例
C.ソース管理システムとの関連付けによるデプロイ
図8 ソース管理システムとの関連付けによるデプロイ
この方法は、先に紹介したWebDeployやローカルGitとは違い、「 Web サイト」に対してアクションを行うのではなく、ソース管理システム(Git/Mercurial/Bitbucket/CodePlex/Dropbox/GitHub/Visual Studio Online)に対してアクションを行います。ソース管理システム内のプロジェクトが更新されると、「 Webサイト」へ通知され、変更を取得します。常に最新の内容が自動的に「Webサイト」へ反映されるため、継続的なデプロイが可能です。
この方法を開始するには、管理ポータル上にて「Webサイト」とソース管理システムとの関連付けを行う必要があります。具体的には、どのソース管理システムを選択するか、アカウント情報、外部リポジトリのURL等の情報を入力します。
また、この方法でもローカルGitと同じように、デプロイ履歴の参照/ロールバックを行うことができます。
デプロイ後のWebサイトを確認する
デプロイが完了したら、サイトにアクセスしてみましょう。デプロイ先のドメインは、既定では「*.azurewebsites.net(*は設定した名前が入ります。) 」です。また、デプロイと同時に同ドメインへのSSL接続が提供され 、「 https://*.azurewebsites.net」へのアクセスが可能です(追加料金は発生しません。カスタムドメインによるSSL接続の場合は料金が発生します) 。
ASP.NET利用者のコメント
多数用意されているデプロイ方法と、デプロイ履歴の参照/ロールバックは「Webサイト」の強力な機能です。外部のソース管理システムが利用できない場合は、ローカルGitがオススメです。ローカル環境(自分のコンピュータ等)にGitをインストールするだけでデプロイが可能、デプロイ履歴の参照/ロールバックも利用できます。
1つ注意する点は権限です。FTPやローカルGit等のデプロイで使用するユーザ名/パスワードは、Windows Azureアカウント内すべての「Webサイト」で共有されます。また、管理ポータル上からはすべての「Webサイト」の操作が可能で、「 Webサイト」毎に制限を設ける、といったことはできません。
今回は、ASP.NET Webプロジェクトの用意から、「 Webサイト」へのデプロイ、サイトへのアクセスという一連の流れを追いながら、付随する「Webサイト」の機能を確認しました。次回は、カスタムドメイン/デプロイ後にファイルを編集する方法/ログ機能を紹介します。