Bereitstellung einer C#-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum ist ein VPS die ideale Lösung für C#-Anwendungen?

Die Entwicklung mit C# und der .NET-Plattform ist längst nicht mehr nur Windows-Servern vorbehalten. Mit der Veröffentlichung von .NET Core (und jetzt .NET 5/6/7/8) haben Entwickler die Möglichkeit, ihre Anwendungen unter Linux auszuführen, was den Zugang zu kostengünstigen und leistungsstarken VPS-Servern eröffnet hat. Die Bereitstellung einer C#-Anwendung auf einem VPS spart nicht nur Budget, sondern bietet auch die vollständige Kontrolle über die Infrastruktur: von der Wahl des Betriebssystems bis zur Sicherheitskonfiguration.

In dieser Anleitung gehen wir den gesamten Zyklus der Bereitstellung einer ASP.NET Core-Anwendung auf einem entfernten Server durch. Sie erfahren, wie Sie den Server vorbereiten, den Reverse-Proxy-Server Nginx konfigurieren, die Anwendung über Kestrel starten und sie mit einem SSL-Zertifikat schützen. Alle Schritte werden mit Codebeispielen und Konsolenbefehlen begleitet.



1. Servervorbereitung und Installation der .NET-Runtime

Wahl des Betriebssystems und SSH-Verbindung

Für die Bereitstellung einer C#-Anwendung auf einem VPS wird die Verwendung der Distribution Ubuntu 22.04 LTS oder Debian 11 empfohlen. Nach der Anmietung des Servers verbinden Sie sich per SSH mit ihm:

ssh root@Ihre_Server_IP

Aktualisieren Sie den Paketmanager und installieren Sie die erforderlichen Dienstprogramme:

apt update && apt upgrade -yapt install curl wget git -y


Installation des .NET SDK oder der Runtime

Zum Ausführen einer fertigen Anwendung reicht die Installation der ASP.NET Core-Runtime. Wenn Sie den Code direkt auf dem Server kompilieren möchten, installieren Sie das SDK. Fügen wir das Microsoft-Repository hinzu und installieren .NET 8:

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debdpkg -i packages-microsoft-prod.debapt updateapt install aspnetcore-runtime-8.0 -y

Überprüfen Sie die Installation:

dotnet --list-runtimes

Die Ausgabe sollte eine Zeile mit der Version ASP.NET Core 8.0.x enthalten.



2. Vorbereitung und Veröffentlichung der Anwendung

Projektkonfiguration für die Produktion

Öffnen Sie in Ihrem ASP.NET Core-Projekt die Datei Program.cs und stellen Sie sicher, dass die Anwendung auf die richtige URL hört. Für den Betrieb über Kestrel legen wir Port 5000 fest:

var builder = WebApplication.CreateBuilder(args);builder.WebHost.UseUrls("http://0.0.0.0:5000");var app = builder.Build();app.MapGet("/", () => "Hallo vom VPS!");app.Run();

Fügen Sie außerdem in appsettings.json einen Abschnitt für Logs und Datenbankverbindungszeichenfolgen hinzu, falls diese verwendet werden.



Veröffentlichung der Anwendung (Self-contained oder Framework-dependent)

Wählen Sie die Veröffentlichungsmethode. Self-contained enthält alle Abhängigkeiten, was praktisch ist, wenn auf dem Server keine .NET-Runtime installiert ist. Framework-dependent erfordert eine installierte Runtime. Führen Sie den Befehl im Projektordner aus:

dotnet publish -c Release -o ./publish

Nach Abschluss erscheinen alle erforderlichen Dateien im Ordner publish. Archivieren Sie diese:

tar -czf app.tar.gz ./publish


Hochladen auf den Server

Verwenden Sie SCP oder SFTP, um das Archiv zu übertragen. Beispiel über SCP (wird vom lokalen Rechner aus ausgeführt):

scp app.tar.gz root@Ihre_IP:/var/www/myapp/

Entpacken Sie das Archiv auf dem Server:

mkdir -p /var/www/myapptar -xzf /var/www/myapp/app.tar.gz -C /var/www/myapp/


3. Konfiguration von Kestrel und Erstellung eines systemd-Dienstes

Starten der Anwendung über Kestrel

Kestrel ist der integrierte Webserver von ASP.NET Core. Führen Sie für einen Teststart Folgendes aus:

cd /var/www/myapp/publishdotnet YourAppName.dll

Die Anwendung sollte auf Port 5000 starten. Überprüfen Sie dies mit curl http://localhost:5000. Wenn alles funktioniert, stoppen Sie den Prozess (Strg+C).



Erstellen einer systemd-Unit-Datei

Damit die Anwendung automatisch beim Systemstart startet und bei Abstürzen neu gestartet wird, erstellen wir einen systemd-Dienst. Erstellen Sie die Datei:

nano /etc/systemd/syst                

Blogs

Buchempfehlungen