.NET na Linux’ie

Musisz uruchomić aplikację napisaną w .NET i nie chcesz płacić za dodatkowe licencje Windows Server?
Oczywiście istnieje możliwość skorzystania z systemu operacyjnego Linux.

W artykule opiszę przykład bazujący na Linux Ubuntu w wersji 20.04 LTS. Najlepszym rozwiązaniem jest zainstalowanie środowiska ASP.NET Core gdyż obejmuje ono środowisko uruchomieniowe .NET jak i ASP.NET Core.

Dla wersji 20.04 i starszych musisz dodać repozytoria Microsoftu, natomiast w wersji 22.04 są one już zainstalowane.
Często jednak łączy się aplikacje .NET z bazą danych MSSQL i tutaj powstaje problem gdyż pakiet Microsoft mssql-server dostępny jest tylko do wersji 20.04. Na nowszych wersjach linuxa trzeba by skorzystać z dockera dla bazy danych. Używanie bazy danych w formie kontenera jest kontrowersyjne – są podzielone zdania czy instalacja w formie kontenera jest działaniem prawidłowym.

Zatem przeprowadzamy instalację na wersji 20.04.
Możesz do tego celu wykorzystać jeden z naszych serwerów VPS dostępnych na stronie forpsi.pl

Dodajemy repozytorium

Na początku trzeba dodać klucz podpisywania pakietów oraz dodać repozytorium. W tym celu w linii poleceń wpisz:

$ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

$ sudo dpkg -i packages-microsoft-prod.deb
$ rm packages-microsoft-prod.deb

Następnie zainstaluj .NET SDK, dzięki któremu będzie możliwość tworzenia aplikacji w .NET.

$ sudo apt-get update
$ sudo apt-get install -y dotnet-sdk-6.0

Instalowanie środowiska uruchomieniowego

Poniższymi komendami zainstalujemy środowisko ASP.NET core, które jest zgodnym środowiskiem uruchomieniowym dla platformy .NET.

$ sudo apt-get update
$ sudo apt-get install -y aspnetcore-runtime-7.0

Przed publikacją aplikacji upewnij się, że są zainstalowane następujące biblioteki:

  • libc6
  • libgcc1
  • libgssapi-krb5-2
  • libicu66
  • libssl1.1
  • libstdc++6
  • zlib1g

Jeśli Twoja aplikacja używa System.Drawing.Common będziesz musiał dodatkowo zainstalować bibliotekę libgdiplus.
System.Drawing.Common działa tylko na .NET w wersji 6 oraz wymaga ustawienia przełącznika System.Drawing.EnableUnixSupport.

Instalacja MONO

Dodając repozytorium MONO otrzymasz najnowszą wersję biblioteki libgdiplus.
Wpisz poniższe polecenia:

$ sudo apt install ca-certificates gnupg
sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

$ echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

$sudo apt update

Po pobraniu możesz zainstalować MONO najlepiej w pełnej wersji by uniknąć problemów z brakiem pakietów:

$ sudo apt install mono-complete

Instrukcje dla wcześniejszych wersji Ubuntu oraz weryfikację konfiguracji znajdziesz na tej stronie www.

Tworzenie nowych aplikacji pod MONO nie będzie problemem, jednak mogą się one pojawić przy migracji dużych rozbudowanych aplikacji działających już w systemie Windows. MONO nie obsługuje bowiem wszystkich funkcjonalności .NET zainstalowanych na Windows.
Zaletą tego rozwiązania jest na pewno prosta integracja z serwerem www.

Opis kompatybilności dostępny jest na tej stronie.