========================================= Windows Server 2012インスタンスを使用する ========================================= Windows Azure PowerShell、または商用版VS+PTVSから作成するクラウドサービス用のパッケージは 通常、Windows Server 2008 R2インスタンスにデプロイされますが、 Windows Azureクラウドサービスでは現在、Windows Server 2012インスタンスも利用可能です。 商用版VS+PTVSでクラウドサービス用のパッケージを作成した場合は、 Windows Server 2012インスタンスへのデプロイも少しの変更で簡単に行うことができますが、 Windows Azure PowerShellで作成したクラウドサービス用のDjango Webロールはデプロイ用のモジュールが古いため、 そのままではWindows Server 2012インスタンスにデプロイすることができません(2012年11月時点)。 以下ではDjangoを例に、商用版VSを使用せずにWindows Server 2012インスタンスにPythonアプリケーションを デプロイする方法について説明します。 .. warning:: 以下に説明する方法は公式にサポートされているものではありませんので、 実際に運用するアプリケーションでの利用は自己責任で行ってください。 デプロイモジュールの更新 ======================== PTVSに含まれるデプロイモジュールで、Windows Azure PowerShellで作成された クラウドサービスに含まれているデプロイモジュールを上書き更新します。 PTVS+VS Shellをローカルコンピュータに導入している場合は以下の場所 (32bit版Windowsの場合は ``%ProgramFiles%`` 以下)にデプロイモジュールがありますので、 それらをクラウドサービスプロジェクトの ``Webロール/bin`` に上書きコピーします。 .. code-block:: console > copy /y "%ProgramFiles(x86)%\MSBuild\Microsoft\VisualStudio\v11.0\Python Tools"\* [Webロール]\bin PTVS+VS Shellを導入していない場合はまずPTVSのインストーラをダウンロードし、 その中に含まれるデプロイモジュールを取り出してコピーします。 .. code-block:: console > msiexec /a "PTVS 1.5 VS 2012.msi" targetdir="%TEMP%ptvs" /qn > copy /y "%TEMP%\ptvs\PFILES\MSBuild\Microsoft\VisualStudio\v11.0\Python Tools"\* [Webロール]\bin サービス定義ファイルの編集 ========================== Webロールフォルダ内にあるサービス定義ファイル ``ServiceDefinition.csdef`` を以下の通り編集します。 * ServiceDefinition要素に、schemaVersion属性値"2012-10.1.8"を追加 .. code-block:: xml * WebロールのSite要素にphysicalDirectory属性を追加、属性値でWebロールフォルダを指定 .. code-block:: xml サービス設定ファイルの編集 ========================== Webロールフォルダ内にあるサービス設定ファイル ``ServiceConfiguration.Local.cscfg`` および ``ServiceConfiguration.Cloud.cscfg`` を編集します。 ServiceConfiguration要素について、osFamily属性値を「3」に変更、schemaVersion属性値「2012-10.1.8」を追加します。 .. code-block:: xml web.configファイルの編集 ======================== 次に、Webロールフォルダ内にあるファイル ``web.config`` を編集します。 appSettings要素内に、key属性値「WSGI_HANDLER」、value属性値「Djangoプロジェクト名.wsgi.application」を持つadd要素を追加します。 .. code-block:: xml 同じフォルダ内にあるファイル ``web.cloud.config`` についても編集します。 configurationの子要素に当たるappSettings要素、および、key属性値「WSGI_HANDLER」、 value属性値「Djangoプロジェクト名.wsgi.application」を持つadd子要素を追加します。 .. code-block:: xml パッケージングとデプロイ ======================== Windows Azure PowerShell **ではなく、Windows Azure Command Prompt** を起動し、 クラウドサービスプロジェクトのフォルダに移動して以下のコマンドを実行します。 [Webロール]には、作成したDjango Webロールの名前を指定してください。 .. code-block:: console > echo TargetFrameworkVersion=v4.0 > [Webロール].ini > cspack ServiceDefinition.csdef /out:cloud_package.cspkg /rolePropertiesFile:[Webロール];[Webロール].ini コマンドの実行完了後、出力されたパッケージファイル ``cloud_package.cspkg`` を 管理ポータルよりデプロイします。デプロイの完了後にリモートデスクトップでログインすると、 インスタンスのOSがWindows Server 2012であることが確認できます。 .. image:: images/setup_win2012_instance/179.png :width: 476 :height: 268 またWebブラウザでアプリケーションにアクセスすると、応答するWebサーバが Windows Server 2012で導入されているIISv8であることを確認できます。 .. image:: images/setup_win2012_instance/182.png :width: 445 :height: 312