以下では、ここまでに作成したDjangoアプリケーションをWindows Azureクラウドサービスとしてデプロイする方法について説明します。
リモートデスクトップの設定を追加した状態のアプリケーションをクラウドサービスにデプロイすることで、デプロイ後の各インスタンスに対してリモートデスクトップ接続することが可能となります。
リモートデスクトップ接続の設定は、アプリケーションをクラウドサービスにデプロイするうえで必須ではありませんが、デプロイしたアプリケーションの動作不具合が発生した場合など、インスタンスの状態を確認するうえで非常に重要な手段となりますので、アプリケーションのデプロイを行う前にリモートデスクトップ接続を設定しておくことをお勧めします。
Windows Azure PowerShellでクラウドサービスプロジェクトのルートディレクトリに移動し、以下のコマンドを実行します。[username]には、リモートデスクトップ接続時に使用する好きなユーザ名を入力してください。コマンドを実行するとパスワードの入力を促されますので、任意のパスワードを続けて入力します。
> Enable-AzureServiceProjectRemoteDesktop [username]
上記のコマンド実行により、新しい証明書がローカルコンピュータの証明書ストア内に作成され、その証明書により暗号化されたパスワードと、入力したユーザ名がリモートデスクトップ接続情報として使用されるための設定がクラウドサービスプロジェクトの設定ファイル内に追加されます。
先のコマンド実行により証明書ストア内に作成された証明書は、リモートデスクトップ接続のパスワード検証で使用するために、予めクラウドサービス側にアップロードしておく必要があります。以下のコマンドを実行して、ローカルコンピュータの証明書管理コンソールを起動します。
> certmgr.msc
画面左側のフォルダツリーで「個人」→「証明書」を選択して作成された証明書(発行者が「Windows(R) Azure(TM) Encription Tool」)を選び,コンテキストメニュー「すべてのタスク」→「エクスポート」を選択して証明書のエクスポートウィザードを起動します。
ウィザードにおける各質問項目では以下を選択してください。
上記の通り選択してウィザードを進めると秘密キー保護用のパスワードの入力を求められますので、任意のパスワードを入力します。最後にエクスポートする証明書ファイルの出力先と名前を尋ねられますので、入力してエクスポートを完了してください。
管理ポータル上でアプリケーションのデプロイ先とするクラウドサービスを選択し、メニュー「証明書」→「証明書をアップロードします。」より、ローカルコンピュータ上でエクスポートした証明書ファイルをアップロードします。パスワード入力欄にはエクスポート時に入力したパスワードを入力します。
まず以下のコマンドを入力し、Windows Azureサブスクリプション情報をWindows Azure PowerShellに取り込むための発行設定ファイルを管理ポータルからダウンロードします。
> Get-AzurePublishSettingsFile
コマンドを実行すると、Webブラウザが起動して管理ポータルへのログオンを促されます。ログオンすると以下のページが表示されて発行設定ファイルのダウンロードが始まりますので、ローカルコンピュータ上に保存します。
発行設定ファイルのダウンロードが完了後、以下のコマンドを実行してダウンロードした発行設定ファイルをWindows Azure PowerShellにインポートします。[PATH_TO_PUBLISHSETTINGFILE]には、ダウンロードした発行設定ファイルのパスを入力してください。
> Import-AzurePublishSettingsFile [PATH_TO_PUBLISHSETTINGFILE]
発行設定ファイルのインポートが完了後、Windows Azure PowerShell上で以下のコマンドを実行し、Windows Azureサブスクリプションが登録されたことを確認します。
> Get-AzureSubscription
アプリケーションを所定の形式にパッケージング、Windows Azureにアップロードしてクラウドサービスのインスタンスにデプロイします。Windows Azure PowerShellでクラウドサービスプロジェクトのフォルダに移動し、以下のコマンドを実行します。コマンドが完了すると、フォルダ内にcloud_package.cspkgという名前のファイルが出力されます。これがWindows Azureクラウドサービスにデプロイするためのパッケージファイルになります。
> Save-AzureServiceProjectPackage
次に、管理ポータルより対象のクラウドサービス上にパッケージファイルをデプロイします。クラウドサービスでは「運用」と「ステージング」の2つのサービス環境が提供されており、それぞれに対し別個にデプロイすることができます。
まずは「ステージング」に対してデプロイを行いましょう。管理ポータル上で対象のクラウドサービスを選択し、メニュー「ステージング」より「新しいステージング環境のデプロイをアップロードします。」を押下すると、パッケージのアップロード画面が表示されます。画面内の「デプロイ名」には任意の名前を入力してください。「パッケージ」には先に出力されたパッケージファイルを、「構成」には、出力されたパッケージファイルと同じフォルダ内にある構成ファイルServiceConfiguration.Cloud.cscfgをそれぞれ指定します。「1つ以上のロールに単一のインスタンスが含まれている場合でもデプロイします。」および「デプロイの開始」にもチェックを入れて入力を完了すると、デプロイが開始します。
デプロイが完了するまで10分ほど時間を要するので、デプロイの完了を待ちます。デプロイの進行状況は管理ポータル上に随時表示されます。デプロイが完了すると、管理ポータルのクラウドサービス一覧やダッシュボードに表示されるステータスが「実行中」になりますので、この状態となったらダッシュボード内にある「サイトのURL」にWebブラウザでアクセスし、サービスが稼働していることを確認します。
なお、アプリケーションのパッケージングとWindows Azureクラウドサービスへのデプロイの双方を一度に行う場合は、パッケージングの時と同じコマンドに対して、管理ポータル上で作成したクラウドサービスの構成を指定のうえ実行します。
> Publish-AzureServiceProject -ServiceName [ServiceName] -StorageAccountName [StorageAccountName] -Slot [Slot] -Location [Location]
以下は主なオプションです。詳細については、Windows Azure PowerShellよりコマンドのヘルプ(get-help Publish-AzureServiceProjectで表示)を参照してください。
管理ポータルのダッシュボード上にあるメニュー「インスタンス」に進むと、対象のクラウドサービスで稼働中のインスタンス一覧が表示されます。この一覧上でインスタンスを選択して画面下部メニュー内の「接続」を押下すると、リモートデスクトップ接続設定ファイルがダウンロードされます。
このファイルを開いて先に設定したユーザ名とパスワード入力すると、インスタンスのリモートデスクトップにログインすることができます。