Bereitstellung einer C#-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung

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

Die Entwicklung einer C#-Anwendung ist nur die halbe Miete. Damit Ihr Projekt für Benutzer im Internet zugänglich wird, muss es auf einem Server bereitgestellt werden. Ein virtueller privater Server (VPS) ist die ideale Lösung zum Hosten von .NET-Anwendungen, da er die vollständige Kontrolle über die Umgebung bietet und alles an spezifische Anforderungen anpassen lässt.

In diesem Artikel werden wir den gesamten Bereitstellungsprozess einer C#-Anwendung (ASP.NET Core) auf einem VPS mit Linux (Ubuntu 22.04) durchgehen. Sie erfahren, wie Sie den Server vorbereiten, die erforderliche Software installieren, die Anwendung veröffentlichen und den Webserver für den Betrieb konfigurieren. Alle Schritte werden mit Codebeispielen und Befehlen begleitet.



1. VPS-Vorbereitung und Installation des .NET SDK

Der erste Schritt ist die Vorbereitung des Servers. Wir verwenden Ubuntu 22.04 LTS, da es eines der beliebtesten und stabilsten Betriebssysteme für Server ist. Stellen Sie eine SSH-Verbindung zum VPS her:

ssh user@your-server-ip

Nach dem Einloggen aktualisieren Sie die Paketliste und installieren die erforderlichen Abhängigkeiten:

sudo apt updatesudo apt upgrade -ysudo apt install wget apt-transport-https software-properties-common -y

Fügen Sie nun das Microsoft-Repository hinzu und installieren Sie das .NET SDK. Für .NET 8 führen Sie Folgendes aus:

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 updatesudo apt install dotnet-sdk-8.0 -y

Überprüfen Sie die Installation:

dotnet --version

Wenn Sie eine Versionsnummer sehen (z.B. 8.0.100), ist alles korrekt installiert.

Wichtig: Wenn Ihre Anwendung eine Datenbank verwendet (z.B. PostgreSQL oder SQLite), installieren Sie das entsprechende Paket. Für PostgreSQL:

sudo apt install postgresql postgresql-contrib -y


2. Veröffentlichen und Hochladen der Anwendung auf den Server

Bereiten Sie nun die Anwendung selbst für die Bereitstellung vor. Öffnen Sie auf Ihrem lokalen Computer (auf dem entwickelt wird) ein Terminal im Projektstammverzeichnis und führen Sie die Veröffentlichung im Release-Modus durch:

dotnet publish -c Release -o ./publish

Dieser Befehl erstellt einen Ordner publish mit allen erforderlichen Dateien zum Ausführen der Anwendung auf dem Server. Jetzt muss dieser Ordner auf den VPS hochgeladen werden. Verwenden Sie SCP oder SFTP. Beispiel mit SCP:

scp -r ./publish user@your-server-ip:/home/user/myapp

Wobei myapp der Name des Ordners ist, in dem Ihre Anwendung auf dem Server gespeichert wird.

Nach dem Hochladen verbinden Sie sich mit dem Server und verschieben die Dateien an einen geeigneteren Ort, z.B. nach /var/www/myapp:

sudo mkdir -p /var/www/myappsudo cp -r /home/user/myapp/* /var/www/myapp/

Vergessen Sie nicht, die korrekten Berechtigungen für den Ordner zu setzen:

sudo chown -R www-data:www-data /var/www/myappsudo chmod -R 755 /var/www/myapp


3. Konfiguration von systemd für den automatischen Start

Damit Ihre Anwendung automatisch beim Systemstart startet und bei einem Absturz neu gestartet wird, erstellen wir einen systemd-Dienst. Erstellen Sie eine Konfigurationsdatei:

sudo nano /etc/systemd/system/myapp.service

Fügen Sie den folgenden Inhalt ein (ersetzen Sie Pfade und Benutzernamen durch Ihre eigenen):

[Unit]Description=My ASP.NET Core ApplicationAfter=network.target

[Service]WorkingDirectory=/var/www/myappExecStart=/usr/bin/dotnet /var/www/myapp/YourApp.dllRestart=alwaysRestartSec=10KillSignal=SIGINTSyslogIdentifier=myappUser=www-dataEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]WantedBy=multi-user.target

Speichern Sie die Datei (Strg+O, dann Enter) und beenden Sie den Editor (Strg+X). Laden Sie nun systemd neu und starten Sie den Dienst:

sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myapp

Blogs

Buchempfehlungen