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 폴더에는 하나 이상의 앱 어셈블리 파일, 종속성, 그리고 선택적으로 .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 서버를 사용하는 경우 Nginx, Apache, 또는 IIS를 역방향 프록시 서버로 사용할 수 있습니다. 역방향 프록시 서버는 인터넷에서 HTTP 요청을 받아 Kestrel에 전달합니다.

역방향 프록시 서버가 있는 구성과 없는 구성 모두 지원되는 호스팅 구성입니다. 자세한 내용은 Kestrel을 역방향 프록시와 함께 사용하는 시기를 참조하세요.

역방향 프록시 서버가 있는 구성과 없는 구성 모두 지원되는 호스팅 구성입니다. 자세한 내용은 Kestrel을 역방향 프록시와 함께 사용하는 시기를 참조하세요.

프록시 서버 및 부하 분산 장치 시나리오

프록시 서버 및 부하 분산 장치 외에도 호스팅되는 앱에 추가 구성이 필요할 수 있습니다. 추가 구성이 없는 앱에는 체계(HTTP/HTTPS) 및 요청이 시작된 원격 IP 주소에 대한 액세스 권한이 없을 수 있습니다. 자세한 내용은 프록시 서버 및 부하 분산 장치를 사용하도록 ASP.NET Core 구성을 참조하세요.

Visual Studio 및 MSBuild를 사용하여 배포 자동화

일반적으로 배포에는 dotnet publish에서 서버로 출력을 복사하는 것 외에 추가 작업이 필요합니다. 예를 들어 추가 파일이 필요하거나 publish 폴더에서 제외될 수 있습니다. Visual Studio에서는 웹 배포에 MSBuild를 사용하고 MSBuild를 사용자 지정하여 배포 중에 많은 다른 작업을 수행할 수 있습니다. 자세한 내용은 ASP.NET Core 앱 배포용 Visual Studio 게시 프로필(.pubxml)MSBuild 및 Team Foundation Build 사용(도서)을 참조하세요.

웹 게시 기능을 사용하여 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 웹앱 만들기에서 제공됩니다.

Windows에서 MSDeploy를 사용하여 게시

Visual Studio 게시 프로필을 사용하여 앱을 게시하는 방법(예: Windows 명령 프롬프트에서 dotnet msbuild 명령을 사용)에 대한 지침은 ASP.NET Core 앱 배포용 Visual Studio 게시 프로필(.pubxml)을 참조하세요.

IIS(인터넷 정보 서비스)

web.config 파일에서 제공하는 구성을 사용하여 IIS(인터넷 정보 서비스)에 배포하는 경우 IIS가 있는 Windows에서 ASP.NET Core 호스트의 문서를 참조하세요.

웹 팜에서 호스트

웹 팜 환경에서 ASP.NET Core 앱을 호스트하는 구성에 대한 자세한 내용(예: 확장성을 위해 앱의 여러 인스턴스 배포)은 웹 팜에서 ASP.NET Core 호스트을 참조하세요.

Docker에서 호스트

자세한 내용은 Docker 컨테이너에서 ASP.NET Core 호스트을 참조하세요.

상태 검사 수행

상태 검사 미들웨어를 사용하여 앱 및 그 종속성에 대해 상태 검사를 수행합니다. 자세한 내용은 ASP.NET Core의 상태 검사을 참조하세요.

추가 리소스

일반적으로 ASP.NET Core 앱을 호스팅 환경에 배포하기 위해서는 다음을 수행합니다.

  • 게시한 앱을 호스팅 서버의 폴더에 배포합니다.
  • 요청이 도착할 때 앱을 시작하고 작동이 중단되거나 서버가 다시 부팅된 후 앱을 다시 시작하는 프로세스 관리자를 설정합니다.
  • 역항뱡 프록시 구성이 필요한 경우, 요청을 앱으로 전달하는 역방향 프록시를 설정합니다.

폴더에 게시

dotnet publish 명령은 앱 코드를 컴파일하고 앱을 실행하는 데 필요한 파일을 publish 폴더로 복사합니다. Visual Studio에서 배포하는 경우에는 파일이 배포 대상으로 복사되기 전에 dotnet publish 단계가 자동으로 수행됩니다.

폴더 콘텐츠

publish 폴더에는 하나 이상의 앱 어셈블리 파일, 종속성, 그리고 선택적으로 .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 서버를 사용하는 경우 Nginx, Apache, 또는 IIS를 역방향 프록시 서버로 사용할 수 있습니다. 역방향 프록시 서버는 인터넷에서 HTTP 요청을 받아 Kestrel에 전달합니다.

역방향 프록시 서버가 있는 구성과 없는 구성 모두 지원되는 호스팅 구성입니다. 자세한 내용은 Kestrel을 역방향 프록시와 함께 사용하는 시기를 참조하세요.

프록시 서버 및 부하 분산 장치 시나리오

프록시 서버 및 부하 분산 장치 외에도 호스팅되는 앱에 추가 구성이 필요할 수 있습니다. 추가 구성이 없는 앱에는 체계(HTTP/HTTPS) 및 요청이 시작된 원격 IP 주소에 대한 액세스 권한이 없을 수 있습니다. 자세한 내용은 프록시 서버 및 부하 분산 장치를 사용하도록 ASP.NET Core 구성을 참조하세요.

Visual Studio 및 MSBuild를 사용하여 배포 자동화

일반적으로 배포에는 dotnet publish에서 서버로 출력을 복사하는 것 외에 추가 작업이 필요합니다. 예를 들어 추가 파일이 필요하거나 publish 폴더에서 제외될 수 있습니다. Visual Studio에서는 웹 배포에 MSBuild를 사용하고 MSBuild를 사용자 지정하여 배포 중에 많은 다른 작업을 수행할 수 있습니다. 자세한 내용은 ASP.NET Core 앱 배포용 Visual Studio 게시 프로필(.pubxml)MSBuild 및 Team Foundation Build 사용(도서)을 참조하세요.

웹 게시 기능을 사용하여 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 웹앱 만들기에서 제공됩니다.

Windows에서 MSDeploy를 사용하여 게시

Visual Studio 게시 프로필을 사용하여 앱을 게시하는 방법(예: Windows 명령 프롬프트에서 dotnet msbuild 명령을 사용)에 대한 지침은 ASP.NET Core 앱 배포용 Visual Studio 게시 프로필(.pubxml)을 참조하세요.

IIS(인터넷 정보 서비스)

web.config 파일에서 제공하는 구성을 사용하여 IIS(인터넷 정보 서비스)에 배포하는 경우 IIS가 있는 Windows에서 ASP.NET Core 호스트의 문서를 참조하세요.

웹 팜에서 호스트

웹 팜 환경에서 ASP.NET Core 앱을 호스트하는 구성에 대한 자세한 내용(예: 확장성을 위해 앱의 여러 인스턴스 배포)은 웹 팜에서 ASP.NET Core 호스트을 참조하세요.

Docker에서 호스트

자세한 내용은 Docker 컨테이너에서 ASP.NET Core 호스트을 참조하세요.

추가 리소스