.NET 6 MVC unter Linux bereitstellen

Erstellen Sie zunächst einen Ordner auf Ihrem Linux-Server, beispielsweise mit dem Namen myweb. Achten Sie auf die korrekten Ordnerberechtigungen; der Standardwert ist 0755. 0755 entspricht den Rechten rwxr-xr-x:

Andere Benutzer: Nur Lesen und Ausführen (r-x)

Eigentümer (Ihr Benutzerkonto): Vollzugriff zum Lesen, Schreiben und Ausführen (rwx)

Gruppenmitglieder: Nur Lesen und Ausführen (r-x)

Veröffentlichen Sie anschließend Ihr Projekt in Visual Studio. Wechseln Sie zur Release-Konfiguration und kompilieren Sie das Projekt. Klicken Sie dann mit der rechten Maustaste auf das Projekt und wählen Sie Veröffentlichen. Kopieren Sie nach Abschluss der Veröffentlichung alle generierten Dateien aus dem Veröffentlichungsordner mithilfe eines FTP-Clients in den neu erstellten myweb-Ordner.

cd /usr/myweb

Nach dem Kopieren der Dateien führen Sie den folgenden Befehl aus, um die Anwendung als Hintergrundprozess zu starten. Im Hintergrund ausgeführt läuft das Programm auch weiter, wenn Sie das entfernte Linux-SSH-Fenster schließen.

sudo nohup dotnet yourprogramname.dll &Code-Sprache: CSS (css)

Das abschließende Zeichen & ist für die Ausführung im Hintergrund unerlässlich. Ohne dieses Zeichen läuft die Anwendung im Vordergrund und wird sofort beendet, wenn Sie das Terminal schließen oder die Tastenkombination Strg + C drücken.

Hier ist mein praktisches Beispiel: sudo nohup dotnet WebSite.dll &

Wichtiger zusätzlicher Hinweis

Legen Sie die Porteinstellungen vor der Veröffentlichung fest. Öffnen Sie die Datei appsettings.json in Ihrem .NET-MVC-Projekt.

Fügen Sie die folgende Konfiguration als Vorlage hinzu:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:8080"
      }
    }
  }
}Code-Sprache: JSON / JSON mit Kommentaren (json)

Diese Einstellung akzeptiert Verbindungen von jeder IP-Adresse über Port 8080. Sie können Nginx als Reverse-Proxy verwenden und mehrere separate Domains auf einem einzigen Linux-Server hosten.

Wenn Sie Nginx ausschließlich als Reverse-Proxy nutzen, müssen Sie diesen Port nicht in der Firewall öffnen. Binden Sie den Dienst stattdessen nur an die lokale Adresse wie folgt:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://127.0.0.1:8080"
      }
    }
  }
}Code-Sprache: JSON / JSON mit Kommentaren (json)

Mit dieser Konfiguration akzeptiert die Anwendung nur lokale Anfragen und blockiert alle direkten externen Verbindungen.

Mein Ziel ist der Zugriff auf diese Anwendung über die Adresse abc.com/hello.

Führen Sie anschließend den Befehl sudo nohup dotnet WebSite.dll & aus, um die Anwendung zu starten.

Überprüfen Sie den ordnungsgemäßen Betrieb mit diesem Befehl: ps -aux | grep WebSite.dll

Ein passender Prozesseintrag bestätigt den erfolgreichen Start des Dienstes.

Nginx-Reverse-Proxy einrichten (diesen Abschnitt überspringen, falls kein Proxy benötigt wird)

Wenn Nginx bereits installiert ist, befindet sich die Hauptkonfigurationsdatei unter /etc/nginx/nginx.conf

Bearbeiten Sie die Website-Konfiguration unter /etc/nginx/sites-available/default

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/web/xxxx;
	index index.html index.htm index.nginx-debian.html;
	server_name _;

	# Hauptseite
	location / {
		try_files $uri $uri/ =404;
	}

	# ✅ Wichtig: /hello an .NET weiterleiten
	location /hello {
		proxy_pass http://127.0.0.1:8080;
		proxy_http_version 1.1;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}

Starten Sie Nginx nach dem Speichern der Änderungen neu

sudo nginx -t
sudo systemctl restart nginx

Starten Sie nun Ihre .NET-MVC-Anwendung neu

Suchen Sie zunächst den laufenden Prozess mit ps -aux | grep WebSite.dll und notieren Sie die PID am Anfang der zugehörigen sudo-Zeile

Beenden Sie die laufende .NET-MVC-Instanz über diese PID.

Starten Sie den Dienst erneut mit dieser Zeile: sudo nohup dotnet 你的项目.dll –urls http://127.0.0.1:8080 > /dev/null 2>&1 &

Nun erfolgt die Gesamtprüfung

Nginx neu starten

Führen Sie folgenden Befehl aus:

bash

Ausführen:

sudo systemctl restart nginx

.NET lauscht auf Port 8080

Überprüfen Sie den Status des .NET-Dienstes mit dem folgenden Befehl:

bash

Ausführen:

curl http://127.0.0.1:8080

Wenn im Terminal roher HTML-Code ausgegeben wird, funktioniert die Anwendung einwandfrei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert