Ausführen mehrerer Anwendungen undASP. NETKernanwendungen mit einem Bereitstellungsmanifest - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ausführen mehrerer Anwendungen undASP. NETKernanwendungen mit einem Bereitstellungsmanifest

Sie können mit einem Bereitstellungsmanifest Elastic Beanstalk anweisen, wie Ihre Anwendung bereitgestellt werden soll. Wenn Sie diese Methode verwendenMSDeploy, müssen Sie kein Quellpaket für ein einzelnes Paket generierenASP. NETAnwendung, die im Stammpfad Ihrer Website ausgeführt wird. Stattdessen können Sie eine Manifestdatei verwenden, um mehrere Anwendungen auf verschiedenen Pfaden auszuführen. Alternativ können Sie Elastic Beanstalk anweisen, die App mit bereitzustellen und auszuführen. ASP NETKern. Sie können ein Bereitstellungsmanifest auch zum Konfigurieren eines Anwendungspools verwenden, in dem Sie Ihre Anwendungen ausführen.

Bereitstellungsmanifeste bieten Unterstützung für. NETKernanwendungen für Elastic Beanstalk. Sie können eine bereitstellen. NETFramework-Anwendung ohne Bereitstellungsmanifest. Jedoch. NETKernanwendungen benötigen ein Deployment-Manifest, um auf Elastic Beanstalk ausgeführt zu werden. Wenn Sie ein Deployment-Manifest verwenden, erstellen Sie für jede Anwendung ein Site-Archiv und bündeln die Site-Archive dann in einem zweiten ZIP Archiv, das das Deployment-Manifest enthält.

Bereitstellungsmanifeste bieten auch die Möglichkeit, mehrere Anwendungen auf verschiedenen Pfaden auszuführen. Ein Bereitstellungsmanifest definiert eine Reihe von Bereitstellungszielen mit jeweils einem Site-Archiv und einem Pfad, unter dem es ausgeführt IIS werden soll. Sie könnten beispielsweise ein Web API unter dem /api Pfad ausführen, um asynchrone Anfragen zu bearbeiten, und eine Web-App im Stammpfad ausführen, die den verarbeitet. API

Sie können auch ein Bereitstellungsmanifest verwenden, um mehrere Anwendungen mithilfe von Anwendungspools in IIS oder Kestrel auszuführen. Sie können einen Anwendungspool so konfigurieren, dass er Ihre Anwendungen regelmäßig neu startet, 32-Bit-Anwendungen ausführt oder eine bestimmte Version von verwendet. NETFramework-Laufzeit.

Für eine vollständige Anpassung können Sie Ihre eigenen Deployment-Skripts in Windows schreiben PowerShell und Elastic Beanstalk mitteilen, welche Skripts ausgeführt werden müssen, um Ihre Anwendung zu installieren, zu deinstallieren und neu zu starten.

Bereitstellungsmanifeste und verwandte Funktionen erfordern als Windows Server-Plattformkonfiguration Version 1.2.0 oder höher.

. NETKern-Apps

Zum Ausführen können Sie ein Bereitstellungsmanifest verwenden. NETKernanwendungen auf Elastic Beanstalk. . NETCore ist eine plattformübergreifende Version von. NETdas mit einem Befehlszeilentool (dotnet) geliefert wird. Sie können damit eine Anwendung generieren, lokal ausführen und für die Veröffentlichung vorbereiten.

Um einen auszuführen. NETIn der Kernanwendung auf Elastic Beanstalk können Sie die Ausgabe ausführen dotnet publish und in einem ZIP Archiv verpacken, das keine Verzeichnisse enthält. Platzieren Sie das Website-Archiv in einem Quell-Bundle mit einem Bereitstellungsmanifest mit einem Bereitstellungsziel des Typs aspNetCoreWeb.

Das folgende Deployment-Manifest führt a aus. NETKernanwendung aus einem Site-Archiv, das dotnet-core-app.zip im Stammpfad benannt ist.

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

Bündeln Sie das Manifest und das Site-Archiv in einem ZIP Archiv, um ein Quellpaket zu erstellen.

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

Die Website-Archiv enthält den kompilierten Anwendungscode, Abhängigkeiten und web.config-Dateien.

Beispiel 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

Ausführen mehrerer Anwendungen

Sie können mehrere Anwendungen mit einem Bereitstellungsmanifest ausführen, indem Sie mehrere Bereitstellungsziele definieren.

Das folgende Bereitstellungsmanifest konfiguriert zwei. NETKernanwendungen. Die WebApiSampleApp Anwendung implementiert ein einfaches Web API und bedient asynchrone Anfragen im /api Pfad. Die DotNetSampleApp-Anwendung ist eine Webanwendung, die Anfragen im Root-Pfad bedient.

Beispiel aws-windows-deployment-manifest.json — mehrere Apps
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "WebAPISample", "parameters": { "appBundle": "WebApiSampleApp.zip", "iisPath": "/api" } }, { "name": "DotNetSample", "parameters": { "appBundle": "DotNetSampleApp.zip", "iisPath": "/" } } ] } }

Eine Beispielanwendung mit mehreren Anwendungen finden Sie hier:

Konfigurieren der Anwendungspools

Sie können mehrere Anwendungen in Ihrer Windows-Umgebung unterstützen. Es stehen zwei Ansätze zur Verfügung:

  • Sie können das out-of-process Hosting-Modell mit dem Kestrel-Webserver verwenden. Bei diesem Modell konfigurieren Sie mehrere Anwendungen für die Ausführung in einem Anwendungspool.

  • Sie können das In-Process-Hosting-Modell verwenden. Bei diesem Modell verwenden Sie mehrere Anwendungspools, um mehrere Anwendungen mit nur einer Anwendung in jedem Pool auszuführen. Wenn Sie einen IIS Server verwenden und mehrere Anwendungen ausführen müssen, müssen Sie diesen Ansatz verwenden.

Um Kestrel für die Ausführung mehrerer Anwendungen in einem Anwendungspool zu konfigurieren, fügen Sie hostingModel="OutofProcess" zur Datei web.config hinzu. Betrachten Sie die folgenden Beispiele:

Beispiel web.config — für das out-of-process Kestrel-Hosting-Modell
<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>
Beispiel aws-windows-deployment-manifest.json — mehrere Anwendungen
{ "manifestVersion": 1, "deployments": {"msDeploy": [ {"name": "Web-app1", "parameters": {"archive": "site1.zip", "iisPath": "/" } }, {"name": "Web-app2", "parameters": {"archive": "site2.zip", "iisPath": "/app2" } } ] } }

IISunterstützt nicht mehrere Anwendungen in einem Anwendungspool, da das In-Process-Hosting-Modell verwendet wird. Daher müssen Sie mehrere Anwendungen konfigurieren, indem Sie jede Anwendung einem Anwendungspool zuweisen. Mit anderen Worten: Weisen Sie einem Anwendungspool nur eine Anwendung zu.

Sie können so konfigurierenIIS, dass verschiedene Anwendungspools in der aws-windows-deployment-manifest.json Datei verwendet werden. Nehmen Sie die folgenden Aktualisierungen vor, wenn Sie auf die nächste Beispieldatei verweisen:

  • Fügen Sie einen Abschnitt iisConfig hinzu, der einen Unterabschnitt mit dem Namen appPools enthält.

  • Listen Sie im Block appPools die Anwendungspools auf.

  • Definieren Sie im Abschnitt deployments einen Abschnitt parameters für jede Anwendung.

  • Für jede Anwendung gibt der Abschnitt parameters ein Archiv, einen Pfad zum Ausführen und einen appPool an, in dem die Ausführung erfolgt.

Das folgende Bereitstellungsmanifest konfiguriert zwei Anwendungspools, die ihre Anwendung alle 10 Minuten neu starten. Sie hängen ihre Anwendungen auch an a an. NETFramework-Webanwendung, die unter dem angegebenen Pfad ausgeführt wird.

Beispiel aws-windows-deployment-manifest.json — eine Anwendung pro Anwendungspool
{ "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" } } ] } }

Definieren von benutzerdefinierten Bereitstellungen

Für noch mehr Kontrolle können Sie eine Anwendungsbereitstellung komplett anpassen, indem Sie eine benutzerdefinierte Bereitstellung definieren.

Das folgende Bereitstellungsmanifest weist Elastic Beanstalk an, ein install-Skript mit dem Namen siteInstall.ps1 auszuführen. Dieses Skript installiert die Website während des Starts der Instance und bei der Bereitstellung. Darüber hinaus weist das Deployment-Manifest Elastic Beanstalk an, ein uninstall Skript auszuführen, bevor eine neue Version während einer Bereitstellung installiert wird, und ein restart Skript, um die Anwendung neu zu starten, wenn Sie App Server neu starten in der AWS Management Console wählen.

Beispiel aws-windows-deployment-manifest.json — benutzerdefinierte Bereitstellung
{ "manifestVersion": 1, "deployments": { "custom": [ { "name": "Custom site", "scripts": { "install": { "file": "siteInstall.ps1" }, "restart": { "file": "siteRestart.ps1" }, "uninstall": { "file": "siteUninstall.ps1" } } } ] } }

Fügen Sie alle Artefakte hinzu, die erforderlich sind, um die Anwendung in Ihrem Quell-Bundle mit dem Manifest und Skripts auszuführen.

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