Einleitung
Die Entwicklung einer C#-Anwendung auf der .NET-Plattform ist nur die halbe Miete. Damit Ihr Projekt für Benutzer im Internet zugänglich wird, muss es korrekt auf einem Server bereitgestellt werden. VPS (Virtual Private Server) ist die ideale Lösung für kleine und mittlere Unternehmen sowie Indie-Entwickler: Er bietet vollständige Kontrolle über die Umgebung zu einem erschwinglichen Preis. In diesem Artikel gehen wir den gesamten Prozess des Deployments einer C#-Anwendung auf einem VPS mit Linux (Ubuntu 22.04) durch. Sie erfahren, wie Sie den Server vorbereiten, die Anwendung veröffentlichen, einen Reverse Proxy mit Nginx einrichten und den Autostart über systemd sicherstellen.
1. VPS vorbereiten und .NET Runtime installieren
1.1. Mit dem Server verbinden
Nach dem Kauf des VPS erhalten Sie eine IP-Adresse und ein Root-Passwort. Stellen Sie eine SSH-Verbindung her:
ssh root@ihre-server-ipEs wird empfohlen, aus Sicherheitsgründen sofort einen separaten Benutzer zu erstellen:
adduser appuserusermod -aG sudo appusersu - appuser1.2. .NET Runtime installieren
Für den Betrieb einer C#-Anwendung auf dem Server wird die ASP.NET Core Runtime benötigt. Fügen Sie das Microsoft-Repository hinzu und installieren Sie das Paket:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debsudo apt-get updatesudo apt-get install -y aspnetcore-runtime-8.0Überprüfen Sie die Installation:
dotnet --list-runtimesSie sollten eine Zeile mit der Version ASP.NET Core 8.0.0 sehen.
2. Anwendung veröffentlichen und auf den Server hochladen
2.1. Veröffentlichung (publish) auf dem lokalen Rechner
Öffnen Sie das Projekt auf Ihrem Computer mit Visual Studio oder der .NET CLI und führen Sie den Befehl zum Veröffentlichen aus:
dotnet publish -c Release -o ./publishDieser Befehl erstellt einen Ordner publish, der alle für den Start der Anwendung erforderlichen Dateien enthält (einschließlich der Runtime-Abhängigkeiten, falls Sie FDD – Framework-Dependent Deployment – verwenden).
2.2. Auf den VPS hochladen
Kopieren Sie den Ordner publish mit scp oder sftp auf den Server. Führen Sie auf dem lokalen Rechner aus:
scp -r ./publish appuser@ihre-server-ip:/home/appuser/myappÜberprüfen Sie nun auf dem Server, ob die Dateien vorhanden sind:
ls -la /home/appuser/myapp3. systemd für den Autostart konfigurieren
Damit die Anwendung beim Systemstart startet und nach Abstürzen automatisch neu gestartet wird, erstellen Sie eine systemd-Unit.
3.1. Dienstdatei erstellen
Erstellen Sie die Datei /etc/systemd/system/myapp.service mit Root-Rechten:
sudo nano /etc/systemd/system/myapp.serviceFügen Sie folgenden Inhalt ein:
[Unit]Description=My ASP.NET Core ApplicationAfter=network.target
[Service]WorkingDirectory=/home/appuser/myappExecStart=/usr/bin/dotnet /home/appuser/myapp/YourAppName.dllRestart=alwaysRestartSec=10KillSignal=SIGINTSyslogIdentifier=myappUser=appuserEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=ASPNETCORE_URLS=http://localhost:5000
[Install]WantedBy=multi-user.targetErsetzen Sie YourAppName.dll durch den tatsächlichen Namen Ihrer .dll-Datei (entspricht normalerweise dem Projektnamen).
3.2. Dienst starten und aktivieren
sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myappÜberprüfen Sie den Status:
sudo systemctl status myappWenn alles richtig konfiguriert ist, sehen Sie den Status active (running). Die Anwendung lauscht nun auf Port 5000 auf der lokalen Schnittstelle.
4. Nginx als Reverse Proxy einrichten
Um die Anwendung von außen über die Standardports (80/443) erreichbar zu machen und ein SSL-Zertifikat hinzuzufügen, installieren und konfigurieren Sie Nginx.
4.1. Nginx installieren
sudo apt updatesudo apt install nginx -y