Der vollständige Leitfaden zum Hosting von ASP.NET Core unter Linux
Schritte und wichtige Tipps für die sichere und optimale Bereitstellung von ASP.NET Core-Anwendungen unter Linux mit Kestrel und Nginx

Der vollständige Leitfaden zum Hosting von ASP.NET Core unter Linux

Dieser Artikel zeigt Ihnen, wie Sie ASP.NET Core-Anwendungen unter Linux hosten. Sie erfahren, wie Sie die .NET-Laufzeitumgebung installieren, Kestrel und Nginx konfigurieren und Aspekte wie Sicherheit, Optimierung und Skalierbarkeit berücksichtigen.
0 Aktien
0
0
0
0

 

Hosting von ASP.NET Core auf Linux – Warum und wann?

ASP.NET Core läuft unter Linux mit *Kestrel* gut, und die Wahl dieser Hosting-Plattform kann wichtige Vorteile bieten, darunter: Kostenreduzierung, Kompatibilität mit Open-Source-Tools und einfache Containerisierung Diese Option eignet sich für Websites, APIs, Hintergrunddienste und latenzempfindliche Anwendungen wie Spiele und Handelsplattformen.

 

Voraussetzungen und Serverauswahl

 

Linux-Distribution und .NET-Version

Empfohlene Verteilungen umfassen: Ubuntu LTS (20.04/22.04), Debian (11/12), Und CentOS Stream oder Rocky/Alma Sie sind für die Produktion bestimmt. Für Umgebungen mit strengen Sicherheitsvorkehrungen. RHEL Verwenden Sie die offizielle Microsoft-Runtime und das SDK (z. B. .NET 6/7/8).

 

Hardware-Ressourcen und Serviceart

Für Websites und schlanke APIs in der Regel 1–2 vCPUs, 1–4 GB RAM und NVMe-SSD Genug. Geschäftliche und rechenintensive Anwendungen. 4+ vCPUs und 8+ GB RAM Und sie benötigen ein Hochgeschwindigkeitsnetz.

Für Trading und Gaming mit niedrigem Ping Es empfiehlt sich, einen lokalen VPS in der Nähe einer Kryptobörse oder eines regionalen Rechenzentrums zu wählen. Unser Unternehmen verfügt über mehr als 85 Standorte weltweit, sodass Sie problemlos das nächstgelegene Rechenzentrum auswählen können.

Nutzen Sie Grafikserver (GPU) für KI/Inferenz oder Rendering; unser Unternehmen bietet GPU-Cloud-Service und Rechenserver mit Hochgeschwindigkeitsnetzwerk.

Zum Schutz vor Angriffen empfiehlt sich ein Anti-DDoS-Server und ein Netzwerk mit BGP und CDN.

 

Grundlegende Installation und Einrichtung (.NET-Laufzeitumgebung) – Beispiel für Ubuntu

Um die offizielle Microsoft-Runtime zu installieren, fügen Sie das Repository hinzu und installieren Sie anschließend die Runtime:

sudo apt update
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-runtime-7.0

Erstellen Sie anschließend ein sicheres Dienstbenutzer- und Anwendungsverzeichnis:

sudo useradd -r -s /usr/sbin/nologin aspnetuser
sudo mkdir -p /var/www/myapp
sudo chown aspnetuser:aspnetuser /var/www/myapp

 

Containerlose Bereitstellung – Kestrel + systemd + Nginx

 

Veröffentlichen Sie die Anwendung und konfigurieren Sie systemd.

Erstellen und veröffentlichen Sie die Anwendung im Anwendungsverzeichnis:

dotnet publish -c Release -o /var/www/myapp

Die Beispiel-Unit-Datei für systemd finden Sie unter /etc/systemd/system/myapp.service Ort:

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

[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/MyApp.dll
Restart=always
# Safe User/Group
User=aspnetuser
Group=aspnetuser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

Aktivierung und Ausführung des Dienstes:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo journalctl -u myapp -f

 

Konfiguration von Nginx als Reverse-Proxy (SSL-Terminierung)

Installieren Sie Nginx und Certbot:

sudo apt install -y nginx certbot python3-certbot-nginx

Beispielkonfiguration für Nginx in /etc/nginx/sites-available/myapp Ort:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass         http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Holen Sie sich ein kostenloses SSL-Zertifikat:

sudo certbot --nginx -d example.com -d www.example.com

 

Bereitstellung mit Docker und Docker Compose

Beispiel einer mehrstufigen Dockerfile zur Erstellung eines kleinen und optimierten Images:

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]

Beispiel einer docker-compose.yml-Datei (alternativ können Sie auch nginx-proxy oder Traefik verwenden):

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
  nginx:
    image: nginx:stable
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs:/etc/letsencrypt

Für CI/CD verwenden Sie GitLab CI oder GitHub Actions, um Images zu erstellen, zu testen und in der Registry bereitzustellen und anschließend auf den Server zu übertragen. Unser Unternehmen bietet GitLab-Hosting für private Teams an.

 

Sicherheit und bewährte Verfahren

 

Netzwerk und Firewall

Öffnen Sie nur die unbedingt notwendigen Ports (80/443) und beschränken Sie den SSH-Zugriff auf die erforderlichen Adressen.

sudo ufw allow 80,443/tcp
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp  # مثال
sudo ufw enable

 

TLS und Härtung

 

Angriffe und Schutz

Verwenden Sie fail2ban zum Schutz von SSH und zur Ratenbegrenzung in Nginx. Setzen Sie Anti-DDoS-Server für sensible Anwendungen ein; unser Unternehmen bietet Anti-DDoS- und CDN-Pakete mit BGP an.

 

SELinux / AppArmor

Bei Distributionen mit aktiviertem SELinux (RHEL/CentOS) stellen Sie sicher, dass die Kontexte für Dateien und Ports korrekt gesetzt sind. Bei anderen Distributionen verwenden Sie AppArmor für das Profiling – ein dauerhaftes Herunterfahren wird nicht empfohlen.

 

Leistungsoptimierung und -überwachung

 

Kestrel-Tuning- und Verbindungseinstellungen

Verwenden Sie HTTP/2 und Keep-Alive auf der Reverse-Proxy-Ebene. Berücksichtigen Sie die Einschränkungen von Kestrel in appsettings.json Festlegen (z.B. Limits.MaxConcurrentConnections, MaxRequestBodySize).

Verwenden Sie die Antwortkomprimierung (Brotli/Gzip), um die Antworten zu komprimieren:

services.AddResponseCompression(options => { options.EnableForHttps = true; });

 

Cache und Besprechungen

Nutzen Sie Redis für verteilten Cache und Sitzungsstatus, um horizontale Skalierung zu ermöglichen. Verwenden Sie ein CDN für statische Inhalte, um die Serverlast zu reduzieren.

 

Überwachung und Protokollierung

Kombinieren Sie strukturiertes Logging mit Serilog oder Microsoft.Extensions.Logging und senden Sie die Daten an ELK/Graylog. Für Metriken verwenden Sie dotnet-counters, den Prometheus-Exporter (dotnet_exporter) und Grafana. APM-Tools wie Application Insights sind für das Tracing hilfreich.

 

Standorte vergleichen und den richtigen anhand der Bewerbung auswählen

Für den Handel sind niedriger Ping und Stabilität wichtig – wählen Sie einen Standort in der Nähe von Börsen oder privaten Netzwerken. Für Gaming werden regionale Server und Gaming-VPS mit einem Hochgeschwindigkeitsnetzwerk empfohlen.

Für KI und Rendering empfehlen wir GPU-Cloud- und Rechenserver mit NVMe und hoher Bandbreite. Für Websites und Apps ist ein Standort in der Nähe der Hauptnutzer sowie eine Kombination aus CDN und Multi-Region-Anbindung für optimale Verfügbarkeit ratsam. Unser Unternehmen bietet über 85 globale Standorte sowie ein CDN- und BGP-Netzwerk.

 

Hohe Skalierbarkeit und Verfügbarkeit

Verwenden Sie einen Layer-7-Loadbalancer (Nginx/HAProxy/Cloud LB) oder einen Loadbalancer im Rechenzentrum. Speichern Sie Sessions in Redis oder einer gemeinsam genutzten Datenbank. Horizontalisieren Sie Container und VMs für automatische Skalierung; nutzen Sie HPA in Kubernetes. Verwenden Sie BGP Anycast und ein CDN für die globale Traffic-Verteilung.

 

Häufige Fehlerbehebungen

Häufige Krankheitsbilder und Untersuchungsmethoden:

  • 502 Bad Gateway: Überprüfen Sie systemd mit journalctl -u myapp, lokaler Hafen mit ss -tlnp und Dateiberechtigungen.
  • SSL-Problem: Prüfen certbot renewZugriff auf den Zertifikatsordner und korrekte Referenzierung desselben in Nginx.
  • Datei-/Berechtigungsfehler: Überprüfen Sie den korrekten Besitzer/die korrekte Gruppe für den Dienstbenutzer.
  • Unerwartete Langsamkeit: Verwenden Sie dotnet-counters und Profiler, um CPU- oder GC-Engpässe zu finden.

 

Praktische Tipps für die Produktion (DevOps)

  • Verwenden Sie mehrstufige Docker-Builds, um das Image zu verkleinern.
  • Speichern Sie Geheimnisse in einem Geheimnismanager (Vault, GitLab CI Secrets).
  • Schreiben Sie Health-Endpunkte und konfigurieren Sie Liveness/Readiness für den Orchestrator.
  • Automatisieren Sie Build-, Test- und Deployment-Prozesse mit GitLab CI oder GitHub Actions.

 

Zusammenfassung und Serviceangebote

Das Hosting von ASP.NET Core unter Linux ist eine **skalierbare, sichere und erweiterbare** Option für Web- und API-Anwendungen. Für hohe Leistung und Verfügbarkeit empfiehlt es sich, die Anwendung mit Kestrel + Nginx oder in einem Container mit Orchestrator bereitzustellen, TLS und Sicherheitsmaßnahmen konsequent umzusetzen, Redis/eine Datenbank für den Status zu verwenden und ein CDN für statische Inhalte einzusetzen.

Mit über 85 Standorten weltweit, GPU Cloud, Compute- und dedizierten Servern, Trading- und Gaming-VPS, Anti-DDoS-Infrastruktur, GitLab-Hosting, CDN und BGP-Netzwerk bietet unser Unternehmen Hosting- und Supportlösungen für ASP.NET Core-Anwendungen mit verschiedenen Tarifen an.

Das könnte Ihnen auch gefallen