Visual Studio または Visual Web Developer を使用している SQL Server Compact を含む ASP.NET Web アプリケーションのデプロイ: 運用環境へのデプロイ - 7/12

著者: Tom Dykstra

スターター プロジェクトのダウンロード

このチュートリアル シリーズでは、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 配置をサポートするプロバイダーが必要です。 チュートリアルでライブ Web サイトへのデプロイのエクスペリエンス全体を示すことができるように、特定のホスティング会社を選びました。 ホスティング会社ごとに異なる機能が用意されており、サーバーにデプロイするエクスペリエンスは多少異なります。 ただし、このチュートリアルで説明するプロセス全体は一般的なものです。 このチュートリアルで使用するホスティング プロバイダー Cytanium.com は、利用できる数多くのプロバイダーの 1 つであり、このチュートリアルで使用したからといって、承認したり推奨したりしているわけではありません。

独自のホスティング プロバイダーを選択する準備ができたら、Microsoft.com/Web サイトのプロバイダーのギャラリーで機能と価格を比較できます。

アカウントの作成

選択したプロバイダーでアカウントを作成します。 完全な SQL Server データベースのサポートが追加オプションの場合、このチュートリアルで選択する必要はありませんが、このシリーズの後半の「SQL Server への移行」チュートリアルで必要になります。

これらのチュートリアルでは、新しいドメイン名を登録する必要はありません。 プロバイダーによってサイトに割り当てられた一時的な URL を使用して、デプロイが成功したことを確認するテストを行うことができます。

アカウントが作成されると、通常、サイトのデプロイと管理に必要なすべての情報を含むウェルカム メールが届きます。 次のような情報が、ホスティング プロバイダーから送信されてきます。 新しいアカウント所有者に送信される Cytanium ウェルカム メールには、次の情報が含まれています。

  • プロバイダーのコントロール パネル サイトの URL。ここでサイトの設定を管理できます。 指定した ID とパスワードは、参照用にウェルカム メールのこの部分に含まれています (この図では、どちらもデモ用の値に変更されています)。

    Welcome_Email_Control_Panel_URL

  • 既定の .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 設定を使用します)。

    Welcome_Email_Framework_Version

  • Web サイトへのアクセスに使用できる一時的な URL。 このアカウントが作成されると、"contosouniversity.com" が既存のドメイン名として入力されます。 したがって、一時 URL は http://contosouniversity.com.vserver01.cytanium.com です。

    Welcome_Email_Temporary_URL

  • データベースを設定する方法と、データベースにアクセスするために必要な接続文字列に関する情報:

    Welcome_Email_Database_Info

  • サイトをデプロイするためのツールと設定に関する情報 (Cytanium からのメールには WebMatrix に関する記載もありますが、ここでは省略します)。

    Welcome_Email_Deploy_info

.NET Framework バージョンの設定

Cytanium ウェルカム メールには、.NET Framework のバージョンを変更する方法に関する手順へのリンクが含まれています。 これらの手順には、Cytanium コントロール パネルを使用して実行できることが説明されています。 他のプロバイダーには、外観が異なるコントロール パネル サイトがあり、別の方法でこれらの手順を行うよう指示される場合があります。

コントロール パネルの URL に移動します。 ユーザー名とパスワードでログインすると、コントロール パネルが表示されます。

Cytanium_Control_Panel

[Hosting Spaces] ボックスで、Web アイコンの上にポインターを置き、メニューから [Web Sites] を選択します。

Cytanium_Control_Panel_selecting_Web_Sites

[Web Sites] ボックスで、contosouniversity.com (アカウントの作成時に使用したサイトの名前) をクリックします。

Cytanium_Control_Panel_selecting_contosouniversity

[Web Site Properties] ボックスで、[Extensions] タブを選択します。

Cytanium_Control_Panel_Extensions_tab

ASP.NET を 2.0 統合パイプラインから 4.0 (統合パイプライン) に変更し、[Update] をクリックします。

ホスティング プロバイダーへの発行

ホスティング プロバイダーからのウェルカム メールには、プロジェクトを発行するために必要なすべての設定が含まれており、その情報を発行プロファイルに手動で入力できます。 しかし、より簡単かつエラーが少ない方法で、プロバイダーへのデプロイを構成します (.publishsettings ファイルをダウンロードし、発行プロファイルにインポートします)。

ブラウザーで、Cytanium コントロール パネルに移動し、[Web] を選択し、[Web Sites] を選択します。

Control Panel selecting Web Sites

contosouniversity.com Web サイトを選択します。

Control Panel selecting contosouniversity.com

[Web Publishing] タブを選択します。

Control Panel Web Publishing tab

ユーザー名とパスワードを入力して、Web 発行に使用する資格情報を作成します。 コントロール パネルへのログオンに使用するのと同じ資格情報を入力できます。 [有効] をクリックします。

Control Panel create publishing credentials

[Download Publishing Profile for this web site] をクリックします。

Control Panel download publish profile

ファイルを開くか保存するように求められたら、ファイルを保存します。

Save publish profile file

Visual Studio のソリューション エクスプローラーで ContosoUniversity プロジェクトを右クリックし、[発行] を選びます。 テスト プロファイルが選択された状態で、[Web の発行] ダイアログ ボックスが [プレビュー] タブに表示されます。テスト プロファイルが表示されるのは、最後に使用したプロファイルであるためです。

[プロファイル] タブを選択し、[インポート] をクリックします。

Publish Web wizard Import button

[発行設定のインポート] ダイアログ ボックスで、ダウンロードした .publishsettings ファイルを選択し、[開く] をクリックします。 すべてのフィールドが入力された状態で、ウィザードが [接続] タブに進みます。

Publish Web wizard Connection tab

.publishsettings ファイルに指定されているサイトの永続的な URL が [宛先 URL] ボックスに入力されますが、そのドメインをまだ購入していない場合は、値を一時 URL に置き換えます。 この例では、URL は http://contosouniversity.com.vserver01.cytanium.com です。このボックスの唯一の目的は、デプロイ後にブラウザーが自動的に開く URL を指定することです。 空白のままにした場合、デプロイ後にブラウザーが自動的に起動しなくなります。

[接続の検証] をクリックして、設定が正しいことと、サーバーに接続できることを確認します。 前にも確認したように、緑色のチェック マークは、接続が成功したことを示します。

[接続の検証] をクリックすると、[証明書エラー] ダイアログ ボックスが表示されることがあります。 その場合は、サーバー名が正しいことを確認します。 正しい場合は、[Visual Studio の今後のセッションのためにこの証明書を保存する] を選んで、[承諾] をクリックします (このエラーは、デプロイ先の URL 用の SSL 証明書を購入する費用を回避することをホスティング プロバイダーが選んだことを意味します。有効な証明書を使ってセキュリティ保護された接続を確立することを望む場合は、ホスティング プロバイダーにお問い合わせください)。

Certificate error

次へ をクリックします。

[設定] タブの [データベース] セクションで、テスト発行プロファイルに入力したのと同じ値を入力します。 必要な接続文字列がドロップダウン リストに表示されます。

  • SchoolContext の接続文字列ボックスで、Data Source=|DataDirectory|School-Prod.sdf を選択します。
  • [SchoolContext][Code First Migrations の適用] を選択します。
  • DefaultConnection の接続文字列ボックスで、Data Source=|DataDirectory|aspnet-Prod.sdf を選択します。
  • [DefaultConnection][データベースの更新] をオフのままにします。

Publish Web wizard Settings tab

次へ をクリックします。

[プレビュー] タブで、[プレビューの開始] を選択して、コピーされるファイルの一覧を表示します。 ローカル コンピューター上の IIS にデプロイしたときと同じリストが表示されます。

発行する前に、プロファイルの名前を変更して、Web.Production.config 変換ファイルが適用されるようにします。 [プロファイル] タブを選択して、[プロファイルの管理] をクリックします。

Publish Web wizard Manage Profiles

[Web 発行プロファイルの編集] ダイアログ ボックスで、運用プロファイルを選択し、[名前の変更] をクリックして、プロファイル名を [運用] に変更します。 次に、[閉じる] をクリックします。

Edit Web Publish Profiles dialog box

[発行] をクリックします。

アプリケーションはホスティング プロバイダーに発行されます。 [出力] ウィンドウに結果が表示されます。

Output window after deployment

ブラウザーが自動的に開き、[Web 発行] ウィザードの [接続] タブにある [宛先 URL] ボックスに入力した URL のページが表示されます。 Visual Studio でサイトを実行したときと同じホーム ページが表示されます。ただし、タイトル バーに "(Test)" または "(Dev)" 環境インジケーターがありません。 これは、環境インジケーター Web.config の変換が正常に機能したことを示します。

Note

見出しに "(Test)" が引き続き表示される場合は、ContosoUniversity プロジェクトから obj フォルダーを削除して再デプロイします。 プレリリース バージョンのソフトウェアでは、運用プロファイルを使用している場合でも、以前に適用された変換ファイル (Web.Test.config) が再び適用される可能性があります。

Home_page_Prod

データベース アクセスに影響するページを実行する前に、発生したエラーが Elmah によってログに記録されることを確認します。

Elmah のフォルダー アクセス許可を設定する

このシリーズの前のチュートリアルで考慮したように、Elmah がエラー ログ ファイルを格納するアプリケーションのフォルダーに対して、書き込みアクセス許可が付与されていることを確認する必要があります。 ローカルのコンピューター上で IIS にデプロイした場合は、それらのアクセス許可を手動で設定します。 このセクションでは、Cytanium でアクセス許可を設定する方法について説明します (一部のホスティング プロバイダーでは、この手順を行えない場合があります。書き込みアクセス許可を持つ定義済みのフォルダーが 1 つ以上提供されることがあります。その場合は、指定されたフォルダーを使用するようにアプリケーションを変更する必要があります)。

Cytanium コントロール パネルでフォルダーのアクセス許可を設定できます。 コントロール パネルの URL にアクセスし、[File Manager] を選択します。

Cytanium_Control_Panel_with_File_Manager_selected

[File Manager] ボックスで、contosouniversity.com を選択し、wwwroot を選択して、アプリケーションのルート フォルダーを表示します。 Elmah の横にある南京錠アイコンをクリックします。

Cytanium_Control_Panel_File_Manager_at_root_folder

[File]/[Folder Permissions] ウィンドウで、contosouniversity.com[Read][Write] チェック ボックスを選択し、[Set Permissions] をクリックします。

Cytanium_Control_Panel_File_Folder_Permissions_Elmah

エラーを引き起こし、Elmah エラー レポートを表示して、Elmah に Elmah フォルダーへの書き込みアクセス許可があることを確認します。 Studentsxxx.aspx のような無効な URL を要求します。 前と同様に、GenericErrorPage.aspx ページが表示されます。 [Log Out] リンクをクリックし、Elmah.axd を実行します。 最初に [Log In] ページが表示され、Web.config の変換によって Elmah 認可が正常に追加されたことを確かめます。 ログインすると、発生したエラーを示すレポートが表示されます。

Elmah.axd_Prod

運用環境でのテスト

[Students] ページを実行します。 アプリケーションは初回の School データベースへのアクセスを試行します。これによって、Code First Migrations がトリガーされ、データベースが作成されます。 少し待機した後にページが表示されますが、学生はまだ誰も追加されていません。

Students_page_Prod

[Instructors] ページを実行して、シード データがデータベースの講師データを正常に挿入されたことを確認します。

Instructors_page_Prod

テスト環境で行ったように、データベースの更新が運用環境で動作することを確認する必要がありますが、通常は運用データベースにテスト データを入力しません。 このチュートリアルでは、テストと同じ方法を使用します。 ただし、実際のアプリケーションでは、運用データベースにテスト データを入力することなく、データベースの更新が成功したことを検証する方法を必要とするかもしれません。 一部のアプリケーションでは、何らかのデータを追加して、それを後から削除するのが実際的かもしれません。

学生を追加し、[Students] ページに入力したデータを表示して、データベース内のデータを更新できることを確認します。

Add_Students_page_Prod

Students_page_with_new_student_Prod

[Courses] メニューから [Update Credits] を選択して、認可規則が正しく動作していることを確認します。 [Log In] ページが表示されます。 管理者アカウントの資格情報を入力し、[Log In] をクリックすると、[Update Credits] ページが表示されます。

Log_In_page_Prod

ログインに成功すると、[Update Credits] ページが表示されます。 これは、単一の管理者アカウントを持つ ASP.NET メンバーシップ データベースが正常にデプロイされたことを示します。

Update_Credits_page_Prod

これで、サイトのデプロイとテストが正常に完了し、インターネット経由で公開されています。

より信頼性の高いテスト環境の作成

テスト環境へのデプロイ」チュートリアルで説明したように、最も信頼性の高いテスト環境は、運用アカウントと同じように設定された、ホスティング プロバイダーの 2 番目のアカウントです。 これは、2 番目のホスティング アカウントにサインアップする必要があるため、テスト環境としてローカル IIS を使用するよりもコストがかかります。 ただし、運用サイトのエラーや停止を防げると思うと、そのコストを払う価値はあると思えるかもしれません。

作成とテスト アカウントへのデプロイに関するプロセスのほとんどは、運用環境にデプロイするために既に行ったことと似ています。

  • Web.config 変換ファイルを作成します。
  • ホスティング プロバイダーでアカウントを作成します。
  • 新しい発行プロファイルを作成し、テスト アカウントにデプロイします。

テスト サイトへのパブリック アクセスの禁止

テスト アカウントについての重要な考慮事項は、インターネット上で動作させますが、一般ユーザーには使わせないようにする必要があるということです。 サイトを非公開にするには、次の 1 つ以上の方法を使用できます。

  • テストに使用する IP アドレスからのみテスト サイトへのアクセスを許可するファイアウォール規則を設定するように、ホスティング プロバイダーに依頼します。
  • URL を偽装して、パブリック サイトの URL と似たものとならないようにします。
  • robots.txt ファイルを使用して、検索エンジンがテスト サイトをクロールせず、検索結果でそれへのリンクを報告しないようにします。

これらの中で最初の方法が最も安全ですが、その手順は各ホスティング プロバイダーに固有であり、このチュートリアルでは扱いません。 テスト アカウントの URL を参照する IP アドレスのみを許可するようにホスティング プロバイダーに手配する場合、理論的には検索エンジンによるクロールについて心配する必要はありません。 ただしその場合でも、ファイアウォール規則が誤ってオフになった場合のバックアップとして、robots.txt ファイルをデプロイすることをお勧めします。

robots.txt ファイルはプロジェクト フォルダーに格納され、次のテキストが含まれている必要があります。

User-agent: *
Disallow: /

User-agent 行は、ファイル内の規則がすべての検索エンジン Web クローラー (ロボット) に適用されることを検索エンジンに通知し、Disallow 行はサイト上のページをクロールしてはならないことを指定します。

検索エンジンに運用サイトをカタログ化させたい場合は、このファイルを運用環境のデプロイから除外する必要があります。 これを行うには、ASP.NET Web アプリケーション プロジェクトのデプロイに関する FAQ の「特定のファイルまたはフォルダーをデプロイから除外できますか?」を参照してください。 運用環境の発行プロファイルに対してのみ除外を指定してください。

2 番目のホスティング アカウントの作成は、テスト環境で作業するためのアプローチです。必須ではありませんが、追加コストを支払う価値があると思えるかもしれません。 次のチュートリアルでは、テスト環境として IIS を引き続き使用します。

次のチュートリアルでは、アプリケーションのコードを更新し、変更をテストし、運用環境にデプロイします。