.NET Core 5 Anwendung unter Linux (Ubuntu) – Teil 1
Die Bereitstellung einer .NET Core Anwendungen zur Produktion erfolgt üblicherweise unter Microsoft Azure oder beispielsweise auf einem Windows Server mit dem IIS. In diesem Beitrag wird eine alternative Bereitstellung einer .NET Core Anwendung unter Linux (Ubuntu) mit nginx beschrieben, die sich für Heimanwendungen, Demos oder Präsentationen eignet.
Die in dieser Artikelreihe verwendete Umgebung besteht aus folgenden Komponenten
- Proxmox Virtualisierungsserver
- Ubuntu 21.04 LXC mit nginx Webserver
- MS SQL Server unter Linux (in Docker, SQL Server auf Docker Hub)
- nginx Proxy Manager (in Docker)
Installation von Ubuntu 21.04 in einem Proxmox LXC
Für die Installation wird Ubuntu 21.04 verwendet. Die Version 20.10 wird zum aktuellen Zeitpunkt nicht mehr unterstützt.
Ubuntu 21.04 wird auf einem dedizierten Server oder, wie in diesem Beispiel, unter Proxmox installiert. Laden Sie sich unter Proxmox das entsprechende LXC Template herunter und erstellen Sie einen LXC mit folgenden Einstellungen:
- Ubuntu 21.04 LXC Template
- 2 GB RAM, 512 MB Swap
- 1 Core
- 50 GB Speicherplatz
Starten Sie anschließend den LXC Container und loggen Sie sich ein.
Installation .NET Core 5 Runtime
Um die Installation der notwendigen Microsoft Pakete durchführen zu können, sind die Microsoft-Paketsignaturschlüssel zu der Liste der vertrauenswürdigen Schlüssel sowie das Paketrepository hinzuzufügen
wget https://packages.microsoft.com/config/ubuntu/21.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
Zusätzlich muss der sichere Download verfügbar gemacht werden.
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
Je nach Anwendungsfall (ASP.NET Core oder nur .NET Core) sind die entsprechenden Runtimes zu installieren.
Die folgende Anweisung installiert die ASP.NET Core und die .NET Core Runtime:
sudo apt-get install -y aspnetcore-runtime-5.0
Die folgende Anweisung installiert nur die .NET Core Runtime:
sudo apt-get install -y dotnet-runtime-5.0
Die erfolgreiche Installation von .NET Core 5 sollte entsprechend folgender Versionsabfrage aussehen, hier wurde die aspnetcore-runtime-5.0 installiert:
root@dotnetapps:~# dotnet --info
Host (useful for support):
Version: 5.0.9
Commit: 208e377a53
.NET SDKs installed:
No SDKs were found.
.NET runtimes installed:
Microsoft.AspNetCore.App 5.0.9 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 5.0.9 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download
Installation nginx
An dieser Stelle wird nur die Standardinstallation von nginx beschrieben. Die notwendigen Konfigurationen für die Ausführung von .NET Core Anwendungen wird in Teil 2 beschrieben.
sudo apt install nginx
Die erfolgreiche Installation wird wie folgt geprüft:
root@dotnetapps:~# systemctl status nginx
* nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-08-30 11:50:00 UTC; 2h 21min ago
Docs: man:nginx(8)
Process: 902 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 904 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 905 (nginx)
Tasks: 2 (limit: 38066)
Memory: 2.6M
CPU: 34ms
CGroup: /system.slice/nginx.service
|-905 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
`-906 nginx: worker process
Aug 30 11:50:00 dotnetapps systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 30 11:50:00 dotnetapps systemd[1]: Started A high performance web server and a reverse proxy server.
Im Gegensatz zu einem Deployment in Azure oder auf einem IIS (One Click Deployment) benötigt die Bereitstellung unter Linux etwas mehr Vorbereitung sowie zusätzliche Einstellungen in der Linux Zielumgebung.
Die Erstellung und Verteilung der .NET Core Anwendung wird in Teil 2 dieser Reihe behandelt.
Pingback: .NET Core 5 Anwendung unter Linux (Ubuntu) - Teil 2 - kayomo GmbH