Tutorial: Bereitstellen einer ASP.NET Core-Anwendung mit Elastic Beanstalk unter Linux
In diesem Tutorial werden die Schritte zum Erstellen einer neuen ASP.NET-Core-Anwendung und deren Bereitstellung in einer Amazon-Linux-2-Umgebung mit Elastic Beanstalk beschrieben.
In diesem Tutorial verwenden Sie zunächst das dotnet
-Befehlszeilen-Tool des .NET Core SDK, um Folgendes zu tun:
-
Generieren Sie eine Anwendung, die HTTP-Anforderungen mit ASP.NET bedient.
-
Installieren Sie Laufzeitabhängigkeiten.
-
Kompilieren und führen Sie Ihre Webanwendung lokal aus.
-
Veröffentlichen Sie Ihre Anwendungsartefakte in einem Ausgabeverzeichnis. Die Artefakte umfassen den kompilierten Quellcode, Laufzeitabhängigkeiten und Konfigurationsdateien.
Als Nächstes führen Sie die folgenden Schritte mit Ihrer neu erstellten Anwendung aus:
-
Erstellen Sie das Quell-Bundle Ihrer Anwendung, das Ihre veröffentlichten Artefakte enthält.
-
Erstellen Sie eine Amazon Linux 2-Umgebung und stellen Sie Ihre Anwendung mit Elastic Beanstalk darin bereit.
-
Öffnen Sie die Website-URL, die von Elastic Beanstalk erstellt wurde, um Ihre Anwendung auszuführen.
Der Quellcode der Anwendung ist hier verfügbar: dotnet-core-linux-tutorial-source.zip.
Das bereitstellbare Quell-Bundle finden Sie hier: dotnet-core-linux-tutorial-bundle.
Abschnitte
Voraussetzungen
In diesem Tutorial wird das .NET Core SDK verwendet, um eine einfache .NET Core-Webanwendung zu generieren, lokal auszuführen und ein Bereitstellungspaket zu erstellen.
Voraussetzungen
-
.NET-Core 3.1. oder höher
So installieren Sie das .NET Core SDK
-
Laden Sie das Installationsprogramm unter microsoft.com/net/core
herunter. Wählen Sie Ihre Entwicklungsplattform. Wählen Sie Download .NET Core SDK (.NET Core SDK herunterladen) aus. -
Führen Sie das Installationsprogramm aus und folgen Sie den Anweisungen.
Anmerkung
Obwohl die Beispiele in diesem Tutorial Auflistungen aus der Windows-Befehlszeile sind, unterstützt das .NET Core SDK Entwicklungsplattformen auf mehreren Betriebssystemen. Die in diesem Tutorial gezeigten dotnet
-Befehle sind über verschiedene Entwicklungsplattformen hinweg konsistent.
In diesem Tutorial wird ein ZIP-Befehlszeilenprogramm zum Erstellen eines Quell-Bundles verwendet, das Sie in Elastic Beanstalk bereitstellen können. Um den Befehl zip
in Windows zu verwenden, können Sie UnxUtils
installieren. (UnxUtils ist eine leichte Sammlung nützlicher Befehlszeilen-Dienstprogramme wie zip
und ls
.) Alternativ können Sie den Windows-Explorer oder ein beliebiges anderes ZIP-Programm für die Erstellung von Quell-Bundle-Archiven nutzen.
So installieren Sie UnxUtils
-
Laden Sie
UnxUtils
herunter. -
Extrahieren Sie das Archiv in ein lokales Verzeichnis. Zum Beispiel
C:\Program Files (x86)
. -
Fügen Sie den Pfad zu den binären Dateien zu Ihrer Windows PATH-Benutzervariable hinzu. Zum Beispiel
C:\Program Files (x86)\UnxUtils\usr\local\wbin
.-
Betätigen Sie die Windows-Taste und geben Sie anschließend ei
environment variables
. -
Wählen Sie Edit environment variables for your account (Umgebungsvariablen für Ihr Konto bearbeiten).
-
Wählen Sie PATH (PFAD) und Edit (Bearbeiten) aus.
-
Fügen Sie im Feld Variable value (Variablenwert) Pfade hinzu, getrennt durch Semikola. Beispiel:
C:\item1\path
;
C:\item2\path
-
Klicken Sie zweimal auf OK, um die neuen Einstellungen anzuwenden.
-
Schließen Sie alle laufenden Eingabeaufforderungsfenster und öffnen Sie dann erneut ein Eingabeaufforderungsfenster.
-
-
Öffnen Sie ein neues Eingabeaufforderungsfenster und überprüfen Sie mit dem Befehl
zip
, ob alles funktioniert.>
zip -h
Copyright (C) 1990-1999 Info-ZIP Type 'zip "-L"' for software license. ...
Generieren eines .NET Core-Projekts als Webanwendung
Verwenden Sie das Befehlszeilen-Tool dotnet
, um ein neues C# .NET Core-Webanwendungsprojekt zu erstellen und lokal auszuführen. Die standardmäßige .NET Core-Webanwendung zeigt Hello World!
an.
So erstellen Sie ein neues .NET Core-Projekt
-
Öffnen Sie ein neues Befehlszeilenfenster und navigieren Sie zu Ihrem Benutzerordner.
>
cd %USERPROFILE%
-
Erstellen Sie mit dem Befehl
dotnet new
ein neues .NET Core-Projekt.C:\Users\username>
dotnet new web -o dotnet-core-tutorial
The template "ASP.NET Core Empty" was created successfully. Processing post-creation actions... Running 'dotnet restore' on dotnet-core-tutorial\dotnet-core-tutorial.csproj... Determining projects to restore... Restored C:\Users\username\dotnet-core-tutorial\dotnet-core-tutorial.csproj (in 154 ms). Restore succeeded.
So führen Sie die Website lokal aus
-
Verwenden Sie den Befehl
dotnet restore
zum Installieren von Abhängigkeiten.C:\Users\username>
cd dotnet-core-tutorial
C:\Users\username\dotnet-core-tutorial>dotnet restore
Determining projects to restore... All projects are up-to-date for restore. -
Verwenden Sie den
dotnet run
Befehl, um die Anwendung zu erstellen und lokal zu starten.C:\Users\username\dotnet-core-tutorial>
dotnet run
info: Microsoft.Hosting.Lifetime[0] Now listening on: https://localhost:5001 info: Microsoft.Hosting.Lifetime[0] Now listening on: http://localhost:5000 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: C:\Users\username\dotnet-core-tutorial -
Öffnen Sie localhost:5000
, um die Website in Ihrem Standard-Webbrowser anzuzeigen. Die Anwendung gibt
Hello World!
aus, was in Ihrem Webbrowser angezeigt wird.
Um die Anwendung auf einem Webserver auszuführen, muss der kompilierte Quellcode mit Laufzeitabhängigkeiten in einer web.config
-Konfigurationsdatei gebündelt werden. Das Tool dotnet
bietet einen publish
-Befehl, mit dem diese Dateien basierend auf der Konfiguration in dotnet-core-tutorial.csproj
in einem Verzeichnis gesammelt werden.
So erstellen Sie die Website
-
Mit dem Befehl
dotnet publish
geben Sie kompilierten Code und Abhängigkeiten in einem Ordner mit dem Namensite
aus.C:\users\username\dotnet-core-tutorial>
dotnet publish -o site
Microsoft (R) Build Engine version 16.7.0-preview-20360-03+188921e2f for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\bin\Debug\netcoreapp3.1\dotnet-core-tutorial.dll dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\site\
So erstellen Sie ein Quell-Bundle
-
Verwenden Sie den Befehl
zip
zum Erstellen eines Quell-Bundles mit dem Namendotnet-core-tutorial.zip
.Das Quell-Bundle enthält alle Dateien, die im Website-Ordner veröffentlicht wurden.
Anmerkung
Wenn Sie ein anderes ZIP-Dienstprogramm verwenden, müssen Sie alle Dateien dem Stammordner des resultierenden ZIP-Archivs hinzufügen. Dies ist für eine erfolgreiche Bereitstellung der Anwendung in Ihrer Elastic Beanstalk-Umgebung erforderlich.
C:\users\username\dotnet-core-tutorial>
cd site
C:\users\username\dotnet-core-tutorial\site>zip -r ../dotnet-core-tutorial.zip .
adding: appsettings.Development.json (164 bytes security) (deflated 38%) adding: appsettings.json (164 bytes security) (deflated 39%) adding: dotnet-core-tutorial.deps.json (164 bytes security) (deflated 93%) adding: dotnet-core-tutorial.dll (164 bytes security) (deflated 58%) adding: dotnet-core-tutorial.exe (164 bytes security) (deflated 57%) adding: dotnet-core-tutorial.pdb (164 bytes security) (deflated 48%) adding: dotnet-core-tutorial.runtimeconfig.json (164 bytes security) (deflated 33%) adding: web.config (164 bytes security) (deflated 41%)Anmerkung
In diesem Tutorial führen Sie nur eine Anwendung auf dem Webserver aus, daher ist in Ihrem Quell-Bundle keine Procfile erforderlich. Um jedoch mehrere Anwendungen auf demselben Webserver bereitstellen zu können, müssen Sie eine Procfile einschließen. Weitere Informationen finden Sie unter Verwendung einer Procfile-Datei für die Konfiguration Ihrer .NET Core unter Linux-Umgebung.
Starten einer Elastic Beanstalk-Umgebung und Bereitstellen der Anwendung
Sie verwenden die Elastic Beanstalk-Konsole, um eine Elastic Beanstalk-Umgebung zu starten und das Quell-Bundle bereitzustellen.
Sie können das Quell-Paket hier herunterladen: dotnet-core-linux-tutorial-bundle.
So starten Sie eine Umgebung und stellen Ihren Code bereit (Konsole)
-
Öffnen Sie die Elastic Beanstalk-Konsole mit diesem vorkonfigurierten Link: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced
-
Wählen Sie für Platform (Plattform) die Option .NET Core on Linux (.NET Core unter Linux) aus.
-
Wählen Sie Local file (Lokale Datei), wählen Sie Choose file (Datei wählen) und öffnen Sie das Quell-Bundle.
-
Klicken Sie auf Review and launch (Überprüfen und starten).
-
Prüfen Sie die verfügbaren Einstellungen und wählen Sie Create app (Anwendung erstellen) aus. Die Anwendung schreibt
Hello World!
als Antwort und gibt diese zurück.
Es dauert etwa zehn Minuten, die Umgebung zu erstellen und Ihren Code bereitzustellen.
Beim Starten einer Umgebung werden die folgenden Ressourcen erstellt:
-
EC2 instance (EC2-Instance) – Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die so konfiguriert ist, dass Web-Apps auf der von Ihnen ausgewählten Plattform ausgeführt werden.
Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverse-Proxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.
-
Instance security group (Instance-Sicherheitsgruppe): Eine Amazon EC2-Sicherheitsgruppe, die so konfiguriert ist, dass eingehender Datenverkehr auf Port 80 erlaubt ist. Mit dieser Ressource kann HTTP-Datenverkehr vom Load Balancer die EC2-Instance mit Ihrer Web-App erreichen. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
-
Load balancer (Load Balancer)– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.
-
Load balancer security group (Load Balancer-Sicherheitsgruppe): Eine Amazon EC2-Sicherheitsgruppe, die so konfiguriert ist, dass eingehender Datenverkehr auf Port 80 erlaubt ist. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
-
Auto Scaling group (Auto Scaling-Gruppe) – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.
-
Amazon S3-Bucket – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.
-
Amazon CloudWatch alarms (Amazon CloudWatch-Alarme) – CloudWatch-Alarme, die die Verarbeitungslast auf den Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.
-
AWS CloudFormation-Stack – Elastic Beanstalk verwendet AWS CloudFormation, um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu verbreiten. Die Ressourcen werden in einer Vorlage definiert, die Sie in der AWS CloudFormation-Konsole
anzeigen können. -
Domain name (Domänenname) – ein Domänenname, der zu Ihrer Web-App in der Form
subdomain
.region
.elasticbeanstalk.com weiterleitet.
Elastic Beanstalk verwaltet all diese Ressourcen. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet.
Anmerkung
Der von Elastic Beanstalk erstellte Amazon-S3-Bucket wird zwischen den Umgebungen geteilt und nicht gelöscht, wenn Sie die Umgebung beenden. Weitere Informationen finden Sie unter Verwenden von Elastic Beanstalk mit Amazon S3.
Bereinigen
Wenn Sie nicht mehr mit Elastic Beanstalk arbeiten, können Sie Ihre Umgebung beenden. Elastic Beanstalk beendet alle AWS-Ressourcen der Umgebung, z. B. Amazon-EC2-Instances, Datenbank-Instances, Lastenverteilung, Sicherheitsgruppen und Alarme.
So beenden Sie die Elastic Beanstalk-Umgebung
Öffnen Sie die Elastic-Beanstalk-Konsole
und wählen Sie in der Liste Regions (Regionen) Ihre AWS-Region aus. -
Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.
Anmerkung
Wenn Sie viele Umgebungen haben, filtern Sie Umgebungsliste mit der Suchleiste.
-
Klicken Sie auf Actions (Aktionen) und dann auf Terminate Environment (Umgebung beenden).
-
Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.
Mit Elastic Beanstalk können Sie ganz einfach und jederzeit eine neue Umgebung für Ihre Anwendung erstellen.
Nächste Schritte
Im weiteren Verlauf der Anwendungsentwicklung möchten Sie vielleicht Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic-Beanstalk-Konsole hochzuladen. Die Elastic Beanstalk Command Line Interface (EB CLI) stellt benutzerfreundliche Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk-Umgebungen über die Befehlszeilenschnittstelle bereit.
Wenn Sie Visual Studio verwenden, um Ihre Anwendung zu entwickeln, können Sie auch das AWS Toolkit for Visual Studio verwenden, um Änderungen in Ihrem Code bereitzustellen oder Ihre Elastic Beanstalk-Umgebungen und andere AWS-Ressourcen zu verwalten. Weitere Informationen finden Sie unter Der AWS Toolkit for Visual Studio.
Zu Entwicklungs- und Testzwecken können Sie die Bereitstellungsfunktionalität von Elastic Beanstalk verwenden, um eine verwaltete DB-Instance direkt zu Ihrer Umgebung hinzuzufügen. Informationen zur Einrichtung einer Datenbank in der Umgebung finden Sie unter Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung.
Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, empfehlen wir, dass Sie einen benutzerdefinierten Domänennamen für die Umgebung konfigurieren und HTTPS aktivieren für sichere Verbindungen.