ASP.NET Core のホストと展開Host and deploy ASP.NET Core

通常、ASP.NET Core アプリをホスティング環境に展開するには、以下を実行します。In general, to deploy an ASP.NET Core app to a hosting environment:

  • ホスティング サーバー上のフォルダーに発行されたアプリを展開します。Deploy the published app to a folder on the hosting server.
  • 要求の着信時にアプリを開始し、クラッシュ後、またはサーバーの再起動後にアプリを再起動するプロセス マネージャーを設定します。Set up a process manager that starts the app when requests arrive and restarts the app after it crashes or the server reboots.
  • リバース プロキシを構成する場合は、アプリに要求を転送するリバース プロキシを設定します。For configuration of a reverse proxy, set up a reverse proxy to forward requests to the app.

フォルダーに発行するPublish to a folder

dotnet publish コマンドはアプリ コードをコンパイルし、アプリを実行するために必要なファイルを publish フォルダーにコピーします。The dotnet publish command compiles app code and copies the files required to run the app into a publish folder. Visual Studio から展開する場合は、ファイルが展開先にコピーされる前に dotnet publish ステップが自動的に行われます。When deploying from Visual Studio, the dotnet publish step occurs automatically before the files are copied to the deployment destination.

フォルダーの内容Folder contents

publish フォルダーには、1 つ以上のアプリのアセンブリ ファイル、依存関係、さらに必要に応じて .NET ランタイムが含まれています。The publish folder contains one or more app assembly files, dependencies, and optionally the .NET runtime.

.NET Core アプリは、自己完結型展開またはフレームワーク依存展開として発行できます。A .NET Core app can be published as self-contained deployment or framework-dependent deployment. アプリが自己完結型の場合、.NET ランタイムを含むアセンブリ ファイルが publish フォルダーに含まれています。If the app is self-contained, the assembly files that contain the .NET runtime are included in the publish folder. アプリがフレームワークに依存する場合、.NET ランタイムのファイルは含まれていません。これは、サーバーにインストールされている .NET のバージョンへの参照がアプリに含まれていないためです。If the app is framework-dependent, the .NET runtime files aren't included because the app has a reference to a version of .NET that's installed on the server. 既定の展開モデルはフレームワークに依存します。The default deployment model is framework-dependent. 詳細については、「.NET Core アプリケーションの展開」を参照してください。For more information, see .NET Core application deployment.

.exe ファイルと .dll ファイルに加え、ASP.NET Core アプリの publish フォルダーには、通常、構成ファイル、静的資産、および MVC ビューが含まれています。In addition to .exe and .dll files, the publish folder for an ASP.NET Core app typically contains configuration files, static assets, and MVC views. 詳細については、「ASP.NET Core のディレクトリ構造」を参照してください。For more information, see ASP.NET Core のディレクトリ構造.

プロセス マネージャーを設定するSet up a process manager

ASP.NET Core アプリは、サーバーの起動時に起動し、クラッシュした場合には再起動する必要があるコンソール アプリです。An ASP.NET Core app is a console app that must be started when a server boots and restarted if it crashes. 起動と再起動を自動化するには、プロセス マネージャーが必要です。To automate starts and restarts, a process manager is required. ASP.NET Core の最も一般的なプロセス マネージャーは次のとおりです。The most common process managers for ASP.NET Core are:

リバース プロキシを設定するSet up a reverse proxy

アプリで Kestrel サーバーを使用する場合は、リバース プロキシ サーバーとして、NginxApache、または IIS を使用できます。If the app uses the Kestrel server, Nginx, Apache, or IIS can be used as a reverse proxy server. リバース プロキシ サーバーはインターネットから HTTP 要求を受け取り、これを Kestrel に転送します。A reverse proxy server receives HTTP requests from the Internet and forwards them to Kestrel.

いずれの構成でも、—リバース プロキシ サーバーの有無に関わらず—、ホスティング構成がサポートされています。Either configuration—with or without a reverse proxy server—is a supported hosting configuration. 詳細については、「When to use Kestrel with a reverse proxy」 (Kestrel とリバース プロキシを使用するタイミング) を参照してください。For more information, see When to use Kestrel with a reverse proxy.

プロキシ サーバーとロード バランサーのシナリオProxy server and load balancer scenarios

プロキシ サーバーとロード バランサーの背後でホストされているアプリでは、追加の構成が必要になる場合があります。Additional configuration might be required for apps hosted behind proxy servers and load balancers. 追加の構成をしないと、要求が発生したスキーム (HTTP/HTTPS) とリモート IP アドレスにアクセスできない場合があります。Without additional configuration, an app might not have access to the scheme (HTTP/HTTPS) and the remote IP address where a request originated. 詳細については、「プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する」を参照してください。For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

Visual Studio と MSBuild を使用してデプロイを自動化するUse Visual Studio and MSBuild to automate deployments

多くの場合、展開には、dotnet publish からサーバーへの出力のコピーのほか、追加の作業が必要になります。Deployment often requires additional tasks besides copying the output from dotnet publish to a server. たとえば、追加のファイルが必要になる場合や、publish フォルダーから除外される場合があります。For example, extra files might be required or excluded from the publish folder. Visual Studio では Web 展開で MSBuild を使用します。この MSBuild は、展開時に他の多くの作業を行うためにカスタマイズすることができます。Visual Studio uses MSBuild for web deployment, and MSBuild can be customized to do many other tasks during deployment. 詳細については、ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル と書籍『Using MSBuild and Team Foundation Build』(MSBuild と Team Foundation Build の使用) を参照してください。For more information, see ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル and the Using MSBuild and Team Foundation Build book.

Web の発行機能または組み込みの Git サポートを使用して、Visual Studio から Azure App Service にアプリを直接展開することができます。By using the Publish Web feature or built-in Git support, apps can be deployed directly from Visual Studio to the Azure App Service. Azure DevOps Services では、Azure App Service への継続的な展開がサポートされています。Azure DevOps Services supports continuous deployment to Azure App Service. 詳細については、ASP.NET Core および Azure を使用した DevOps に関する記事を参照してください。For more information, see DevOps with ASP.NET Core and Azure.

Azure に発行するPublish to Azure

Visual Studio を使って Azure にアプリを発行するための手順については、Visual Studio を使用して Azure に ASP.NET Core アプリを発行する をご覧ください。See Visual Studio を使用して Azure に ASP.NET Core アプリを発行する for instructions on how to publish an app to Azure using Visual Studio. その他の例については、「Azure に ASP.NET Core Web アプリを作成する」を参照してください。An additional example is provided by Create an ASP.NET Core web app in Azure.

Windows での MSDeploy を使用した発行Publish with MSDeploy on Windows

Visual Studio 発行プロファイルを使って (Windows コマンド プロンプトからの dotnet msbuild コマンドの使用を含む) アプリを発行する方法については、「ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル」をご覧ください。See ASP.NET Core アプリを配置するための Visual Studio 発行プロファイル for instructions on how to publish an app with a Visual Studio publish profile, including from a Windows command prompt using the dotnet msbuild command.

Web ファームでのホストHost in a web farm

Web ファーム環境 (たとえば、スケーラビリティのためのアプリの複数のインスタンスの展開) で ASP.NET Core アプリをホストするための構成については、Web ファームでの ASP.NET Core のホスト を参照してください。For information on configuration for hosting ASP.NET Core apps in a web farm environment (for example, deployment of multiple instances of your app for scalability), see Web ファームでの ASP.NET Core のホスト.

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

アプリとその依存関係に対して正常性チェックを実行するには、正常性チェックのミドルウェアを使用します。Use Health Check Middleware to perform health checks on an app and its dependencies. 詳細については、「ASP.NET Core の正常性チェック」を参照してください。For more information, see ASP.NET Core の正常性チェック.

その他の技術情報Additional resources