ここでは、Windows Azure PowerShellを利用して、Windows AzureにデプロイするためのDjangoアプリケーションプロジェクトを作成する手順について説明します。
アプリケーションをWindows Azureクラウドサービスとしてデプロイするためには、そのアプリケーションを所定の形式にパッケージする必要があります。Windows Azure PowerShellには、DjangoアプリケーションをパッケージしてWindows Azureにデプロイするための雛形プロジェクトを作成する機能があります。スタートメニューよりWindows Azure PowerShellを起動してください。
次にWindows Azure PowerShellから以下のコマンドを実行し、Windows Azureクラウドサービスの雛形プロジェクトを作成します。ここでは作成するプロジェクトの名前をazure-pythonとしています。コマンドの実行が完了すると、新たに作成されたプロジェクトのフォルダに自動で移動します。
> New-AzureServiceProject -ServiceName azure-python
次に、クラウドサービスプロジェクトの中にDjangoアプリケーションのプロジェクトを作成します。ここでの操作はDjangoアプリケーション開発の一般的な手順におけるプロジェクト作成コマンドであるdjango-admin startprojectに相当します。
virtualenvを使用する場合など、システムのPython環境以外の場所にDjangoがインストールされている場合は、まずWindows Azure PowerShell上で以下の通りコマンドを実行し、DjangoがインストールされているフォルダをPYTHONPATH上に追加してください。
> $env:pythonpath = "C:\path\to\myvirtualenv\Lib\site-packages"
続いてWindows Azure PowerShell上で以下のコマンドを実行し、Djangoプロジェクトをクラウドサービス下のWebロールとして追加します。ここでは作成するDjangoプロジェクト名を、Djangoのオフィシャルチュートリアルに倣ってmysiteという名前としています。クラウドサービスにデプロイ可能なインスタンスには主にWebアプリケーション用途の「Webロール」と、バッチアプリケーション用途の「Workerロール」の2種類があり、Djangoプロジェクトでは前者が使用されます。
> Add-AzureDjangoWebRole -Name mysite
なお上記のコマンドを実行した際に以下のようなエラーメッセージが表示される場合があります。Windows Azure SDKのエミュレータ上でDjangoアプリケーションを実行する際には、Django標準の開発サーバではなくWebサーバ(IIS)上で実行され、このときプロジェクトフォルダ内に一時ファイルを出力しますが、このフォルダに対しWebサーバの実行ユーザ(“NETWORK SERCVICE”)によるそれら一時ファイル出力用の権限を付与できなかった場合に表示されます。
Unable to set role permissions. Please give the 'Network Service' user 'Read & execute' and 'Modify' permissions to the role folder, or run PowerShell as an Administrator
上記メッセージが表示された場合は、ローカルコンピュータの”NETWORK SERVICE”に対し、プロジェクトのフォルダへの「読み取りと実行」「変更」の各権限を付与します。
ここまでの手順を終えた段階で、azure-pythonフォルダの中身は以下のようになっているはずです。
azure-python/ (← クラウドサービスのフォルダ)
deploymentSettings.json
ServiceConfiguration.Cloud.cscfg
ServiceConfiguration.Local.cscfg
ServiceDefinition.csdef
mysite/ (← Webロールのフォルダ)
Web.cloud.config
Web.config
bin/ (← デプロイ用モジュールのフォルダ)
AzureSetup.cfg
Microsoft.PythonTools.AzureSetup.exe
Microsoft.PythonTools.WebRole.dll
Microsoft.Web.Deployment.dll
Microsoft.Web.PlatformInstaller.dll
Microsoft.Web.PlatformInstaller.UI.dll
WebPICmdLine.exe
wfastcgi.py
mysite/ (← 一般的なDjangoプロジェクトのフォルダ)
manage.py
mysite/
settings.py
urls.py
wsgi.py
__init__.py
ここから先のアプリケーション作成の手順は、Djangoアプリケーションを開発する際の一般的な手順と同様になります。上記のフォルダ構成ではpython-azure/mysite/mysiteフォルダがDjangoプロジェクトのフォルダとなりますので、コマンドプロンプト上でこのフォルダに移動し、アプリケーション作成やDB同期などDjangoの管理コマンドを実行します。
なおアプリケーション開発にPTVSを使用する場合は、ここで一度Djangoプロジェクトのフォルダを削除し、VS上でメニュー「ファイル」→「新規作成」→「プロジェクト」→「Django Application」を選択して同じ名前でプロジェクトをWebロールのフォルダ内に再作成してください。このとき「ソリューションのディレクトリを作成」のチェックはオフにしてください。こうすることで、クラウドサービスプロジェクトのフォルダ構成を維持しつつ、以降のアプリケーション開発でVSからこのDjangoプロジェクトを開くことができます。