- Hosting von ASP.NET Core auf Linux – Warum und wann?
- Voraussetzungen und Serverauswahl
- Grundlegende Installation und Einrichtung (.NET-Laufzeitumgebung) – Beispiel für Ubuntu
- Containerlose Bereitstellung – Kestrel + systemd + Nginx
- Bereitstellung mit Docker und Docker Compose
- Sicherheit und bewährte Verfahren
- Leistungsoptimierung und -überwachung
- Standorte vergleichen und den richtigen anhand der Bewerbung auswählen
- Hohe Skalierbarkeit und Verfügbarkeit
- Häufige Fehlerbehebungen
- Praktische Tipps für die Produktion (DevOps)
- Zusammenfassung und Serviceangebote
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.0Erstellen 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/myappDie 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.targetAktivierung 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-nginxBeispielkonfiguration 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/letsencryptFü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 mitss -tlnpund 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.









