このチュートリアル シリーズでは、Visual Studio 2012 RC または Visual Studio Express 2012 RC for Web を使用して、SQL Server Compact データベースを含む ASP.NET Web アプリケーション プロジェクトを、配置 (発行) する方法について説明します。 Web 発行の更新をインストールすれば、Visual Studio 2010 を使用することもできます。 シリーズの概要については、シリーズの最初のチュートリアルを参照してください。
Visual Studio 2012 の RC リリース以降に導入された配置機能の紹介や、SQL Server Compact 以外の SQL Server エディションの配置方法、Azure App Service Web Apps への配置方法などを解説したチュートリアルは、「Visual Studio を使用した ASP.NET Web 配置」をご覧ください。
概要
このチュートリアルでは、Visual Studio のワンクリック発行機能を使用して、ホスティング プロバイダーを使用してアカウントを設定し、ASP.NET Web アプリケーションを運用環境にデプロイします。
リマインダー: チュートリアルを進めていて、エラー メッセージが表示される場合や、うまくいかない場合は、必ずトラブルシューティングのページをご確認ください。
ホスティング プロバイダーの選択
Contoso University アプリケーションとこのチュートリアル シリーズには、ASP.NET 4 と Web Deploy をサポートするプロバイダーが必要です。 チュートリアルでライブ Web サイトへのデプロイの完全なエクスペリエンスを示すことができるように、特定のホスティング会社が選択されました。 ホスティング会社ごとに異なる機能が用意されており、サーバーにデプロイするエクスペリエンスは多少異なります。 ただし、このチュートリアルで説明するプロセスは、プロセス全体で一般的です。 このチュートリアルで使用するホスティング プロバイダー (Cytanium.com) は、使用可能な多くのプロバイダーの 1 つであり、このチュートリアルでのホスティング プロバイダーの使用は、保証や推奨を構成するものではありません。
独自のホスティング プロバイダーを選択する準備ができたら、Microsoft.com/web サイトの プロバイダー ギャラリー の機能と価格を比較できます。
アカウントの作成
選択したプロバイダーでアカウントを作成します。 完全な SQL Server データベースのサポートが追加された場合は、このチュートリアルで選択する必要はありませんが、このシリーズの後半の 「SQL Server への移行 」チュートリアルで必要になります。
これらのチュートリアルでは、新しいドメイン名を登録する必要はありません。 プロバイダーによってサイトに割り当てられた一時的な URL を使用して、デプロイが成功したことを確認するテストを行うことができます。
アカウントが作成されると、通常、サイトの展開と管理に必要なすべての情報を含むウェルカム メールが届きます。 ホスティング プロバイダーから送信される情報は、ここに示されているものと似ています。 新しいアカウント所有者に送信される Cytanium ウェルカム メールには、次の情報が含まれています。
プロバイダーのコントロール パネル サイトの URL。サイトの設定を管理できます。 指定した ID とパスワードは、簡単に参照できるようにウェルカム メールのこの部分に含まれています。 (この図では、どちらもデモ値に変更されています)。
既定の .NET Framework バージョンと変更方法に関する情報。 多くのホスティング サイトの既定値は 2.0 で、.NET Framework 2.0、3.0、または 3.5 を対象とする ASP.NET アプリケーションで動作します。 ただし、Contoso University は .NET Framework 4 アプリケーションであるため、この設定を変更する必要があります。 (ASP.NET 4.5 アプリケーションの場合は、.NET 4.0 設定を使用します)。
Web サイトへのアクセスに使用できる一時的な URL。 このアカウントが作成されると、既存のドメイン名として "contosouniversity.com" が入力されました。 したがって、一時的な URL は
http://contosouniversity.com.vserver01.cytanium.com。データベースを設定する方法と、データベースにアクセスするために必要な接続文字列に関する情報:
サイトを展開するためのツールと設定に関する情報。 (Cytanium からの電子メールでは、ここでは省略されている WebMatrix についても言及しています)。
.NET Framework バージョンの設定
Cytanium ウェルカム メールには、.NET Framework のバージョンを変更する方法に関する手順へのリンクが含まれています。 これらの手順では、これは Cytanium コントロール パネルを介して実行できることを説明します。 他のプロバイダーには、外観が異なるコントロール パネル サイトがあります。または、別の方法でこれを行うよう指示される場合があります。
コントロール パネルの URL に移動します。 ユーザー名とパスワードでログインすると、コントロール パネルが表示されます。
[ ホスティング スペース ] ボックスで、Web アイコンの上にポインターを置き、メニューから [Web サイト ] を選択します。
[ Web サイト ] ボックスで、 contosouniversity.com (アカウントの作成時に使用したサイトの名前) をクリックします。
[ Web サイトのプロパティ ] ボックスで、[ 拡張機能 ] タブを選択します。
ASP.NET を 2.0 統合パイプライン から 4.0 (統合パイプライン) に変更し、[ 更新] をクリックします。
ホスティングプロバイダーに公開する
ホスティング プロバイダーからのウェルカム メールには、プロジェクトを発行するために必要なすべての設定が含まれており、その情報を発行プロファイルに手動で入力できます。 プロバイダーへのデプロイを構成するには、より簡単でエラーが少ない方法を使用します。それは、.publishsettings ファイルをダウンロードし、発行プロファイルにインポートすることです。
ブラウザーで、Cytanium コントロール パネルに移動し、[Web] を選択し、[Web サイト] を選択します。
contosouniversity.com Web サイトを選択します。
[ Web 発行 ] タブを選択します。
ユーザー名とパスワードを入力して、Web 公開に使用する資格情報を作成します。 コントロール パネルへのログオンに使用するのと同じ資格情報を入力できます。 次に、[ 有効] をクリックします。
[この Web サイト用の発行プロファイルをダウンロード] をクリックします。
ファイルを開くか保存するように求められたら、ファイルを保存します。
Visual Studio の ソリューション エクスプローラー で、ContosoUniversity プロジェクトを右クリックし、[発行] を選択 します。 [ Web の発行 ] ダイアログ ボックスが [ プレビュー ] タブに表示され、[ テスト プロファイル] が選択されています。これは最後に使用したプロファイルであるためです。
[ プロファイル ] タブを選択し、[ インポート] をクリックします。
[ 発行設定のインポート] ダイアログ ボックスで、ダウンロードした .publishsettings ファイルを選択し、[ 開く] をクリックします。 ウィザードが [接続] タブに進み、すべてのフィールドが入力されます。
.publishsettings ファイルはサイトの計画された永続的な URL を [宛先 URL] ボックスに配置しますが、そのドメインをまだ購入していない場合は、値を一時 URL に置き換えます。 この例では、URL は http://contosouniversity.com.vserver01.cytanium.com このボックスの唯一の目的は、デプロイ後にブラウザーが自動的に開く URL を指定することです。 空白のままにした場合、唯一の結果は、デプロイ後にブラウザーが自動的に起動しなくなります。
[ 接続の検証 ] をクリックして、設定が正しいことを確認し、サーバーに接続できます。 前に説明したように、緑色のチェック マークによって接続が成功したことが確認されます。
[接続の検証] をクリックすると、[ 証明書エラー ] ダイアログ ボックスが表示されることがあります。 その場合は、サーバー名が予期した名前であることを確認します。 その場合は、[ この証明書を Visual Studio の今後のセッション用に保存する ] を選択し、[ 承諾] をクリックします。 (このエラーは、デプロイする URL の SSL 証明書を購入する費用を回避するためにホスティング プロバイダーが選択したことを意味します。有効な証明書を使用してセキュリティで保護された接続を確立する場合は、ホスティング プロバイダーにお問い合わせください)。
[次へ] をクリックします。
[設定] タブの [データベース] セクションで、テスト発行プロファイルに入力したのと同じ値を入力します。 必要な接続文字列がドロップダウン リストに表示されます。
-
SchoolContext の接続文字列ボックスで、
Data Source=|DataDirectory|School-Prod.sdf - SchoolContext で、[コードの最初の移行の適用] を選択します。
-
DefaultConnection の接続文字列ボックスで、
Data Source=|DataDirectory|aspnet-Prod.sdfを選択します。 - DefaultConnection で、[データベースの更新] をオフのままにします。
[次へ] をクリックします。
[ プレビュー ] タブで、[ プレビューの開始 ] をクリックして、コピーされるファイルの一覧を表示します。 ローカル コンピューター上の IIS に展開したときと同じ一覧が表示されます。
発行する前に、プロファイルの名前を変更して、Web.Production.config 変換ファイルが適用されるようにします。 [ プロファイル ] タブを選択し、[ プロファイルの管理] をクリックします。
[ Web 発行プロファイルの編集 ] ダイアログ ボックスで、運用プロファイルを選択し、[ 名前の変更] をクリックして、プロファイル名を [運用] に変更します。 次に、閉じる をクリックします。
[公開] をクリックします。
アプリケーションはホスティング プロバイダーに発行されます。 結果が [出力] ウィンドウに表示されます。
ブラウザーが自動的に開き、Web 発行ウィザードの [接続] タブの [宛先 URL] ボックスに入力した URL が表示されます。 Visual Studio でサイトを実行したときと同じホーム ページが表示されます。ただし、タイトル バーに "(Test)" または "(Dev)" 環境インジケーターがありません。 これは、環境インジケーター Web.config 変換が正常に機能したことを示します。
注
見出しに "(Test)" が引き続き表示される場合は、ContosoUniversity プロジェクトから obj フォルダーを削除して再デプロイします。 プレリリース バージョンのソフトウェアでは、運用プロファイルを使用している場合でも、以前に適用した変換ファイル (Web.Test.config) が再び適用されることがあります。
データベース アクセスの原因となるページを実行する前に、El mah が発生したエラーをログに記録できることを確認します。
El mah のフォルダー権限の設定
このシリーズの前のチュートリアルで覚えているように、El mah がエラー ログ ファイルを格納するアプリケーション内のフォルダーに対する書き込みアクセス許可がアプリケーションにあることを確認する必要があります。 コンピューター上の IIS にローカルに展開した場合は、それらのアクセス許可を手動で設定します。 このセクションでは、Cytanium でアクセス許可を設定する方法について説明します。 (一部のホスティング プロバイダーでは、これを行えない場合があります。書き込みアクセス許可を持つ定義済みのフォルダーが 1 つ以上提供される場合があります。その場合は、指定したフォルダーを使用するようにアプリケーションを変更する必要があります)。
Cytanium コントロール パネルでフォルダーのアクセス許可を設定できます。 コントロール パネルの URL に移動し、[ ファイル マネージャー] を選択します。
[ ファイル マネージャー ] ボックス で contosouniversity.com を選択し、 wwwroot を選択してアプリケーションのルート フォルダーを表示します。 エルマの横にある南京錠アイコンをクリックします。
[ファイル/フォルダーのアクセス許可] ウィンドウで、contosouniversity.com の [読み取りと書き込み] チェック ボックスをオンにし、[アクセス許可の設定] をクリックします。
エラーを発生させ、その後 Elmah エラー レポートを表示して、Elmah フォルダーに書き込みアクセス権があることを確認してください。 Studentsxxx.aspxなどの無効な URL を要求 します。 前と同様に、 GenericErrorPage.aspx ページが表示されます。 [ ログアウト ] リンクをクリックし、 El mah.axd を実行します。 最初に ログイン ページが表示されます。このページでは、 Web.config 変換によって El mah 承認が正常に追加されたことを検証します。 ログインすると、発生したエラーを示すレポートが表示されます。
運用環境でのテスト
[学生] ページを実行します。 アプリケーションは初めて School データベースにアクセスしようとします。これによって、Code First Migrations がトリガーされ、データベースが作成されます。 一瞬の遅延後にページが表示されると、学生がいないことを示します。
[Instructors] ページを実行して、シード データがデータベースにインストラクター データを正常に挿入したことを確認します。
テスト環境で行ったように、データベースの更新が運用環境で動作することを確認する必要がありますが、通常は実稼働データベースにテスト データを入力しません。 このチュートリアルでは、テストと同じ方法を使用します。 ただし、実際のアプリケーションでは、実稼働データベースにテスト データを導入することなく、データベースの更新が成功したことを検証するメソッドを見つける必要がある場合があります。 一部のアプリケーションでは、何かを追加してから削除するのが実用的な場合があります。
学生を追加し、[ 学生 ] ページに入力したデータを表示して、データベース内のデータを更新できることを確認します。
[コース] メニューから [クレジットの更新] を選択して、承認規則が正しく動作していることを確認します。 [ ログイン] ページが表示されます。 管理者アカウントの資格情報を入力し、[ ログイン] をクリックすると、[ クレジットの更新 ] ページが表示されます。
ログインに成功すると、[ クレジットの更新 ] ページが表示されます。 これは、(単一の管理者アカウントを持つ) ASP.NET メンバーシップ データベースが正常にデプロイされたことを示します。
これでサイトの展開とテストが正常に完了し、インターネット経由で公開されています。
より信頼性の高いテスト環境の作成
「テスト環境へのデプロイ」チュートリアルで説明したように、最も信頼性の高いテスト環境は、運用アカウントと同じようにホスティング プロバイダーの 2 番目のアカウントになります。 これは、2 つ目のホスティング アカウントにサインアップする必要があるため、テスト環境としてローカル IIS を使用するよりもコストがかかります。 ただし、運用サイトのエラーや停止を防ぐ場合は、コストの価値があると判断できます。
テスト アカウントを作成してテスト アカウントにデプロイするプロセスのほとんどは、運用環境にデプロイするために既に行ったことと似ています。
- Web.config 変換ファイルを作成します。
- ホスティング プロバイダーでアカウントを作成します。
- 新しい発行プロファイルを作成し、テスト アカウントにデプロイします。
テスト サイトへのパブリック アクセスの禁止
テスト アカウントの重要な考慮事項は、インターネット上に公開されるが、一般のユーザーが使用しないようにすることです。 サイトを非公開にするには、次の 1 つ以上の方法を使用できます。
- テストに使用する IP アドレスからのみテスト サイトへのアクセスを許可するファイアウォール規則を設定するには、ホスティング プロバイダーに問い合わせてください。
- URL を偽装して、パブリック サイトの URL と似ないようにします。
- robots.txt ファイルを使用して、検索エンジンがテスト サイトをクロールせず、検索結果にリンクを報告しないようにします。
これらの方法の最初の方法は明らかに最も安全ですが、その手順は各ホスティング プロバイダーに固有であり、このチュートリアルでは説明しません。 テスト アカウントの URL を参照する IP アドレスのみを許可するようにホスティング プロバイダーに手配する場合、理論的には検索エンジンによるクロールについて心配する必要はありません。 ただし、その場合でも、ファイアウォール規則が誤ってオフになった場合のバックアップとして、 robots.txt ファイルをデプロイすることをお勧めします。
robots.txt ファイルはプロジェクト フォルダーに格納され、次のテキストが含まれている必要があります。
User-agent: *
Disallow: /
User-agent行は、ファイル内のルールがすべての検索エンジン Web クローラー (ロボット) に適用されることを検索エンジンに通知し、Disallow行はサイト上のページをクロールできないことを指定します。
運用サイトをカタログ化する検索エンジンが必要な場合は、運用環境の展開からこのファイルを除外する必要があります。 これを行うには、Web アプリケーション プロジェクトの配置に関する FAQ の「特定のファイルまたはフォルダーを展開から除外できますか ASP.NET」を参照してください。 運用環境の発行プロファイルに対してのみ除外を指定してください。
2 つ目のホスティング アカウントの作成は、必須ではありませんが、追加費用の価値があるテスト環境を操作するためのアプローチです。 次のチュートリアルでは、テスト環境として IIS を引き続き使用します。
次のチュートリアルでは、アプリケーション コードを更新し、変更をテスト環境と運用環境にデプロイします。