여러 응용 프로그램 실행 및 ASP NET배포 매니페스트가 있는 핵심 애플리케이션 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

여러 응용 프로그램 실행 및 ASP NET배포 매니페스트가 있는 핵심 애플리케이션

배포 매니페스트를 사용하여 Elastic Beanstalk에 애플리케이션을 배포하는 방법을 알릴 수 있습니다. 이 방법을 사용하면 단일 버전용 소스 번들을 생성하는 MSDeploy 데 사용할 필요가 없습니다ASP. NET웹 사이트의 루트 경로에서 실행되는 애플리케이션. 대신 매니페스트 파일을 사용하여 서로 다른 경로에서 여러 애플리케이션을 실행할 수 있습니다. 또는 Elastic Beanstalk에 앱을 배포하고 실행하도록 지시할 수도 있습니다. ASP NET코어. 또한 배포 매니페스트를 사용하여 애플리케이션을 실행할 애플리케이션 풀을 구성할 수도 있습니다.

배포 매니페스트는 에 대한 지원을 추가합니다. NETElastic Beanstalk의 핵심 애플리케이션 를 배포할 수 있습니다. NET배포 매니페스트가 없는 프레임워크 애플리케이션 하지만. NET핵심 애플리케이션을 Elastic Beanstalk에서 실행하려면 배포 매니페스트가 필요합니다. 배포 매니페스트를 사용할 때는 각 애플리케이션에 대한 사이트 아카이브를 만든 다음 배포 매니페스트가 포함된 두 번째 ZIP 아카이브로 사이트 아카이브를 번들로 묶습니다.

배포 매니페스트는 여러 경로에서 여러 애플리케이션을 실행하는 기능도 추가합니다. 배포 매니페스트는 각각 사이트 아카이브와 이를 IIS 실행해야 하는 경로를 포함하는 배포 대상의 배열을 정의합니다. 예를 들어 비동기 요청을 처리하는 API /api 경로에서 웹을 실행하고 를 사용하는 루트 경로에서 웹 앱을 실행할 수 있습니다. API

배포 매니페스트를 사용하여 또는 Kestrel의 애플리케이션 풀을 사용하여 여러 애플리케이션을 실행할 수도 있습니다. IIS 애플리케이션을 주기적으로 다시 시작하거나, 32비트 애플리케이션을 실행하거나, 특정 버전의 애플리케이션을 사용하도록 애플리케이션 풀을 구성할 수 있습니다. NET프레임워크 런타임.

완전한 사용자 지정을 위해 Windows에서 자체 배포 스크립트를 작성하고 애플리케이션을 설치, 제거 PowerShell 및 재시작하기 위해 어떤 스크립트를 실행할지 Elastic Beanstalk에 알릴 수 있습니다.

배포 매니페스트와 관련 기능에는 Windows Server 플랫폼 버전 1.2.0 이상이 필요합니다.

. NET코어 앱

배포 매니페스트를 사용하여 실행할 수 있습니다. NETElastic Beanstalk의 핵심 애플리케이션 . NETCore는 의 크로스 플랫폼 버전입니다. NET명령줄 도구 (dotnet) 와 함께 제공됩니다. 이 도구를 사용하여 애플리케이션을 생성하고 로컬로 실행하고 게시하도록 준비할 수 있습니다.

a를 실행하려면 NETElastic Beanstalk의 핵심 애플리케이션인 경우, 포함된 디렉토리를 제외한 ZIP 아카이브에서 출력을 실행하고 dotnet publish 패키징할 수 있습니다. 배포 대상 유형이 aspNetCoreWeb인 배포 매니페스트를 사용하여 사이트 아카이브를 소스 번들에 배치합니다.

다음 배포 매니페스트는 a를 실행합니다. NET루트 dotnet-core-app.zip 경로에 이름이 지정된 사이트 아카이브의 핵심 애플리케이션

예 aws-windows-deployment-manifest.json -. NET코어
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "my-dotnet-core-app", "parameters": { "archive": "dotnet-core-app.zip", "iisPath": "/" } } ] } }

매니페스트와 사이트 아카이브를 아카이브로 번들로 묶어 소스 번들을 생성합니다. ZIP

예 dotnet-core-bundle.zip
. |-- aws-windows-deployment-manifest.json `-- dotnet-core-app.zip

사이트 아카이브에는 컴파일된 애플리케이션 코드, 종속 항목, web.config 파일이 들어 있습니다.

예 dotnet-core-app.zip
. |-- Microsoft.AspNetCore.Hosting.Abstractions.dll |-- Microsoft.AspNetCore.Hosting.Server.Abstractions.dll |-- Microsoft.AspNetCore.Hosting.dll |-- Microsoft.AspNetCore.Http.Abstractions.dll |-- Microsoft.AspNetCore.Http.Extensions.dll |-- Microsoft.AspNetCore.Http.Features.dll |-- Microsoft.AspNetCore.Http.dll |-- Microsoft.AspNetCore.HttpOverrides.dll |-- Microsoft.AspNetCore.Server.IISIntegration.dll |-- Microsoft.AspNetCore.Server.Kestrel.dll |-- Microsoft.AspNetCore.WebUtilities.dll |-- Microsoft.Extensions.Configuration.Abstractions.dll |-- Microsoft.Extensions.Configuration.EnvironmentVariables.dll |-- Microsoft.Extensions.Configuration.dll |-- Microsoft.Extensions.DependencyInjection.Abstractions.dll |-- Microsoft.Extensions.DependencyInjection.dll |-- Microsoft.Extensions.FileProviders.Abstractions.dll |-- Microsoft.Extensions.FileProviders.Physical.dll |-- Microsoft.Extensions.FileSystemGlobbing.dll |-- Microsoft.Extensions.Logging.Abstractions.dll |-- Microsoft.Extensions.Logging.dll |-- Microsoft.Extensions.ObjectPool.dll |-- Microsoft.Extensions.Options.dll |-- Microsoft.Extensions.PlatformAbstractions.dll |-- Microsoft.Extensions.Primitives.dll |-- Microsoft.Net.Http.Headers.dll |-- System.Diagnostics.Contracts.dll |-- System.Net.WebSockets.dll |-- System.Text.Encodings.Web.dll |-- dotnet-core-app.deps.json |-- dotnet-core-app.dll |-- dotnet-core-app.pdb |-- dotnet-core-app.runtimeconfig.json `-- web.config

여러 애플리케이션 실행

여러 배포 대상을 정의하여 배포 매니페스트로 여러 애플리케이션을 실행할 수 있습니다.

다음 배포 매니페스트는 두 개를 구성합니다. NET핵심 애플리케이션. 이 WebApiSampleApp 애플리케이션은 단순한 웹을 API 구현하고 경로에서 비동기 요청을 처리합니다. /api DotNetSampleApp 애플리케이션은 루트 경로에서 요청을 수행하는 웹 애플리케이션입니다.

예 aws-windows-deployment-manifest.json - 여러 앱
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "WebAPISample", "parameters": { "appBundle": "WebApiSampleApp.zip", "iisPath": "/api" } }, { "name": "DotNetSample", "parameters": { "appBundle": "DotNetSampleApp.zip", "iisPath": "/" } } ] } }

다음을 통해 여러 애플리케이션으로 구성된 샘플 애플리케이션을 사용할 수 있습니다.

애플리케이션 풀 구성

Windows 환경에서 여러 애플리케이션을 지원할 수 있습니다. 다음 두 가지 방법을 사용할 수 있습니다.

  • Kestrel 웹 서버와 함께 out-of-process 호스팅 모델을 사용할 수 있습니다. 이 모델을 사용하기 위해 여러 애플리케이션이 하나의 애플리케이션 풀에서 실행되도록 구성할 수 있습니다.

  • 프로세스 내 호스팅 모델을 사용할 수 있습니다. 이 모델에서는 여러 애플리케이션 풀을 사용하여 각 풀마다 하나씩 여러 애플리케이션을 실행할 수 있습니다. IIS서버를 사용하고 여러 애플리케이션을 실행해야 하는 경우 이 방법을 사용해야 합니다.

하나의 애플리케이션 풀에서 여러 애플리케이션을 실행하도록 Kestrel을 구성하려면 hostingModel="OutofProcess" 파일에 web.config를 추가합니다. 다음 예제를 살펴보세요.

예 web.config - Kestrel 호스팅 모델용 out-of-process
<configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\CoreWebApp-5-0.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutofProcess" /> </system.webServer> </location> </configuration>
예 aws-windows-deployment-manifest.json - 여러 애플리케이션
{ "manifestVersion": 1, "deployments": {"msDeploy": [ {"name": "Web-app1", "parameters": {"archive": "site1.zip", "iisPath": "/" } }, {"name": "Web-app2", "parameters": {"archive": "site2.zip", "iisPath": "/app2" } } ] } }

IIS인프로세스 호스팅 모델을 사용하기 때문에 하나의 애플리케이션 풀에서 여러 애플리케이션을 지원하지 않습니다. 따라서 각 애플리케이션을 하나의 애플리케이션 풀에 할당하여 여러 애플리케이션을 구성해야 합니다. 즉, 하나의 애플리케이션 풀에 하나의 애플리케이션만 할당합니다.

aws-windows-deployment-manifest.json파일에서 다른 응용 프로그램 풀을 IIS 사용하도록 구성할 수 있습니다. 다음 예제 파일을 참조하여 다음과 같이 업데이트합니다.

  • iisConfig라는 하위 섹션이 포함된 appPools 섹션을 추가합니다.

  • appPools 블록에서 애플리케이션 풀을 나열합니다.

  • deployments 섹션에서 각 애플리케이션에 대한 parameters 섹션을 정의합니다.

  • parameters 섹션은 각 애플리케이션에 대해 아카이브, 실행 경로 및 실행할 appPool을 지정합니다.

다음 배포 매니페스트는 10분마다 애플리케이션을 다시 시작하는 2개의 애플리케이션 풀을 구성합니다. 또한 응용 프로그램을 a에 연결합니다. NET지정된 경로에서 실행되는 프레임워크 웹 애플리케이션입니다.

예 aws-windows-deployment-manifest.json - 애플리케이션 풀당 애플리케이션 1개
{ "manifestVersion": 1, "iisConfig": {"appPools": [ {"name": "MyFirstPool", "recycling": {"regularTimeInterval": 10} }, {"name": "MySecondPool", "recycling": {"regularTimeInterval": 10} } ] }, "deployments": {"msDeploy": [ {"name": "Web-app1", "parameters": { "archive": "site1.zip", "iisPath": "/", "appPool": "MyFirstPool" } }, {"name": "Web-app2", "parameters": { "archive": "site2.zip", "iisPath": "/app2", "appPool": "MySecondPool" } } ] } }

사용자 지정 배포 정의

더욱 세부적인 제어를 위해 사용자 지정 배포를 정의하여 애플리케이션 배포를 완전히 사용자 지정할 수 있습니다.

다음 배포 매니페스트는 install이라는 siteInstall.ps1 스크립트를 실행하도록 Elastic Beanstalk에 지시합니다. 이 스크립트는 인스턴스 시작 및 배포 중에 웹 사이트를 설치합니다. 이 외에도 배포 매니페스트는 배포 중에 새 버전을 설치하기 전에 스크립트를 uninstall 실행하도록 Elastic Beanstalk에 restart 지시하고, 관리 콘솔에서 Restart App Server를 선택하면 애플리케이션을 다시 시작하는 스크립트를 실행하도록 Elastic Beanstalk에 지시합니다. AWS

예 aws-windows-deployment-manifest.json - 사용자 지정 배포
{ "manifestVersion": 1, "deployments": { "custom": [ { "name": "Custom site", "scripts": { "install": { "file": "siteInstall.ps1" }, "restart": { "file": "siteRestart.ps1" }, "uninstall": { "file": "siteUninstall.ps1" } } } ] } }

매니페스트와 스크립트를 사용하여 소스 번들에 애플리케이션을 실행하는 데 필요한 모든 결과물을 포함시킵니다.

예 C .zip ustom-site-bundle
. |-- aws-windows-deployment-manifest.json |-- siteInstall.ps1 |-- siteRestart.ps1 |-- siteUninstall.ps1 `-- site-contents.zip