Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: .NET 8 und höher
In diesem Artikel wird erläutert, wie Sie ASP.NET Core-Anwendungen in Linux erstellen und konfigurieren.
Voraussetzungen
Um die Übungen in diesem Teil zu befolgen, müssen Sie ein .NET SDK installiert haben. Informationen zum Installieren des SDK finden Sie bei Bedarf in den Installationsanweisungen in Teil 1.
Ziel dieses Teils
Erfahren Sie, wie Sie eine ASP.NET Core-Webanwendung mithilfe der .NET-Befehlszeilenschnittstelle (CLI) in Linux erstellen und wie Sie die Anwendung im Verzeichnis "/var " veröffentlichen. Während Sie diese Konzepte erlernen, üben Sie einige grundlegende Aufgaben wie das Arbeiten mit Dateien und Ordnern und das Ausführen von Befehlen als privilegierten Benutzer. Außerdem erfahren Sie, wie Sie Dateien mithilfe des Vi-Text-Editors in Linux bearbeiten.
.NET CLI
Gemäß dieser .NET CLI-Dokumentation ist die .NET CLI eine plattformübergreifende Toolkette für die Entwicklung, Erstellung, Ausführung und Veröffentlichung von .NET-Anwendungen. Die .NET CLI wird zusammen mit dem .NET SDK installiert.
Diese Schulungen verwenden häufig den dotnet
Befehl. Dieser Befehl ist leistungsfähig und verfügt über zwei Hauptfunktionen:
- Sie stellt Befehle zum Arbeiten an .NET-Projekten bereit. Beispielsweise erstellt
dotnet build
ein Projekt. Jeder Befehl definiert seine eigenen Optionen und Argumente. Alle Befehle unterstützen die--help
Option zum Drucken kurzer Erläuterungen zur Verwendung des Befehls. - Er führt .NET-Anwendungen aus.
Sie verwenden den dotnet new
Befehl, um Ihr erstes ASP.NET Core-Projekt in Linux zu erstellen. Dieser Befehl ruft den Typ des Projekts als Argument ab. Die Projekttypen werden in diesem Dokument erläutert. Sie können auch eine Liste von Typen anzeigen, indem Sie ohne Parameter ausgeführt dotnet new
werden. Webbezogene Projekttypen sind gelb im folgenden Screenshot hervorgehoben.
Erstellen einer ASP.NET Core-Webanwendung mit SDK
Sie verwenden die .NET CLI, um Ihre erste Webanwendung mithilfe des folgenden Befehls zu erstellen:
dotnet new <template_type> -n <project_name> -o <output_directory>
Diese Regeln gelten, wenn Sie Folgendes verwenden dotnet new
:
- Mit dem Befehl werden die Projektdateien im Ausgabeverzeichnis erstellt. Wenn Sie das
-o <output_directory>
Segment weglassen, wird das Projekt im aktuellen Verzeichnis erstellt. Sie können den-o
Schalter jederzeit verwenden. - Wenn der Ordner nicht vorhanden ist, erstellt der Befehl ihn.
- Wenn Sie das
-n <project_name>
Segment weglassen, entspricht der Projektname dem Verzeichnisnamen.
Sie können kreative Namen für das Verzeichnis und projekt selbst finden. Beachten Sie jedoch, dass Bei Linux die Groß-/Kleinschreibung beachtet wird. Verwenden Sie für diese Übung den konservativeren AspNetCoreDemo
Namen des Projekts, und erstellen Sie sie im firstwebapp
Verzeichnis.
Führen Sie zum Erstellen des Projekts den folgenden Befehl aus:
dotnet new webapp -n AspNetCoreDemo -o firstwebapp
Überprüfen Sie die Ausgabe, um die Verzeichnis- und Projektnamen anzuzeigen. Der folgende Screenshot listet auch den Inhalt des Ausgabeverzeichnisses auf. Sie sollten mit der Verzeichnisstruktur vertraut sein, wenn Sie zuvor eine ASP.NET Core-Webanwendung unter Windows erstellt haben.
Sie haben Ihre erste Anwendung erstellt. Die nächste Aufgabe wird ausgeführt. Ändern Sie das Verzeichnis in den Projektordner, und führen Sie aus dotnet run
.
Notiz
Die folgenden Elemente in diesem Screenshot:
- Ihre Webanwendung überwacht Port 5001 auf HTTPS-Anforderungen und überwacht Port 5000 für HTTP-Anforderungen.
- Der Inhaltsstamm befindet sich unter dem Startverzeichnis.
Es wird empfohlen, dass die Anwendung nicht unter Ihrem Startverzeichnis ausgeführt wird. Sie veröffentlichen es später in einem anderen Verzeichnis, sollten sie jedoch testen, bevor Sie es veröffentlichen. Sie können STRG+C drücken, um die Anwendung zu beenden. Lassen Sie sie jedoch weiterhin ausgeführt, und öffnen Sie eine neue Terminalsitzung, indem Sie Ihre bevorzugte Methode verwenden, um eine Verbindung mit Ihrem virtuellen Linux-Computer herzustellen. In diesem Beispiel verwenden Sie PowerShell erneut.
Testen der Website von einem anderen Terminal
Überprüfen Sie in Ihrer neuen Terminalsitzung, ob Ihre Anwendung die Ports 5000 und 5001 überwacht. Linux verfügt über denselben netstat
Befehl wie Windows. Führen Sie netstat
zusammen mit dem -tlp
Schalter aus. Sie können sich mit den netstat
Schaltern in diesem Artikel vertraut machen, oder Sie können sich die Hilfedatei ansehen, indem Sie ausführen man netstat
oder info netstat
.
Hier sehen Sie die Ausgabe des netstat -tlp
Befehls aus der zweiten Terminalsitzung. Es zeigt, dass der AspNetCoreDemo-Prozess mit PID 781 ausgeführt wird und die Ports 5000 und 5001 für IPv4 und IPv6 überwacht.
Sie können curl und wget verwenden, um Ihre Website zu testen. Beide Befehle führen einen HTTP-Aufruf an die Zielseite durch, verhalten sich jedoch anders:
-
Curl
ist einfach ein Befehlszeilenbrowsertool. Sie sendet eine HTTP-Anforderung an das angegebene Ziel und zeigt nur die einfache Ausgabe der HTTP-Antwort an. Beispielsweise wird das HTML-Quellmarkup für eine Webanwendung angezeigt. -
Wget
ist ein HTTP-Downloader. Sie sendet eine HTTP-Anforderung und lädt die angegebene Ressource herunter. Beispielsweise lädt wgethttp://server/file.zip
file.zip herunterhttp://server
und speichert sie im aktuellen Verzeichnis.
Der wget
Befehl zeigt uns auch einige weitere Details, z. B. Umleitung und alle Fehlermeldungen, die Sie möglicherweise erhalten. Daher können Sie es immer dann als primitive Version eines HTTP-Ablaufverfolgungstools verwenden.
Weitere Informationen zum Unterschied zwischen curl
und wget
, wechseln Sie zur StackExchange-Webseite.
In dieser Schulungsreihe haben wget
Sie zuvor die .deb Paket-Manager-Datei von Microsoft-Servern heruntergeladen, bevor Sie .NET installiert haben.
Wenn Sie ausgeführt werden curl http://localhost
, tritt nichts auf. Dies bedeutet wahrscheinlich, dass keine HTTP-Antwort vorhanden ist. Sie können dann ausführen wget http://localhost
, um zu überprüfen, ob weitere Informationen angezeigt werden, wenn Sie versuchen, auf die Website zuzugreifen.
Dies geschieht jetzt:
- Sie stellen eine HTTP-Anforderung an
http://localhost:5000
und stellen erfolgreich eine Verbindung her. Dies bedeutet, dass die Anwendung die Verbindungen an Port 5000 akzeptiert. - Sie erhalten eine temporäre HTTP 307-Umleitungsantwort von der Anwendung, die auf einen sicheren HTTPS-Speicherort verweist:
https://localhost:5001
. - Wget ist intelligent genug, um dieser Umleitung zu folgen und eine neue Anforderung zu
https://localhost:5001
stellen. - Sie stellen erneut eine Verbindung her.
wget
Vertrauen Sie dem SSL-Zertifikat jedoch nicht. Daher schlägt die Verbindung fehl.
Der wget
Befehl empfiehlt, dieses Problem zu umgehen, indem Sie die --no-check-certificate
Option verwenden, um eine unsichere Verbindung herzustellen. Bei diesem Ansatz handelt es sich jedoch um SSL-Zertifikateinstellungen, die für diese Schulung außerhalb des Umfangs liegen. Stattdessen können Sie Ihre ASP.NET Core-Anwendung so konfigurieren, dass sie die HTTP-Anforderungen nicht an HTTPS umleitet. Wenn Sie mit ASP.NET Core-Anwendungsentwicklung (oder nur konfiguration) vertraut sind, bearbeiten Sie die Startup.cs Datei, um die Umleitungskonfiguration zu entfernen.
Bearbeiten von Dateien mithilfe von vi
Sie können den Vi-Text-Editor für Linux-Distros verwenden, um alle Arten von Nur-Text-Dateien zu bearbeiten. Sie verwenden es in dieser Schulung, um Ihre Anwendung neu zu konfigurieren.
Sie müssen Ihre Anwendung schließen, bevor Sie sie bearbeiten können. Schließen Sie zuerst die geöffnete Terminalsitzung. Drücken Sie dann STRG+C , um die Anwendung herunterzufahren.
Führen Sie den folgenden Befehl aus, um Startup.cs Datei zu bearbeiten:
vi ~/firstwebapp/Startup.cs
Notiz
Dieser Befehl startet den vi-Editor und lädt dann die Datei. Die Verknüpfung ~(Tilde) bezieht sich auf Ihr Startverzeichnis, in dem Sie Ihr Projekt erstellt haben. Das heißt, der Befehl verweist auf /home/<YourName>/firstwebapp/Startup.cs.
Drücken Sie die I-TASTE (Einfügen), um den Bearbeitungsmodus zu aktivieren. Nun sollte am unteren Rand der Befehlszeile "-- INSERT " angezeigt werden. Verwenden Sie die Pfeiltasten, um innerhalb der Datei zu navigieren. Kommentieren Sie sowohl die app.UseHsTs()
Zeilen ; als app.UseHttpsRedirection()
auch die Zeilen, indem //
Sie sie am Anfang hinzufügen, wie im folgenden Screenshot gezeigt.
Drücken Sie ESC , um den Bearbeitungsmodus zu beenden, geben Sie :wq! ein, und drücken Sie dann die EINGABETASTE. Beachten Sie, dass das Doppelpunktzeichen (:
) bedeutet, dass Sie einen Befehl eingeben, schreiben, w
q
beenden und !
das Schreiben erzwingen.
Nachdem Sie die EINGABETASTE gedrückt haben, sollten die Änderungen gespeichert werden. Sie können die Änderungen überprüfen, indem Sie diese ausführen cat ~/firstwebapp/Startup.cs
. Mit diesem Befehl wird der Inhalt der datei Startup.cs angezeigt.
Starten Sie Ihre Anwendung neu. Ändern Sie dazu das aktuelle Verzeichnis in das ~/firstwebapp
Verzeichnis, und führen Sie es erneut aus dotnet run
. Öffnen Sie dann eine weitere Terminalsitzung auf Ihrem Server, und führen Sie den curl http://localhost:5000
Befehl erneut aus. Diesmal sollte der Befehl den HTML-Inhalt der Startseite zurückgeben.
Sie haben jetzt ihre erste ASP.NET Core Web App unter Linux erfolgreich ausgeführt.
Bereitstellen der Anwendung im Verzeichnis "/var"
Das Hauptziel dieser Übung besteht darin, Ihre Webanwendung hinter einem Reverseproxy zu hosten, damit das Verbinden von Clients über einen anderen Computer nur mit dem Hostnamen ohne Portnummer auf die Anwendung zugreifen kann. Dies ist das, was Sie in realen Szenarien erwarten. Sie arbeiten später mit Nginx zusammen, um diese Aufgabe abzuschließen. Bevor Sie dies tun, veröffentlichen Sie Ihre Anwendung jedoch im Verzeichnis "/var" . Dies liegt daran, dass Sie die Anwendung nicht im Startverzeichnis eines Benutzers ausführen.
Denken Sie daran, dass das Verzeichnis "/var " verwendet wird, um Inhalte und Protokolldateien von verschiedenen Anwendungen wie Apache und Nginx zu speichern. Sie folgen dieser Vorgehensweise hier, indem Sie die neu erstellte Webanwendung in /var veröffentlichen.
Wechseln Sie in den Projektordner, und führen Sie den Vorgang dotnet publish
aus, um einen Veröffentlichungsordner zu erstellen. Kopieren Sie diesen Ordner in das Verzeichnis "/var" .
Der Screenshot zeigt, dass der dotnet publish
Befehl Veröffentlichungsdateien im Ordner ~/firstwebapp/bin/Debug/net5.0/publish/ erstellt hat. Anschließend wurde der folgende Befehl verwendet, um alle Dateien in den Ordner "/var/firstwebapp/" zu kopieren:
sudo cp -a ~/firstwebapp/bin/Debug/net5.0/publish/ /var/firstwebapp/
Notiz
Beachten Sie die Verwendung vor sudo
dem Befehl "Kopieren". Sie verwenden dies, da Standardbenutzer keine Schreibberechtigung für das Verzeichnis "/var" besitzen. Daher müssen Sie den Befehl als Superuser ausführen.
Führen Sie den folgenden Befehl aus, um Ihre Anwendung aus einem veröffentlichten Ordner auszuführen:
dotnet /var/firstwebapp/AspNetCoreDemo.dll
Wenn Sie möchten, können Sie diese Tests mit denselben curl
Und wget
Befehlen ausführen. Dies liegt daran, dass die Anwendung weiterhin auf Port 5000 für HTTP-Anforderungen lauscht.
Lebensdauer des Prozesses und nächste Schritte
Wenn für die Anwendung eine konstante Betriebszeit erforderlich ist, ist das Ausführen von .NET-Anwendungen innerhalb einer interaktiven Benutzersitzung aus den folgenden Gründen keine bewährte Methode:
- Wenn Benutzer ihre Sitzungen beenden würden, z. B. durch Schließen von PuTTY oder dem PowerShell SSH-Client oder Beenden der Sitzung, würde die Anwendung heruntergefahren.
- Wenn der Prozess aus irgendeinem Grund beendet wird (z. B. stürzt der Prozess aufgrund einer unbehandelten Ausnahme ab), wird er nicht automatisch gestartet und muss manuell neu gestartet werden.
- Wenn der Server neu gestartet wird, wird die Anwendung nicht automatisch gestartet.
Nächste Schritte
Teil 2.2 – Installieren von Nginx und Konfigurieren als Reverseproxyserver
Stellen Sie sicher, dass die Webanwendung automatisch gestartet wird. Installieren und konfigurieren Sie Nginx als Reverseproxy, um HTTP-Anforderungen weiterzuleiten, die an Port 80 an die Dotnet-Anwendung vorgenommen werden (sodass Clients eine Verbindung herstellen können, ohne die Portnummer angeben zu müssen).
Informationen zum Haftungsausschluss von Drittanbietern
Die in diesem Artikel genannten Drittanbieterprodukte stammen von Herstellern, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.