Web Deploy Team による
パラメーター化の概要
ほとんどの場合、Web アプリケーションの開発には、開発、ステージング、運用サーバーなど、さまざまな環境にコードをデプロイする必要があります。 各環境では、データベース接続情報などの異なるリソース セットが使用される場合があり、Web Deploy は、Web アプリケーションを異なる環境にデプロイする場合に役立つ機能を使用して構築されます。 デプロイ時にアプリケーションを変換するために、アプリケーションのさまざまな部分を "パラメーター化" できます。また、デプロイ時に Web Deploy はユーザーの入力を受け取り、アプリケーション内のさまざまな情報を置き換えます。
アプリケーションをデプロイするさまざまな方法: ライブ同期と Visual Studio
Web 配置ツールを使用すると、さまざまな方法でアプリケーションをデプロイできます。 Web アプリケーションは、あるサーバー (おそらく開発サーバー) から別のサーバー (Web 上のアプリケーションをホストするサーバー) に 、ライブで同期できます。 Web アプリケーションを .zip ファイルにパッケージ化して、より広範で一般的な開発者がダウンロードしてインストールすることもできます。 これは、"プラットフォーム" のようなアプリ (Wordpress など) で一般的に使用されるモデルです。 最後に、Web 配置は、Web アプリケーション (WAP) プロジェクトを開発および展開するときに 、Visual Studio によってバックグラウンドで使用されます。 この場合、Visual Studio は Web アプリケーションの必要な部分のほとんどを自動的にパラメーター化し、必要に応じてカスタム パラメーターを作成できます。
デプロイするアプリケーションの作成とパラメーター化
Microsoft は、Wordpress、Joomla、Drupal、DotNetNuke など、50 を超える一般的な Web アプリケーションを簡単にインストールする方法を提供しています。 これらのアプリケーションは、比較的迅速かつ簡単にインストールできます。 これらの UI は、バックグラウンドで Web 配置ツールを使用して、.zip パッケージからアプリケーションをインストールします。 これらのツールのいずれかを使用してインストールできるようにアプリケーション パッケージを作成するには、アプリケーションの一部をパラメーター化するなど、さまざまな手順を実行する必要があります。
アプリケーションを展開できる .zip パッケージに変換するには、次の手順が必要です。
- アプリケーションを作成します。
- "マニフェスト" ファイルを作成します。 このファイルは、アプリケーションのインストールに必要なさまざまなアクションを Web 配置ツールに通知します。 これには、ファイルのコピーやデータベースの設定などが含まれます。
- パラメーター ファイルを作成します。 これは、Web Deploy がユーザー入力に基づいてインストール時に変換する必要があるアプリケーションの部分を識別するために使用する "パラメーター化" ファイルです。
- アプリケーション、マニフェスト ファイル、およびパラメーター ファイルを含む .zip ファイルを作成します。
この記事では、これらの各手順について詳しく説明します。
手順 1 - アプリケーションを作成する
現時点では、既存のアプリケーションからの複製を除き、Web デプロイのパラメーター化を試すアプリケーションを簡単に作成する方法はありません。
これで、他の開発者がダウンロードしてインストールできるように、パッケージ化およびパラメーター化する準備が整ったアプリケーションが作成されました。 次の手順では、アプリケーションのインストールに必要な手順を Web Deploy に指示するファイルを設定します。
手順 2 - "マニフェスト" ファイルを作成する
Web 配置ツールでは、ファイルのコピー、Web サーバーの構成設定、データベースなど、さまざまな機能を実行できます。 これらの各関数は、Web 配置 "プロバイダー" によって可能になります。 先ほど作成したアプリケーションをインストールするには、iisApp プロバイダーを使用します。 iisApp プロバイダーは、ファイルをコピーしてサーバー上にアプリケーションを作成するのに役立ちます。必要なファイルのアクセス許可を設定する setAcl プロバイダー。データベースを設定する dbFullSql プロバイダー。 セットアップ時に複数のプロバイダーを使用するように Web 配置に指示するには、次の方法でこれら 3 つのプロバイダーを宣言する Manifest.xml ファイルを作成する必要があります (ここからサンプルをコピーできます)。
<?xml version="1.0" encoding="utf-8" ?>
<msdeploy.iisApp>
<iisApp path="Vacation Pictures" />
<setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />
<dbFullSql path="CreateDBAndUser.sql" />
<dbFullSql path="VacPicDBSchema.sql" />
</msdeploy.iisApp>
これらの各エントリを詳しく見てみましょう。
IIS App Provider(IIS アプリプロバイダ)
iisApp エントリは、アプリケーションのコンテンツが配置されているフォルダーを指します。 例えば次が挙げられます。
<iisApp path="Vacation Pictures" />
アプリケーションの名前が異なる場合、 パス の値は異なります。
SetAcl プロバイダー
setAcl エントリは、アプリケーションのインストール時に"App_Data" ディレクトリに対する読み取り、書き込み、実行のアクセス許可を付与するように Web Deploy に指示します。 例えば次が挙げられます。
<setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />
アプリケーションが異なると、他のフォルダーに対する特別なアクセス許可が必要になる場合があります。 その場合は、必要なアクセス許可設定ごとに異なる setAcl エントリを作成します。
DbFullSQL プロバイダー
dbFullSQL プロバイダーエントリは、データベースとユーザー ("CreateDBAndUser.sql") を作成し、インストール時にデータベース テーブル ("VacPicDBSchema.sql") を設定するために使用されるさまざまな SQL スクリプトを指します。
CreateDBAndUser.sql スクリプトは、 ここからコピーできる非常に単純なスクリプトです。
VacPicDBSchema.sqlは、アプリケーションが使用するデータベース内のすべてのテーブルを作成するスクリプトです。 このファイルは、Web 配置コマンド ライン ツールを使用して作成できます。 コマンド ラインから、Web 配置がインストールされている場所 (通常は \IIS\Microsoft Web Deploy <LatestVersion> %programfiles%) に移動し、次のコマンドを入力します。
msdeploy -verb:sync -source:dbfullsql="data source=.\SQLExpress;initial catalog=PhotoGallery;user id=sa;password=*" -dest:dbfullsql="c:\VacPicDBSchema.sql"
アスタリスク (*) を適切な SQL 管理者パスワードに置き換えます。
基本的なレベルでは、上記のコマンドは dbFullSql プロバイダーを使用してデータベース接続文字列 ("-source:dbfullsql=...") を使用してデータベースからデータをコピーし、データベース スクリプト ファイル ("-dest:dbfullsql=...") にコピーします。
手順 3 - パラメーター ファイルを作成する
アプリケーションのインストール方法を Web 配置に指示するマニフェスト ファイルを作成したら、特定のユーザーの配置環境で動作するようにアプリケーションをカスタマイズできるように、特定の設定を変換する方法を Web 配置に指示するパラメーター ファイルを作成する必要があります。
変換に役立つ基本的な部分は次のとおりです。
- アプリケーション名: アプリケーションをインストールしているエンド ユーザーがアプリケーション名を変更する場合は、アプリケーション名をパラメーター化する必要があります。
- データベース名: ユーザーは、別の名前を使用するデータベースで実行するようにアプリケーションを構成する必要がある場合があります。 その場合は、データベース接続情報をパラメーター化する必要があります。
Web Deploy は、XML ファイルからパラメーター化情報を読み取ります。 この場合は、Parameters.xmlファイルを呼び出します。 このデモでは、ここからパラメーター ファイルを コピー して、次のようになります (Web サイトでは、この ページで使用されているようなコード ボックスにこの XML ファイルを展開できます)。
次に、アプリケーション名とデータベース名をパラメーター化する方法について説明します。
アプリケーション名のパラメーター化
Web 配置のパラメーター化を使用して、さまざまな種類の入力を変換できます。 通常、XML ファイルまたはテキスト ファイル内のテキストを検索し、別のテキストに置き換える必要があります。 アプリケーション名の場合、コピー先コンピューターでの Web サイトのコピーと作成は、Web 展開プロバイダーによって処理されます。 そのため、アプリケーション名をパラメーター化するには、実際には、Manifest.xml ファイルで以前に宣言したプロバイダーをパラメーター化する必要があります。
マニフェスト ファイル内のプロバイダーは 、ユーザー がダウンロードしたアプリケーション パッケージから情報を読み取るソース プロバイダーと考えることができます。 さらに、アプリケーションがインストールされると、 ターゲット プロバイダーがバックグラウンドで使用され、コンテンツをコピーし、ユーザーのコンピューター上に Web サイトを作成します。 Manifest.xml ファイルには ソース プロバイダー情報が含まれているため、ユーザーがアプリケーション名を変更できるようにします。Manifest.xml ファイルで定義されたプロバイダーをパラメーター化する必要があります。
上記にリンクされている Parameters.xml ファイルでは、このパラメーター化は最初の XML エントリで行われます。
<parameter
name="Application Path"
description="Full site path where you would like to install your application (i.e., Default Web Site/PhotoGallery)"
tags="iisapp">
<parameterValidation kind="AllowEmpty" />
<parameterEntry kind="ProviderPath" scope="iisapp" match="Vacation Pictures" />
</parameter>
注意すべき重要な XML タグは parameterEntry です。 これにより、Web 配置にいくつかのことを示します。 1 つは、マニフェストでプロバイダーをパラメーター化していることを示します (kind="ProviderPath")。 2 つ。 iisApp プロバイダーをパラメーター化しています (scope="iisapp"); 最後に、"Vacation Pictures" という値を持つマニフェスト ファイル内のエントリのみを置き換えます。
パラメーター ファイル ('name="SetAclParameter1"') の 2 番目のエントリでは、Manifest.xml ファイル内の setAcl プロバイダーが iisApp プロバイダーに対してユーザーが入力したのと同じ名前を使用します。これは、行 'defaultValue="{Application Path}/App_Data" で実行されます。 角かっこ {Application Path} の値は、最初のパラメーターの名前を参照します。
データベース名のパラメーター化
Parameters.xml ファイルの残りのエントリは、データベース接続情報のパラメーター化を処理します。 パラメーター ファイルの 2 番目から 6 番目のエントリは、ユーザーがアプリケーションをインストールするときに UI から情報を収集します。 これらのエントリは、アプリケーション ("データベース サーバー")、作成するデータベースの名前 ("データベース名")、データベースに関連付けるデータベース ユーザー ("データベース ユーザー名")、そのユーザーのパスワード ("データベース パスワード") をホストするデータベース サーバーをユーザーに求めます。 データベースとユーザーを作成するには、Web Deploy にはデータベース管理者ユーザー ("データベース管理者") とパスワード ("データベース管理者パスワード") も必要です。
最後に、ユーザーが入力したすべての情報は、Web 配置によってデータベース (CreateDBAndUser.sql) を作成し、テーブル (VacPicDBSchema.sql) を設定するスクリプトを実際に実行するために使用されます。 以下は、Parameters.xmlの 7 番目と 8 番目のエントリです。
<parameter
name="Create DB and DB User Connection String"
description="Automatically sets the connection string for the connection request."
defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd=*;" <!-- replace Pwd=* with Pwd={Database Administrator Password} -->
tags="Hidden,SQLConnectionString,Validate">
<parameterEntry type="ProviderPath" scope="dbfullsql" match="CreateDBAndUser.sql" />
</parameter>
<parameter
name="Populate DB Connection String"
description="Automatically sets the connection string for the connection request."
defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd=*;" <!-- replace Pwd=* with Pwd={Database Administrator Password} -->
tags="Hidden,SQLConnectionString,Validate">
<parameterEntry type="ProviderPath" scope="dbfullsql" match="VacPicDBSchema.sql" />
</parameter>
ここでも、Web 配置ではプロバイダーを使用してデータベース情報を同期するので (Manifest.xml ファイルで宣言されているように)、これら 2 つのパラメーター エントリは 'type="ProviderPath" です。
"Vacation Pictures" アプリケーションは、Web.config ファイル内のデータベース接続も追跡します。 このパラメーター化は、Parameters.xmlの最後のエントリによって処理されます。
手順 4 - アプリケーション、マニフェスト ファイル、およびパラメーター ファイルを含む Zip ファイルを作成する
これで、アプリケーションのデプロイに必要な基本的な構成要素が作成され、アプリケーションを適切なパッケージ形式にパッケージ化できるようになりました。 パッケージには、Parameters.xml ファイル、Manifest.xml ファイル、zip パッケージの最上位 (ルート) レベルのデータベース インストール スクリプト、およびサブフォルダー内のアプリケーション コンテンツを含める必要があります。
WebMatrix の左下隅にある [ サイト ] タブをクリックして、サイトのコンテンツに移動します。
サイト ページには、アプリケーション コンテンツが存在する場所へのリンクがあります。
リンクをクリックして、アプリケーションのコンテンツに移動します。 このフォルダーから別のレベルに移動し、"VacationPicsWPIInstaller" という名前の新しいフォルダーを作成します。 アプリケーション コンテンツ フォルダー、Manifest.xml ファイルと Parameters.xml ファイル、データベース インストール スクリプトを新しく作成したフォルダーにコピーします。
すべてのファイルを選択した状態で右クリックし、[送る] を選んで>[圧縮 (zip 形式) フォルダー]>を選択します。
この zip 形式のファイルは何でも名前を付けることができますが、デモでより適切に動作するには、"VacationPicsWPIInstaller.zip" という名前を付けます。
このパッケージには、デプロイに必要なすべてのものが含まれるようになりました。