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 ein VPS der ideale Ort für Ihre C#-Anwendung ist

\n

Die 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\n

Servervorbereitung und Installation der erforderlichen Software

\n

1. Verbindung zum VPS und grundlegende Einstellungen

\n

Nachdem Sie Zugriff auf den VPS erhalten haben (IP-Adresse, Benutzername und Passwort oder SSH-Schlüssel), verbinden Sie sich über das Terminal:

\n
ssh root@Ihre_Server_IP
\n

Aktualisieren Sie die Paketdatenbank und installieren Sie curl (wird zum Herunterladen von .NET benötigt):

\n
apt update && apt upgrade -y\napt install curl -y
\n\n

2. Installation des .NET SDK/Runtime

\n

Microsoft 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:

\n
wget 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:

\n
dotnet --version
\n\n

3. Installation von Nginx und Git

\n

Nginx fungiert als Reverse-Proxy und leitet Anfragen von Port 80 an Ihre Anwendung weiter. Git wird zum Klonen des Repositorys benötigt:

\n
apt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx
\n\n

Vorbereitung und Veröffentlichung der C#-Anwendung

\n

1. Projekt erstellen oder klonen

\n

Als 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):

\n
mkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp
\n\n

2. Anwendung veröffentlichen (self-contained)

\n

Damit die Anwendung ohne installiertes SDK auf dem Server läuft, veröffentlichen wir sie im self-contained-Modus:

\n
dotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish
\n

Das Flag --self-contained true bindet alle .NET-Abhängigkeiten in den publish-Ordner ein. Die Alternative ist --self-contained false (erfordert eine installierte Runtime).

\n\n

3. Testlauf

\n

Überprüfen Sie, ob die Anwendung startet (standardmäßig auf Port 5000):

\n
cd /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).

\n\n

Konfiguration von Nginx als Reverse-Proxy

\n

1. Site-Konfiguration

\n

Erstellen wir eine Konfigurationsdatei für Nginx:

\n
nano /etc/nginx/sites-available/myapp
\n

Fügen Sie den folgenden Code ein (ersetzen Sie your_domain_or_ip durch Ihre Domain oder IP):

\n
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\n

2. Konfiguration aktivieren

\n
ln -s /etc/nginx/sites-available/myapp /etc/nginx                

Blogs

Buchempfehlungen