Einleitung: Warum ein VPS der ideale Ort für Ihre C#-Anwendung ist
\nDie Entwicklung mit C# im .NET-Ökosystem bietet leistungsstarke Werkzeuge zur Erstellung von Webanwendungen, APIs und Microservices. Das Schreiben des Codes ist jedoch nur die halbe Miete. Damit Ihre Anwendung für Benutzer verfügbar wird, muss sie auf einem Server bereitgestellt werden. Ein virtueller privater Server (VPS) bietet die vollständige Kontrolle über die Umgebung, was für eine Produktionsumgebung entscheidend ist. In dieser Anleitung gehen wir den Weg von Null bis zu einer voll funktionsfähigen C#-Anwendung auf einem VPS mit Ubuntu. Sie erfahren, wie Sie die .NET Runtime installieren, den Reverse-Proxy-Server Nginx konfigurieren, die Anwendung als systemd-Dienst starten und ihren automatischen Neustart sicherstellen.
\n\nServervorbereitung und Installation der erforderlichen Software
\n1. Verbindung zum VPS und grundlegende Einstellungen
\nNachdem Sie Zugriff auf den VPS erhalten haben (IP-Adresse, Benutzername und Passwort oder SSH-Schlüssel), verbinden Sie sich über das Terminal:
\nssh root@Ihre_Server_IP\nAktualisieren Sie die Paketdatenbank und installieren Sie curl (wird zum Herunterladen von .NET benötigt):
\napt update && apt upgrade -y\napt install curl -y\n\n2. Installation des .NET SDK/Runtime
\nMicrosoft empfiehlt die Installation von .NET über das offizielle Repository. Fügen wir es hinzu und installieren das SDK (zum Erstellen) oder die Runtime (nur zum Ausführen). Für einen Produktionsserver reicht in der Regel die Runtime, aber zur Vereinfachung der Bereitstellung installieren wir das SDK:
\nwget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb\ndpkg -i packages-microsoft-prod.deb\napt update\napt install -y dotnet-sdk-8.0\nÜberprüfen Sie die Installation:
\ndotnet --version\n\n3. Installation von Nginx und Git
\nNginx fungiert als Reverse-Proxy und leitet Anfragen von Port 80 an Ihre Anwendung weiter. Git wird zum Klonen des Repositorys benötigt:
\napt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx\n\nVorbereitung und Veröffentlichung der C#-Anwendung
\n1. Projekt erstellen oder klonen
\nAls Beispiel erstellen wir eine einfache ASP.NET Core Web API-Anwendung direkt auf dem Server (in einem realen Projekt würden Sie ein Repository klonen):
\nmkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp\n\n2. Anwendung veröffentlichen (self-contained)
\nDamit die Anwendung ohne installiertes SDK auf dem Server läuft, veröffentlichen wir sie im self-contained-Modus:
\ndotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish\nDas Flag --self-contained true bindet alle .NET-Abhängigkeiten in den publish-Ordner ein. Die Alternative ist --self-contained false (erfordert eine installierte Runtime).
3. Testlauf
\nÜberprüfen Sie, ob die Anwendung startet (standardmäßig auf Port 5000):
\ncd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"\nÖffnen Sie im Browser http://Ihre_IP:5000 – Sie sollten eine API-Antwort sehen. Stoppen Sie den Prozess (Strg+C).
Konfiguration von Nginx als Reverse-Proxy
\n1. Site-Konfiguration
\nErstellen wir eine Konfigurationsdatei für Nginx:
\nnano /etc/nginx/sites-available/myapp\nFügen Sie den folgenden Code ein (ersetzen Sie your_domain_or_ip durch Ihre Domain oder IP):
server {\n listen 80;\n server_name your_domain_or_ip;\n\n location / {\n proxy_pass http://localhost:5000;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection keep-alive;\n proxy_set_header Host $host;\n proxy_cache_bypass $http_upgrade;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n }\n}\n\n2. Konfiguration aktivieren
\nln -s /etc/nginx/sites-available/myapp /etc/nginx