2012/05/08

System Center 2012 RTM > VMM で ASP.NET v4 アプリを Web Deploy

System Center 2012 Virtual Machine Manager のサービス展開機能で、Web 層の展開には IIS の Web Deploy (Web 配置ツール) が利用されています。以下は、Virtual Machine Manager の Beta や RC で試したときのレポートです。

VMM2012BETA > Web Deploy > VMM 2012 も Azure も Web Deploy (2011/07/14)
VMM2012BETA > Web Deploy > IIS に Web Deploy (2011/07/19)
VMM2012BETA > Web Deploy > Azure で Web Deploy (2011/07/19)

VMM2012BETA > Web Deploy > VMM2012 で Web Deploy (2011/07/19)
VMM2012BETA > Web Deploy > Azure で Web Deploy (Update) (2011/09/09)
VMM2012RC > Web Deploy > VMM2012 で Web Deploy (RC Update) (2011/09/10)


Beta や RC では、ASP.NET v2.0 のアプリケーションの展開を試しました。その理由は、Windows Server 2008 R2 標準では ASP.NET v4.0 に対応しておらず、ASP.NET v4.0 のインストールと構成を追加する必要があるからでした (つまり、面倒だったから)。今回は、Virtual Machine Manager の RTM 版で、ASP.NET v4.0 アプリケーションのサービス展開を試してみます。

Web Deploy 用パッケージ (.zip) の準備


Visual Studio 2010 Express で ASP.NET v4.0 のアプリケーションを適当に作ります。今回は、Virual Basic の Web > ASP.NET Web アプリケーションをほとんどそのまま利用しました。


テンプレートの文字列を適当に変更しただけ。デバッグするまでもないですが、デバッグして動作を確認するとこんなアプリに。


コンパイルの対象フレームワークは既定の「.NET Framework 4」のままで。あと、「Web.config」から「connectionsStrings」の設定を削除しておきます。今回はデータベースは使用してませんので。


ソリューションエクスプローラーから「配置パッケージの作成」を実行して、Web Deploy 用のパッケージ (.zip) を作成し、Virtual Machine Manager のライブラリに放り込んでおきます。

.NET Framework 4 の準備

.NET Framework 4 のスタンドアロン インストーラー (dotNetFx40_Full_x86_x64.exe) をこちらからダウンロードして、Virtual Machine Manager のライブラリに放り込んでおきます。このとき、ライブラリ内に「フォルダー名.cr」という名前のフォルダー (「dotNetFx40.cr」とか) を作成して、その中にコピーしておきます。また、同じフォルダー内にサイレントインストール用のバッチファイル (「InstallDotNetFx4.cmd」とか) を作成して、置いておきます。バッチファイルの中身は、次のようにしました。

dotNetFx40_Full_x86_x64.exe /q /norestart
%Windir%\Microsoft.NET\Framework64\v4.0.40419\aspnet_regiis.exe -i -enable

ちなみに2行目のコマンドラインは、既存のWebアプリ (DefaultAppPool を含む既存のアプリケーションプール) を ASP.NET v4.0 に変更します。


サービステンプレートの作成

サービステンプレートを作成し、いつも使っている (Server App-V でも使った) Windows Server 2008 R2 Enterprise SP1 の仮想マシン テンプレートをベースに、1 層のサービスを作成します。「OS の構成」の「ロールと機能」では、「Web サーバー」「ASP.NET」「IIS 管理コンソール」「.NET Framework 3.5.1 Features」を選択します。


「アプリケーションの構成」では、「OS の互換性」で「64-bit edition of Windows Server 2008 R2 Enterprise」を選択し、「追加」→「スクリプト」を選択して、「プレインストール」スクリプトとして、「WebDeploy_x64_ja-JP_2.0.1070.cr」(Virtual Machine Manager 付属の Web Deploy のコンポーネント) パッケージの「InstallWebDeploy.cmd」を実行するように構成します。


「追加」→「Web アプリケーション」を選択し、先ほど準備しておいた Web Deploy 用パッケージ (.zip) を指定します。


ASP.NET v2.0 アプリケーションならこれでいいのですが、ASP.NET v4.0 アプリケーションの場合は、ASP.NET v4.0 が無くてサービス展開時にエラーになるはずです。そこで、「追加」→「アプリケーション スクリプト」を選択し、先ほど準備しておいた .NET Framework 4 のインストール用バッチを「プレインストール」スクリプトとして指定し、「詳細...」をクリックして、スクリプト実行後に再起動するように構成します (.NET Framework 4 のインストールは再起動が必要ですが、用意したバッチでは /norestart オプションを指定したので)。また、.NET Framework 4 のインストールは時間がかかるので、タイムアウトを 12 分 (720 秒) にしてみました。


サービスの展開

出来上がったサービステンプレートを、プライベートクラウドに展開します。




サービス展開中...


完了!!


これまで、Server App-V と Web Deploy を単体でサービス展開してみましたが、次回は Web 層とデータ層の 2 層のサービスを展開してみる予定。

0 件のコメント: