Visual Studio を使用した ASP.NET の Web 配置: 概要
著者: Tom Dykstra
このチュートリアル シリーズでは、Azure SDK for .NET で Visual Studio 2012 を使用して、ASP.NET Web アプリケーションを Azure App Service Web Apps またはサードパーティのホスティング プロバイダーにデプロイ (発行) する方法について説明します。 ほとんどの手順は、Visual Studio 2013 でも同様です。
インターネット経由でユーザーが利用できるように Web アプリケーションを開発します。 しかし、通常、Web プログラミング チュートリアルは、開発用コンピューターで何かを動作させる方法を示した直後に停止します。 この一連のチュートリアルは、他のチュートリアルの続きから始まります。つまり、Web アプリを作成し、テストして、準備が整った状態です。 次の内容 これらのチュートリアルでは、まずテスト用にローカル開発コンピューターの IIS にデプロイし、次にステージング環境と運用環境用に Azure またはサード パーティのホスティング プロバイダーにデプロイする方法について説明します。 デプロイするサンプル アプリケーションは、Entity Framework、SQL Server、および ASP.NET メンバーシップ システムを使用する Web アプリケーション プロジェクトです。 サンプル アプリケーションでは ASP.NET Web Forms を使用していますが、示されている手順は、ASP.NET MVC および Web API にも適用できます。
これらのチュートリアルでは、Visual Studio で ASP.NET を操作する方法を把握していることを前提としています。 そうでない場合は、「基本的な ASP.NET Web Forms チュートリアル」または「基本的な ASP.NET MVC チュートリアル」から開始することをお勧めします。
チュートリアルに直接関連しない質問がある場合は、ASP.NET Deployment フォーラムまたは StackOverflow に投稿できます。
概要
これらのチュートリアルでは、SQL Server データベースを含む ASP.NET Web アプリケーションをデプロイする方法について説明します。 まず、テスト用にローカル開発コンピューター上の IIS にデプロイし、次にステージング環境と運用環境用に Azure App Service と Azure SQL Database の Web Apps にデプロイします。 Visual Studio のワンクリック発行を使用してデプロイする方法と、コマンド ラインを使用してデプロイする方法について説明します。
チュートリアルの数が多いため、デプロイ プロセスが大変に思えるかもしれません。 実際、基本的な手順はシンプルです。 ただし、実際の状況では、ターゲット サーバーでフォルダーのアクセス許可を設定するなど、追加のデプロイ タスクが必要になることがよくあります。 チュートリアルでは、実際のアプリケーションのデプロイを成功させるのを妨げる可能性のある情報を省かないように、これらの追加タスクの一部を図解しました。
チュートリアルは順番に実行するように設計されており、各パートは前のパートに基づいて構築されています。 状況に関係のない部分はスキップできますが、後のチュートリアルで手順を調整する必要がある場合があります。
対象ユーザー
このチュートリアルは、次のような環境で作業する ASP.NET 開発者を対象としています。
- 運用環境は、Azure App Service Web Apps またはサード パーティのホスティング プロバイダーです。
- デプロイは継続的インテグレーション プロセスに限らず、Visual Studio からも直接実行できます。
継続的デリバリー プロセスを使用したソース管理からのデプロイについては、コマンド ラインからのデプロイ方法を示すチュートリアルを除き、このチュートリアルでは説明しません。 継続的デリバリーの詳細については、次のリソースを参照してください。
- 継続的インテグレーションと継続的デリバリー (Windows Azure を使用した実世界のクラウド アプリの構築)
- Azure App Service での Web アプリのデプロイ
- エンタープライズ シナリオでの Web アプリケーションのデプロイ (Visual Studio 2010 用に記述された古いチュートリアルのセットで、エンタープライズ環境に関する有用な情報があります。)
サード パーティのホスティング プロバイダーの使用
このチュートリアルでは、Azure アカウントを設定し、ステージング環境と運用環境用に Azure App Service の Web Apps にアプリケーションをデプロイするプロセスについて説明します。 ただし、選択したサード パーティのホスティング プロバイダーにデプロイする場合も、同じ基本的な手順を使用できます。 チュートリアルでは、Azure 固有のプロセスについて説明し、サード パーティのホスティング プロバイダーで想定される違いについてアドバイスします。
Web アプリ プロジェクトの配置
これらのチュートリアル用にダウンロードしてデプロイするサンプル アプリケーションは、Visual Studio の Web アプリケーション プロジェクトです。 ただし、Visual Studio 用の最新の Web 発行更新プログラムをインストールする場合は、Web アプリ プロジェクトに対して同じ配置方法とツールを使用できます。
ASP.NET MVC プロジェクトの配置
サンプル アプリケーションは ASP.NET Web Forms プロジェクトですが、学習する方法はすべて、ASP.NET MVC にも適用できます。 Visual Studio MVC プロジェクトは、Web アプリケーション プロジェクトのもう 1 つの形式にすぎません。 唯一の違いは、ASP.NET MVC またはそのターゲット バージョンをサポートしていないホスティング プロバイダーにデプロイする場合、プロジェクトに適切な (MVC 3、MVC 4、または MVC 5) NuGet パッケージがインストールされていることを確認する必要があることです。
プログラミング言語
サンプル アプリケーションでは C# を使用しますが、チュートリアルでは C# に関する知識は必要ありません。また、チュートリアルで示されている配置手法は言語固有のものではありません。
データベースの配置方法
Visual Studio で WEB 配置と共に SQL Server データベースを配置するには、次の 3 つの方法があります。
- Entity Framework の Code First Migrations
- dbDacFx Web 配置プロバイダー
- dbFullSql Web 配置プロバイダー
このチュートリアルでは、これらの方法のうち、最初の 2 つを使用します。 dbFullSql Web 配置プロバイダーは従来の方法で、SQL Server Compact から SQL Server への移行などの特定のシナリオを除き、推奨されなくなりました。
このチュートリアルで示す方法は、SQL Server Compact ではなく SQL Server データベース用です。 SQL Server Compact データベースを配置する方法については、「SQL Server Compact を使用した Visual Studio Web 配置」を参照してください。
このチュートリアルで示す方法では、Web 配置の発行方法を使用する必要があります。 FTP、ファイル システム、FPSE などの別の発行方法を使用する場合は、Visual Studio および ASP.NET の Web 配置コンテンツ マップの「Web アプリケーションの展開とは別にデータベースを配置する」を参照してください。
Entity Framework の Code First Migrations
Entity Framework バージョン 4.3 では、Microsoft は Code First Migrations を導入しました。 Code First Migrations は、データ モデルに増分変更を加え、その変更をデータベースに反映するプロセスを自動化します。 以前のバージョンの Code First では、通常、データ モデルを変更するたびに Entity Framework でデータベースを削除して再作成していました。 テスト データは簡単に再作成されるため、開発では問題になりませんが、運用環境では通常、データベースを削除せずにデータベース スキーマを更新する必要があります。 Migrations 機能を使用すると、データベースを削除して再作成することなしに、Code First によりデータベースを更新できます。 必要なスキーマ変更の方法を Code First で自動的に決定させることも、変更をカスタマイズするコードを記述することもできます。 Code First Migrations の概要については、「Code First Migrations」を参照してください。
Web プロジェクトを配置する場合、Visual Studio は Code First Migrations によって管理されるデータベースを配置するプロセスを自動化できます。 発行プロファイルを作成するときに、[Code First Migrations を実行する] (アプリケーション開始時に実行) というラベルの付いたチェック ボックスをオンにします。 この設定により、デプロイ プロセスは、Code First が MigrateDatabaseToLatestVersion
初期化子クラスを使用するように、配置先サーバー上のアプリケーション Web.config ファイルを自動的に構成します。
Visual Studio は、デプロイ プロセス中、データベースに対して何も行いません。 デプロイされたアプリケーションがデプロイ後に初めてデータベースにアクセスすると、Code First は、データベースを自動的に作成するか、データベース スキーマを最新バージョンに更新します。 アプリケーションで Migrations Seed メソッドが実装されている場合、データベースの作成後またはスキーマの更新後にこのメソッドが実行されます。
このチュートリアルでは、Code First Migrations を使用してアプリケーション データベースをデプロイします。
dbDacFx Web 配置プロバイダー
Entity Framework Code First で管理されていない SQL Server データベースの場合は、発行プロファイルを構成するときに、[データベースの更新] というラベルの付いたチェック ボックスをオンにすることができます。 最初のデプロイ時に、dbDacFx プロバイダーは、配置元データベースと一致するように、配置先データベースにテーブルとその他のデータベース オブジェクトを作成します。 以降のデプロイでは、プロバイダーは配置元データベースと配置先データベースの違いを判断し、配置元データベースと一致するように配置先データベースのスキーマを更新します。 既定では、プロバイダーは、テーブルや列が削除された場合など、データ損失の原因となる変更を行いません。
この方法では、データベース テーブル内のデータの配置は自動化されませんが、そのためのスクリプトを作成し、デプロイ時に実行するように Visual Studio を構成できます。 デプロイ中にスクリプトを実行するもう 1 つの理由は、データ損失の原因になるため、自動的に実行できないスキーマ変更を行うためです。
このチュートリアルでは、dbDacFx プロバイダーを使用して、ASP.NET メンバーシップ データベースを配置します。
このチュートリアルのトラブルシューティング
デプロイ中にエラーが発生した場合、またはデプロイされたサイトが正しく実行されない場合、エラー メッセージは必ずしも明白な解決策を提供するとは限りません。 よくある問題のシナリオに役立つ、「トラブルシューティングのリファレンス ページ」が利用可能です。 チュートリアルを進める際にエラー メッセージが表示されたり、うまくいかない場合は、必ずトラブルシューティング ページをご確認ください。
コメント歓迎
チュートリアルに関するコメントは歓迎されており、チュートリアルが更新される際には、チュートリアルのコメントで提供された修正や改善の提案を考慮するよう最大限努めます。
前提条件
このチュートリアルは、次の製品向けに作成されました。
- Windows 8 または Windows 7。
- 最新の更新プログラムが適用された Visual Studio 2012 または Visual Studio 2012 Express for Web。
- Azure SDK for Visual Studio 2012
このチュートリアルは、Visual Studio 2010 SP1 または Visual Studio 2013 を使用して行うことができますが、一部のスクリーンショットと機能が異なります。
Visual Studio 2013 を使用している場合は、Azure SDK for Visual Studio 2013 をインストールしてください。
Visual Studio 2010 SP1 を使用している場合は、次のソフトウェアをインストールしてください。
マシンに既にある SDK の依存関係の数に応じて、Azure SDK のインストールには長時間 (数分から 30 分以上) かかる場合があります。 Azure SDK には Visual Studio Web 発行機能の最新の更新プログラムが含まれているため、Azure ではなくサード パーティのホスティング プロバイダーに発行する場合でも、Azure SDK が必要です。
Note
このチュートリアルは、Azure SDK のバージョン 1.8.1 で記述されています。 それ以来、追加機能を備えた新しいバージョンがリリースされています。 チュートリアルはこれらの機能に言及し、詳細情報が掲載されたリソースへのリンクを追加するように更新されました。
手順とスクリーン ショットは Windows 8 に基づいていますが、チュートリアルでは Windows 7 の違いについて説明します。
チュートリアルを完了するには他のソフトウェアが必要ですが、まだインストールする必要はありません。 このチュートリアルでは、必要なときにインストールする手順について説明します。
サンプル アプリケーションのダウンロード
デプロイするアプリケーションは Contoso University という名前で、既に作成済みです。 これは、「ASP.NET サイトの Entity Framework チュートリアル」で説明されている Contoso University アプリケーションに大まかに基づく、大学の Web サイトの簡略版です。
前提条件のインストールが完了したら、Contoso University Web アプリケーションをダウンロードします。 .zip ファイルには、複数のバージョンのプロジェクトが含まれています。 チュートリアルの手順を実行するには、C# フォルダーにあるプロジェクトから始めます。 チュートリアルの最後にプロジェクトがどのように表示されるかを確認するには、ContosoUniversity-End フォルダーのプロジェクトを開きます。
チュートリアルの手順を実行するためのプロジェクトを準備するには、次の手順を実行します。
C# フォルダーの ContosoUniversity ソリューション ファイルを、Visual Studio のプロジェクトの操作に使用するフォルダーにある ContosoUniversity という名前のフォルダーに保存します。
既定では、これは Visual Studio 2012 の次のフォルダーです。
C:\Users\<username>\Documents\Visual Studio 2012\Projects
(このチュートリアルのスクリーン ショットでは、プロジェクト フォルダーは
C
: ドライブのルート ディレクトリにあります。)Visual Studio を起動し、プロジェクトを開きます。
ソリューション エクスプローラーで、ソリューションを右クリックし、[EnableNuGet パッケージの復元] をクリックします。
ソリューションをビルドします。
コンパイル エラーが発生した場合は、NuGet パッケージを手動で復元してください。
- ソリューション エクスプローラーでソリューションを右クリックし、 [ソリューション用 NuGet パッケージの管理]をクリックします。
- [NuGet パッケージの管理] ダイアログ ボックスの上部に、このソリューションには一部の NuGet パッケージが見つかりませんと表示されます。クリックして復元します。[復元] ボタンをクリックします。
- ソリューションをリビルドします。
Ctrl キーを押しながら F5 キーを押してアプリケーションを実行します。
アプリケーションにより Contoso University のホーム ページが開きます。
(Visual Studio が SQL Server Express LocalDB インスタンスを起動している間に待機時間が発生し、そのプロセスに時間がかかりすぎる場合はタイムアウト エラーが発生する可能性があります。その場合は、プロジェクトをもう一度開始してください。)
Web サイト ページにはメニュー バーからアクセスでき、次の機能を実行できます。
- 学生の統計情報を表示します ([バージョン情報] ページ)。
- 学生を表示、編集、削除、追加します。
- コースを表示および編集します。
- インストラクターを表示および編集します。
- 部署を表示および編集します。
いくつかの代表的なページのスクリーン ショットを次に示します。
デプロイに影響するアプリケーション機能を確認する
アプリケーションの次の機能は、アプリケーションのデプロイ方法、またはデプロイに必要な操作に影響します。 それぞれの詳細については、シリーズの次のチュートリアルで説明します。
- Contoso University では、学生やインストラクターの名前などのアプリケーション データを格納するために、SQL Server データベースを使用しています。 データベースにはテスト データと運用データが混在しており、運用環境にデプロイする場合は、テスト データを除外する必要があります。
- アプリケーションは、ASP.NET メンバーシップ システムを使用し、ユーザー アカウント情報を SQL Server データベースに格納します。 アプリケーションは、制限された情報にアクセスできる管理者ユーザーを定義します。 メンバーシップ データベースは、テストアカウントを使用せずに、管理者アカウントで配置する必要があります。
- アプリケーションでは、サードパーティのエラー ログとレポート ユーティリティを使用します。 このユーティリティは、アプリケーションと共にデプロイする必要があるアセンブリで提供されます。
- エラー ログ ユーティリティは、XML ファイル内のエラー情報をファイル フォルダーに書き込みます。 デプロイされたサイトで ASP.NET を実行するアカウントに、このフォルダーへの書き込みアクセス許可があることを確認し、このフォルダーをデプロイから除外する必要があります。 (そうしないと、テスト環境のエラー ログ データが運用環境にデプロイされたり、運用環境のエラー ログ ファイルが削除される可能性があります。)
- アプリケーションには、デプロイ先の環境 (テスト環境、ステージング環境、または運用環境) に応じて、配置された Web.config ファイルで変更する必要がある設定と、ビルド構成 (デバッグまたはリリース) に応じて変更する必要があるその他の設定が含まれています。
- Visual Studio ソリューションには、クラス ライブラリ プロジェクトが含まれています。 プロジェクト自体ではなく、このプロジェクトによって生成されるアセンブリのみを配置する必要があります。
まとめ
このシリーズの最初のチュートリアルでは、サンプルの Visual Studio プロジェクトをダウンロードし、アプリケーションのデプロイ方法に影響するサイト機能を確認しました。 次のチュートリアルでは、このうち一部を自動的に処理されるように設定することで、デプロイの準備をします。 その他の処理は手動で行います。