ASP.NET Core のホストと展開

通常、ASP.NET Core アプリをホスティング環境に展開するには、以下を実行します。

  • ホスティング サーバー上のフォルダーに発行されたアプリを展開します。
  • 要求の着信時にアプリを開始し、クラッシュ後、またはサーバーの再起動後にアプリを再起動するプロセス マネージャーを設定します。
  • リバース プロキシを構成する場合は、アプリに要求を転送するリバース プロキシを設定します。

フォルダーに発行する

dotnet publish コマンドはアプリ コードをコンパイルし、アプリを実行するために必要なファイルを publish フォルダーにコピーします。 Visual Studio から展開する場合は、ファイルが展開先にコピーされる前に dotnet publish ステップが自動的に行われます。

発行済みアプリをローカルで実行する

発行済みアプリをローカルで実行するには、publish フォルダーから dotnet <ApplicationName>.dll を実行します。

設定ファイルを発行する

*.json ファイルは既定で発行されます。 他の設定ファイルを発行するには、プロジェクト ファイルの <ItemGroup><Content Include= ... /> 要素でそれらを指定します。 次の例は、XML ファイルを発行します。

<ItemGroup>
  <Content Include="**\*.xml" Exclude="bin\**\*;obj\**\*"
    CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

フォルダーの内容

publish フォルダーには、1 つ以上のアプリのアセンブリ ファイル、依存関係、さらに必要に応じて .NET ランタイムが含まれています。

.NET Core アプリは、自己完結型展開またはフレームワーク依存展開として発行できます。 アプリが自己完結型の場合、.NET ランタイムを含むアセンブリ ファイルが publish フォルダーに含まれています。 アプリがフレームワークに依存する場合、.NET ランタイムのファイルは含まれていません。これは、サーバーにインストールされている .NET のバージョンへの参照がアプリに含まれていないためです。 既定の展開モデルはフレームワークに依存します。 詳細については、「.NET Core アプリケーションの展開」を参照してください。

.exe ファイルと .dll ファイルに加え、ASP.NET Core アプリの publish フォルダーには、通常、構成ファイル、静的資産、および MVC ビューが含まれています。 詳細については、「ASP.NET Core のディレクトリ構造」を参照してください。

プロセス マネージャーを設定する

ASP.NET Core アプリは、サーバーの起動時に起動し、クラッシュした場合には再起動する必要があるコンソール アプリです。 起動と再起動を自動化するには、プロセス マネージャーが必要です。 ASP.NET Core の最も一般的なプロセス マネージャーは次のとおりです。

リバース プロキシを設定する

アプリで Kestrel サーバーを使用する場合は、リバース プロキシ サーバーとして、NginxApache、または IIS を使用できます。 リバース プロキシ サーバーでは、インターネットから HTTP 要求を受け取り、Kestrel に転送します。

いずれの構成でも、リバース プロキシ サーバーの有無にかかわらず、ホスティング構成がサポートされています。 詳細については、「Kestrel とリバース プロキシを使用するタイミング」を参照してください。

いずれの構成でも、リバース プロキシ サーバーの有無にかかわらず、ホスティング構成がサポートされています。 詳細については、「Kestrel とリバース プロキシを使用するタイミング」を参照してください。

プロキシ サーバーとロード バランサーのシナリオ

プロキシ サーバーとロード バランサーの背後でホストされているアプリでは、追加の構成が必要になる場合があります。 追加の構成をしないと、要求が発生したスキーム (HTTP/HTTPS) とリモート IP アドレスにアクセスできない場合があります。 詳細については、「プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する」を参照してください。

Visual Studio と MSBuild を使用してデプロイを自動化する

多くの場合、展開には、dotnet publish からサーバーへの出力のコピーのほか、追加の作業が必要になります。 たとえば、追加のファイルが必要になる場合や、publish フォルダーから除外される場合があります。 Visual Studio では Web 展開用に MSBuild が使用されます。MSBuild は、展開時に他の多くの作業を行うようにカスタマイズできます。 詳細については、「ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル (.pubxml)」、および『Using MSBuild and Team Foundation Build』という書籍を参照してください。

Web の発行機能を使用すれば、Visual Studio から Azure App Service にアプリを直接展開することができます。 Azure DevOps Services では、Azure App Service への継続的な展開がサポートされています。 詳細については、「ASP.NET Core 開発者向け DevOps」を参照してください。

Azure に発行する

Visual Studio を使用してアプリを Azure に発行する方法については、「Visual Studio を使用して Azure に ASP.NET Core アプリを発行する」を参照してください。 その他の例については、「Azure に ASP.NET Core Web アプリを作成する」を参照してください。

Windows での MSDeploy を使用した発行

Visual Studio 発行プロファイルを使用して (Windows コマンド プロンプトからの dotnet msbuild コマンドの使用を含む) アプリを発行する方法については、「ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル (.pubxml)」を参照してください。

インターネット インフォメーション サービス (IIS)

web.config ファイルで提供される構成を使用したインターネット インフォメーション サービス (IIS) への展開については、「IIS を使用した Windows での ASP.NET Core のホスト」の記事を参照してください。

Web ファームでのホスト

Web ファーム環境 (たとえば、スケーラビリティのためのアプリの複数のインスタンスの展開) で ASP.NET Core アプリをホストするための構成については、「Web ファームでの ASP.NET Core のホスト」を参照してください。

Docker でのホスト

詳細については、「Docker コンテナーで ASP.NET Core をホストする」を参照してください。

正常性チェックを実行する

アプリとその依存関係に対して正常性チェックを実行するには、正常性チェックのミドルウェアを使用します。 詳細については、「Health checks in ASP.NET Core」(ASP.NET Core の正常性チェック) を参照してください。

その他のリソース

通常、ASP.NET Core アプリをホスティング環境に展開するには、以下を実行します。

  • ホスティング サーバー上のフォルダーに発行されたアプリを展開します。
  • 要求の着信時にアプリを開始し、クラッシュ後、またはサーバーの再起動後にアプリを再起動するプロセス マネージャーを設定します。
  • リバース プロキシを構成する場合は、アプリに要求を転送するリバース プロキシを設定します。

フォルダーに発行する

dotnet publish コマンドはアプリ コードをコンパイルし、アプリを実行するために必要なファイルを publish フォルダーにコピーします。 Visual Studio から展開する場合は、ファイルが展開先にコピーされる前に dotnet publish ステップが自動的に行われます。

フォルダーの内容

publish フォルダーには、1 つ以上のアプリのアセンブリ ファイル、依存関係、さらに必要に応じて .NET ランタイムが含まれています。

.NET Core アプリは、自己完結型展開またはフレームワーク依存展開として発行できます。 アプリが自己完結型の場合、.NET ランタイムを含むアセンブリ ファイルが publish フォルダーに含まれています。 アプリがフレームワークに依存する場合、.NET ランタイムのファイルは含まれていません。これは、サーバーにインストールされている .NET のバージョンへの参照がアプリに含まれていないためです。 既定の展開モデルはフレームワークに依存します。 詳細については、「.NET Core アプリケーションの展開」を参照してください。

.exe ファイルと .dll ファイルに加え、ASP.NET Core アプリの publish フォルダーには、通常、構成ファイル、静的資産、および MVC ビューが含まれています。 詳細については、「ASP.NET Core のディレクトリ構造」を参照してください。

プロセス マネージャーを設定する

ASP.NET Core アプリは、サーバーの起動時に起動し、クラッシュした場合には再起動する必要があるコンソール アプリです。 起動と再起動を自動化するには、プロセス マネージャーが必要です。 ASP.NET Core の最も一般的なプロセス マネージャーは次のとおりです。

リバース プロキシを設定する

アプリで Kestrel サーバーを使用する場合は、リバース プロキシ サーバーとして、NginxApache、または IIS を使用できます。 リバース プロキシ サーバーでは、インターネットから HTTP 要求を受け取り、Kestrel に転送します。

いずれの構成でも、リバース プロキシ サーバーの有無にかかわらず、ホスティング構成がサポートされています。 詳細については、「Kestrel とリバース プロキシを使用するタイミング」を参照してください。

プロキシ サーバーとロード バランサーのシナリオ

プロキシ サーバーとロード バランサーの背後でホストされているアプリでは、追加の構成が必要になる場合があります。 追加の構成をしないと、要求が発生したスキーム (HTTP/HTTPS) とリモート IP アドレスにアクセスできない場合があります。 詳細については、「プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する」を参照してください。

Visual Studio と MSBuild を使用してデプロイを自動化する

多くの場合、展開には、dotnet publish からサーバーへの出力のコピーのほか、追加の作業が必要になります。 たとえば、追加のファイルが必要になる場合や、publish フォルダーから除外される場合があります。 Visual Studio では Web 展開で MSBuild を使用します。この MSBuild は、展開時に他の多くの作業を行うためにカスタマイズすることができます。 詳細については、「ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル (.pubxml)」、および『Using MSBuild and Team Foundation Build』という書籍を参照してください。

Web の発行機能を使用すれば、Visual Studio から Azure App Service にアプリを直接展開することができます。 Azure DevOps Services では、Azure App Service への継続的な展開がサポートされています。 詳細については、「ASP.NET Core 開発者向け DevOps」を参照してください。

Azure に発行する

Visual Studio を使用してアプリを Azure に発行する方法については、「Visual Studio を使用して Azure に ASP.NET Core アプリを発行する」を参照してください。 その他の例については、「Azure に ASP.NET Core Web アプリを作成する」を参照してください。

Windows での MSDeploy を使用した発行

Visual Studio 発行プロファイルを使用して (Windows コマンド プロンプトからの dotnet msbuild コマンドの使用を含む) アプリを発行する方法については、「ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル (.pubxml)」を参照してください。

インターネット インフォメーション サービス (IIS)

web.config ファイルで提供される構成を使用したインターネット インフォメーション サービス (IIS) への展開については、「IIS を使用した Windows での ASP.NET Core のホスト」の記事を参照してください。

Web ファームでのホスト

Web ファーム環境 (たとえば、スケーラビリティのためのアプリの複数のインスタンスの展開) で ASP.NET Core アプリをホストするための構成については、「Web ファームでの ASP.NET Core のホスト」を参照してください。

Docker でのホスト

詳細については、「Docker コンテナーで ASP.NET Core をホストする」を参照してください。

その他のリソース