Esecuzione di più applicazioni eASP. NETapplicazioni principali con un manifesto di distribuzione - AWS Elastic Beanstalk

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esecuzione di più applicazioni eASP. NETapplicazioni principali con un manifesto di distribuzione

È possibile utilizzare un manifest di distribuzione per indicare a Elastic Beanstalk come distribuire l'applicazione. Utilizzando questo metodo, non è necessario MSDeploy generare un pacchetto sorgente per una singola ASP unità. NETapplicazione che viene eseguita nel percorso principale del sito Web. Piuttosto, è possibile utilizzare un file manifest per eseguire più applicazioni in percorsi diversi. Oppure, in alternativa, puoi dire a Elastic Beanstalk di distribuire ed eseguire l'app con. ASP NETNucleo. È inoltre possibile utilizzare un manifest di distribuzione per configurare un pool di applicazioni in cui eseguire le applicazioni.

I manifesti di distribuzione aggiungono supporto per. NETApplicazioni principali di Elastic Beanstalk. Puoi implementare un. NETApplicazione framework senza un manifesto di distribuzione. Tuttavia,. NETLe applicazioni principali richiedono un manifesto di distribuzione per essere eseguite su Elastic Beanstalk. Quando si utilizza un manifesto di distribuzione, si crea un archivio del sito per ogni applicazione e quindi si raggruppano gli archivi del sito in un secondo ZIP archivio che contiene il manifesto di distribuzione.

I manifest di distribuzione aggiungono anche la possibilità di eseguire più applicazioni in diversi percorsi. Un manifesto di distribuzione definisce una serie di obiettivi di distribuzione, ciascuno con un archivio del sito e un percorso in cui IIS eseguirlo. Ad esempio, è possibile eseguire un'app Web API nel /api percorso per soddisfare le richieste asincrone e un'app Web nel percorso principale che utilizza il. API

È inoltre possibile utilizzare un manifesto di distribuzione per eseguire più applicazioni utilizzando pool di applicazioni in o Kestrel. IIS È possibile configurare un pool di applicazioni per riavviare periodicamente le applicazioni, eseguire applicazioni a 32 bit o utilizzare una versione specifica di. NETRuntime del framework.

Per una personalizzazione completa, puoi scrivere i tuoi script di distribuzione in Windows PowerShell e indicare a Elastic Beanstalk quali script eseguire per installare, disinstallare e riavviare l'applicazione.

I manifest di distribuzione e le relative caratteristiche richiedono una piattaforma Windows Server versione 1.2.0 o più recente.

. NETapp principali

È possibile utilizzare un manifesto di distribuzione per l'esecuzione. NETApplicazioni principali su Elastic Beanstalk. . NETCore è una versione multipiattaforma di. NETche viene fornito con uno strumento da riga di comando (dotnet). È possibile utilizzarlo per generare un'applicazione, eseguirla in locale e prepararla per la pubblicazione.

Per eseguire un. NETApplicazione principale su Elastic Beanstalk, dotnet publish puoi eseguire e impacchettare l'output ZIP in un archivio, escluse le directory contenenti. Posiziona l'archivio del sito in un bundle di origine con un manifest di distribuzione con una destinazione di distribuzione di tipo aspNetCoreWeb.

Il seguente manifesto di distribuzione esegue un. NETApplicazione principale proveniente da un archivio del sito denominato dotnet-core-app.zip nel percorso principale.

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

Raggruppa il manifesto e l'archivio del sito in un ZIP archivio per creare un pacchetto sorgente.

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

L'archivio del sito contiene il codice compilato dell'applicazione, le dipendenze e il file web.config.

Esempio 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

Esecuzione di più applicazioni

È possibile eseguire più applicazioni con un manifest di distribuzione definendo più target di distribuzione.

Il seguente manifesto di distribuzione ne configura due. NETApplicazioni principali. L'WebApiSampleAppapplicazione implementa un semplice Web API e fornisce richieste asincrone sul percorso. /api DotNetSampleApp è un'applicazione Web che fornisce richieste al percorso root.

Esempio aws-windows-deployment-manifest.json: più app
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "WebAPISample", "parameters": { "appBundle": "WebApiSampleApp.zip", "iisPath": "/api" } }, { "name": "DotNetSample", "parameters": { "appBundle": "DotNetSampleApp.zip", "iisPath": "/" } } ] } }

Un'applicazione di esempio con più applicazioni è disponibile qui:

Configurazione dei pool delle applicazioni

È possibile supportare più applicazioni nell'ambiente Windows. Sono disponibili due approcci:

  • È possibile utilizzare il modello out-of-process di hosting con il server web Kestrel. Con questo modello, è possibile configurare più applicazioni per l'esecuzione in un unico pool di applicazioni.

  • È possibile utilizzare il modello di hosting in-process. Con questo modello, è possibile utilizzare più pool di applicazioni per eseguire più applicazioni con una sola applicazione in ogni pool. Se utilizzi un IIS server e devi eseguire più applicazioni, devi usare questo approccio.

Per configurare Kestrel ed eseguire più applicazioni in un pool di applicazioni, aggiungi hostingModel="OutofProcess" nel file web.config. Considera i seguenti esempi:

Esempio web.config - per il modello di hosting 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>
Esempio aws-windows-deployment-manifest.json: più applicazioni
{ "manifestVersion": 1, "deployments": {"msDeploy": [ {"name": "Web-app1", "parameters": {"archive": "site1.zip", "iisPath": "/" } }, {"name": "Web-app2", "parameters": {"archive": "site2.zip", "iisPath": "/app2" } } ] } }

IISnon supporta più applicazioni in un pool di applicazioni perché utilizza il modello di hosting in-process. Pertanto, è necessario configurare più applicazioni assegnando ciascuna applicazione a un pool di applicazioni. In altre parole, assegnare una sola applicazione a un pool di applicazioni.

È possibile IIS configurare l'utilizzo di diversi pool di applicazioni nel aws-windows-deployment-manifest.json file. Apporta i seguenti aggiornamenti consultando il file di esempio successivo:

  • Aggiungi una sezione iisConfig che includa una sottosezione denominata appPools.

  • Nel blocco appPools, elenca i pool di applicazioni.

  • Nella sezione deployments, definisci una sezione parameters per ogni applicazione.

  • Per ogni applicazione, la sezione parameters specifica un archivio, un percorso per eseguirla e un appPool in cui eseguirla.

Il seguente manifest di distribuzione consente di configurare due pool di applicazioni che riavviano l'applicazione ogni 10 minuti. Inoltre, allegano le loro applicazioni a un. NETApplicazione Web Framework che viene eseguita nel percorso specificato.

Esempio aws-windows-deployment-manifest.json: un'applicazione per pool di applicazioni
{ "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" } } ] } }

Definizione delle distribuzioni personalizzate

Per un maggiore controllo, è possibile personalizzare completamente la distribuzione di un'applicazione definendo una distribuzione personalizzata.

Il seguente manifest di distribuzione indica a Elastic Beanstalk di eseguire uno script install denominato siteInstall.ps1. Questo script installa il sito Web durante l'avvio e le distribuzioni dell'istanza. Inoltre, il manifesto di distribuzione indica anche a Elastic Beanstalk di uninstall eseguire uno script prima di installare una nuova versione durante una distribuzione restart e uno script di riavviare l'applicazione quando si sceglie Riavvia App Server nella console di gestione. AWS

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

Include eventuali artefatti necessari per eseguire l'applicazione nel bundle di origine con il manifest e gli script.

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