作成者: Ben Byrd
まとめ
これまで、Web サーバーに Web Deploy をインストールし、管理者以外のユーザーが IIS 7 にアプリケーションを配置できるようにしました。 このチュートリアルでは、開発者が Web Deploy パッケージを作成する方法について説明します。このパッケージは、Web サーバーにアクセスできるユーザー (管理者、IT/運用チームなど) が配置できます。 パッケージには、配置するファイル (バイナリと静的コンテンツ)、データベース、IIS 設定が含まれます。
このチュートリアルでは、開発用コンピューターからサーバーにパッケージを配置します。また、IIS マネージャーの Web Deploy UI を使用してサーバーにパッケージをインポートする方法についても説明します。
Web Deploy パッケージ
Visual Studio 2010 では、UI を通じて、またはコマンド ラインで MSBuild を使用して Web Deploy パッケージを作成できます。 これらのどちらの方法でも、1) 標準の Web Deploy パッケージと、2) パッケージの配置に役立つバッチ (.cmd) ファイルが生成されます。
パッケージ化/公開オプションの構成:
Visual Studio 2010 を起動し、Contoso University C# ソリューションを読み込みます。
ソリューション エクスプローラーで、ContosoUniversity ノードを展開し、[プロパティ] をダブルクリックします (C#)。
パッケージの構成を選択します。
パッケージは構成固有であり、設定は構成ごとに行われるため、パッケージを作成する前に構成を選択し、設定を行う必要があります。[配置する項目 (すべての配置方法に適用)] を構成します。
これらのオプションは、Web Deploy で公開するか、別の公開方法で公開するかに関係なく使用されます。- [配置する項目] には、3 つのオプションがあります。
ほとんどの場合、[このアプリケーションの実行に必要なファイルのみ] オプションで十分です。 これにより、サイトの実行に通常は必要のないソース コード、プロジェクト ファイル、その他のファイルが除外されます。 [このプロジェクトに含まれるすべてのファイル] オプションでは、上記のセットに加えて、ソース ファイル、プロジェクト ファイル、その他の関連ファイルが公開されます。 [このプロジェクト フォルダー内のすべてのファイル] オプションでは、obj フォルダーの下のファイルを除く、プロジェクトに含まれていないファイルが含まれます。 - [生成されたデバッグ シンボルを除外する] オプションは、デバッグ シンボルが生成される場合にそのシンボルを除外するように VS に指示します。
- [App_Data フォルダーのファイルを除外する] オプションでは、App_Data フォルダーのファイルが除外されます。
- [配置する項目] には、3 つのオプションがあります。
[配置する項目 (Web Deploy にのみ適用)] を構成します。
これらのオプションは、Web Deploy パッケージを作成する場合、または公開に Web Deploy プロトコルを使用する場合にのみ適用されます。- [Include all databases (すべてのデータベースを含める)] オプションは、[SQL のパッケージ化/公開] タブで構成されたデータベースを配置するかどうかを Web Deploy に指示します。
- [Include all IIS settings as configured in IIS/IIS Express (IIS/IIS Express で構成されているすべての IIS 設定を含める)] オプションと [この Web プロジェクトで使用するアプリケーション プール設定を含める] オプションについては、記事 {IIS 設定に関する記事へのリンク} で説明します。これらのオプションは、Cassini 開発サーバーの代わりに、[Web property (Web プロパティ)] タブで [Use Local Web server (ローカル Web サーバーを使用する)] を選択した場合にのみ使用できます。
[Web Deploy パッケージ化の設定] を構成します。
- [Create deployment package as a zip file (zip ファイル形式で配置パッケージを作成する)] オプションでは、パッケージ化時に zip ファイルを作成するか、ディレクトリ構造 (アーカイブ ディレクトリ) を作成するかを決定します。 ZIP ファイルのサイズ制限である 2,147,483,647 バイト (Int.MaxValue) に達するパッケージを作成する場合を除き、ZIP 形式を使用することをお勧めします。
- [Location where package will be created (パッケージを作成する場所)] オプションでは、パッケージ ファイルを作成する場所を指定します。 指定した場所に対する書き込みアクセス許可があることを確認する必要があります。
- [IIS Web Site/application name to use on the destination server (宛先サーバーで使用する IIS Web サイト/アプリケーション名)] オプションでは、ユーザーが別の名前を指定しない場合に宛先サーバーで使用する既定のサイト名またはアプリケーション名を指定します。
- [Physical path of the web application on destination server (used only when IIS settings are included) (宛先サーバー上の Web アプリケーションの物理パス (IIS 設定が含まれる場合にのみ使用))] オプションと [Password used to encrypt secure IIS settings (安全な IIS 設定の暗号化に使用するパスワード)] オプションについては、記事 {IIS 設定に関する記事へのリンク} で説明します。
[SQL のパッケージ化/公開] オプションの構成:
アプリケーションと共にデータベースを配置するシナリオがあります。 たとえば、アプリケーションを初めて配置する場合、スキーマおよびデータと共にデータベースを配置できます。
Visual Studio 2010 では、データベースの増分配置はサポートされないことに注意してください。
パッケージの構成を選択します。
パッケージは構成固有であるため、パッケージを作成する前にパッケージの構成設定を選択する必要があります。Web.config ファイルにデータベース接続文字列がある場合、[Web.config からインポート] をクリックできます。インポートが完了すると、メッセージが表示されます。
接続文字列が見つからなかった場合は、以下が表示されます。
このエラーが表示された場合、Web.config ファイルに目的の接続文字列があり、ファイルが変更されていないことを確認します ([エディター] タブのアスタリスクは、ファイルが変更され、変更が保存されていないことを示します)。配置パッケージに追加するデータベースが [データベース エントリ] の下に表示されない場合は、[追加] ボタンをクリックして接続を追加します。
すべての接続を追加したら、エントリを選択し、上矢印と下矢印を使用して一覧内の順序を調整して、パッケージに追加される順序、つまり配置される順序を指定できます。
データベース エントリをクリックすると、そのエントリを削除できます。
次に、[データベース エントリの詳細] セクションで各データベースの詳細を構成します。
- [データベース エントリ] リストからデータベースを選択します。
- [対象データベースの接続文字列] フィールドに、データベースをサーバーに配置するときに使用する接続文字列を入力します。 これはワンクリック公開に必要ですが、パッケージ化の場合、この値は配置時に変更できる既定値として使用されます。
注: この値は、Web.config ファイル内の接続文字列情報の更新には使用されません。 Web.config 変換を使用して、ビルド構成ごとに Web.config ファイルを更新できます。 Web.config 変換の詳細については、{公開の記事へのリンク}、MSDN の記事、または Vishal Joshi のブログ (Web.Config Transformation セクションの下) を参照してください。 - [Pull data and/or schema from an existing database (既存のデータベースからデータ、スキーマ、またはその両方をプルする)] オプションは、[Connection string for the source database (ソース データベースの接続文字列)] フィールドで指定されたデータベースをスクリプト化し、さらに [データベース スクリプトのオプション] で選択した設定に基づいて、スキーマ、データ、またはその両方をスクリプト化します。
- 最後のオプションである [データベース スクリプト] では、カスタム SQL スクリプトを追加し、スクリプトが実行される順序を選択します。 [ソース データベースの情報] の下で [Pull data and/or schema from an existing database (既存のデータベースからデータ、スキーマ、またはその両方をプルする)] チェックボックスをオンにすると、[Auto-generated <Database scripting option> (自動生成 <データベース スクリプト オプション>)] チェックボックスが表示されます。 追加のスクリプトを実行する場合は、[スクリプトの追加] をクリックします。 スクリプトの場所を参照し、[開く] をクリックします。 その後、[データベース スクリプト] セクションでそのスクリプトを選択し、上矢印と下矢印を使用して実行順序を調整できます。
- 最後のオプションである [Database Deployment Notes (データベース配置のメモ)] は省略可能です。
- 続行する前に、構成への変更を保存します。
- [データベース エントリ] リストからデータベースを選択します。
これでパッケージ設定を構成したので、パッケージを作成できます。
Visual Studio 2010 からのパッケージの生成
VS 2010 で、ソリューション エクスプローラーから WAP を選択します。
WAP を右クリックします。
Contoso University にログオンしたことがない場合、aspnetdb.mdf ファイルは存在しないので注意してください。 パッケージの作成は、次のようなエラーで失敗します: "データベース 'C:\code\ContosoUniversity\ContosoUniversity\ContosoUniversity\App_Data\aspnetdb.mdf' に接続できません。 サーバーとの接続を正常に確立しましたが、ログイン中にエラーが発生しました。"
- このエラーを修正するには、F5 キーを使用してアプリケーションを起動し、ユーザーを登録するだけです。 これにより、aspnetdb.mdf ファイルが作成されます。
パッケージ化の進行状況に応じて、出力ウィンドウに更新情報が表示されます。 完了すると、出力にはパッケージの場所へのリンクが含まれます。
MSBuild からのパッケージの生成
上記で構成したすべての設定は、WAP のプロジェクト ファイルに保存されます。 これで WAP またはソリューションをビルドし、上記の設定を使用するパッケージを作成できます。
パス (たとえば、VS コマンド プロンプトの場合、[スタート] -> [すべてのプログラム] -> [Microsoft Visual Studio 2010] -> [Visual Studio ツール] -> [Visual Studio コマンド プロンプト (2010)]) で、MSBuild を使用してコマンド プロンプトを開きます。
ソリューションまたはプロジェクト ファイルに移動します。
ソリューションをビルドする場合、コマンドは次のようになります。
msbuild {solution file} /p:CreatePackageOnPublish=true /p:DeployOnBuild=true
プロジェクト ファイルをビルドする場合、コマンドは次のようになります。
msbuild {project file} /t:Package
既定以外の構成を作成する場合は、上記のコマンドに以下を追加します。
/p:Configuration={Configuration Name}
コマンド プロンプトからのパッケージの配置
これでパッケージが作成されたので、コマンド プロンプトからパッケージを配置できます。 管理者として配置します。
リモート エージェント サービスを使用して管理者としてパッケージを配置するには:
- コマンド プロンプトを開きます
- パッケージがビルドされた場所に移動します。 この情報は、ビルド出力で確認できます。 UI のビルドの [出力] ウィンドウにはリンクがあり、コマンド ラインからはビルド出力の [PackageUsingManifest] セクションに場所が一覧表示されます。
- 「{project name}.deploy.cmd /t /m:{destinationServerName} /u:{administratorUser} /p:{AdministratorPassword}」と入力し、Enter キーを押します。
- トライアル公開で正しい結果が生成された場合は、/t パラメーターなしでコマンドを再実行します。
コマンド ファイルを使用した配置の詳細については、「{project name}.deploy.cmd」と入力して関連する readme を開くか、こちらの記事を参照してください。
IIS マネージャーを使用したパッケージの配置
インターネット インフォメーション サービス (IIS) マネージャーを使用して、新しく作成したパッケージをインストールすることもできます。
インターネット インフォメーション サービス マネージャー (inetmgr) を使用してパッケージを配置するには:
inetmgr.exe を実行します。
inetmgr で [サーバー] ノードを展開します。
[サイト] ノードを展開します。
アプリケーションをインポートするサイトを右クリックします。
パッケージの場所を [パッケージ パス:] テキスト ボックスに入力します。
[次へ] をクリックします。
この時点で [パッケージの内容の選択] 画面が表示されています。 項目をチェックまたはチェック解除することで、インストールする内容をカスタマイズできます。 次のスクリーンショットには、以下が表示されています。
インストールする目的の項目を選択した後、[次へ] をクリックします。
次に、パッケージ パラメーターの設定を確認する必要があります。
- [アプリケーション パス] は、アプリケーションをインストールする場所です。inetmgr で [既定の Web サイト] ノードからインポートすることに決めたため、それがルートとなり、テキスト ボックスにアプリケーション名を入力してインストールできます。
- 最初の [接続文字列] パラメーターは、パッケージ スクリプトをインストールするデータベースです。
- 2 番目の [接続文字列] パラメーターは、web.config ファイルに配置する値です。 2 つの異なるパラメーターを使用すると、特権が高いユーザーとしてデータベースをインストールし、特権が低いアカウントでアプリケーションを実行できます。
次へ をクリックします。
アプリケーションが存在する場合、追加のファイルを削除するかどうかを確認するメッセージが表示されます。 目的のオプションを選択し、[次へ] をクリックします。