SmartHub – Raspbian i ASP.NET Core #2. Instalacja ASP.NET Core na Raspberry Pi

Jest to kolejny wpis z cyklu Raspbian i ASP.NET Core. Dziś będzie o instalacji narzędzi potrzebnych do uruchomienia ASP.NET Core w systemie Raspbian. Zaczynamy.

Generalnie cała instrukcja znajduje się tutaj. Jednak ze względu na mnóstwo odnośników i niedopowiedzeń można się łatwo zagubić lub wykonać nie to o co chodziło jej autorowi.

Nawiązując do poprzedniej części warto zalogować się po SSH jako root, co pozwoli na rozwiązanie problemów, które mogą wynikać z tego, że ASP.NET Core jest nadal w wersji niestabilnej i skrypty instalacyjne mogą zawierać błędy. Np. skrypty instalacyjne dodają „skróty” do poleceń tylko do profilu aktualnego użytkownika co powoduje, że jak zostaną odpalone z sudo, to operacja kończy się błędem command not found.

1. Instalacja DNVM (.NET Version Manager)

DNVM jest to zbiór narzędzi konsolowych do instalacji, aktualizowania i konfiguracji środowiska wykonawczego .NET. Czyli dzięki niemu będą dostępne komendy DNX i DNU, o których za chwilę.

Żeby zainstalować DNVM najpierw należy się upewnić, że paczki unzipcurl są zainstalowane w systemie:

sudo apt-get install unzip curl

Potem można przejść do instalacji DNVM:

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

2. Instalacja DNX (.NET Execution Environment) i DNU (.NET Development Utility)

DNX jest odpowiedzialny za uruchomienie środowiska wykonawczego CLR, w którym z kolei zostanie uruchomiona aplikacja.

DNU to narzędzie do zarządzania paczkami. Jest to odpowiednik klienta NuGeta dla .NET Core oraz dodatkowo służy do budowania i publikowania projektu.

W instrukcji w tym miejscu są 2 możliwości. Instalacja DNX dla .NET Core (CoreCLR) oraz instalacja DNX dla Mono. Jako, że wsparcie CoreCLR dla Linuksowych systemów z procesorami ARM jest w trakcie developmentu, to jedyną opcją dla Raspbiana jest Mono.

W tym właśnie miejscu oryginalnej instrukcji zabrakło dopowiedzenia na ten temat, a z kolei odnośnik do instrukcji instalacji Mono wyglądał jak link do definicji, co sprawiło mi problemy.

Żeby zainstalować Mono należy najpierw wykonać następujące komendy w konsoli, które dodadzą nowe źródło paczek w systemie i zaktualizują informacje o dostępnych najnowszych ich wersjach:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update

Teraz aktualizujemy obecnie zainstalowane paczki w systemie:

sudo apt-get upgrade

Mamy już dodane nowe repozytorium paczek i zaktualizowane paczki, więc można przejść do właściwej instalacji Mono:

sudo apt-get install mono-complete

Skoro mamy już Mono, to teraz wystarczy zainstalować środowisko wykonawcze DNX, które będzie je wykorzystywać:

dnvm upgrade -r mono

Po wykonaniu tej procedury warto sprawdzić czy środowisko DNX się dobrze zainstalowało. Ostateczny test i tak będzie dopiero, gdy uruchomimy przykładową stronę ASP.NET Core. Aby zweryfikować czy środowisko wykonawcze DNX dla Mono się dobrze zainstalowało należy wykonać komendę dnvm list, której wynik powinien być następujący:

root@raspberrypi:~# dnvm list

Active Version           Runtime Architecture OperatingSystem Alias
------ -------           ------- ------------ --------------- -----
  *    1.0.0-rc1-update2 mono                 linux/osx       default

W momencie tworzenia tego wpisu najnowszą stabilną wersją DNX była wersja 1.0.0-rc1-update2.

Jako, że razem z DNX zostało zainstalowane narzędzie DNU, to można sprawdzić czy jest dostępne z konsoli za pomocą polecenia dnu --version
, którego wynik powinien być podobny do następującego:

root@raspberrypi:~# dnu --version
Microsoft .NET Development Utility
 Version: 1.0.0-rc1-16609
 Type: Mono
 Architecture: arm
 OS Name: Linux
 OS Version: raspbian 8
 Runtime Id: raspbian.8-arm

3. Instalacja libuv

Libuv jest to multi-platformowa biblioteka używana przez serwer HTTP Kestrel, którego używa się do uruchamiania aplikacji ASP.NET Core na systemach innych niż Windows. Tam też oczywiście działa, ale po co skoro jest IIS.

Żeby ją zainstalować należy wykonać następujące kroki:

sudo apt-get install make automake libtool curl
curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src
cd /usr/local/src/libuv-1.8.0
sudo sh autogen.sh
sudo ./configure
sudo make
sudo make install
sudo rm -rf /usr/local/src/libuv-1.8.0 && cd ~/
sudo ldconfig

4. Uruchomienie przykładowej aplikacji ASP.NET Core

Zaczynamy od ściągnięcia repozytorium ASP.NET Home, które zawiera przykłady do uruchomienia. Znajduje się tam też instrukcja jak je uruchomić.

Więc najpierw klonujemy repozytorium:

git clone https://github.com/aspnet/home

Następnie przechodzimy do folderu home/samples, a następnie do folderu odpowiedniego dla wersji środowiska wykonawczego DNX, które posiadamy. W tym wypadku najbliższy mojej wersji (1.0.0-rc1-update2) był folder 1.0.0-rc1-update1 (w sumie to potem testowałem z 1.0.0-rc1-final i też działa).

Potem przechodzimy do folderu HelloMvc lub HelloWeb i wykonujemy komendy:

dnu restore
dnx web

Komenda dnu restore wykonuje się dłuższą chwilę. Po wykonaniu tych komend dla któregoś z folderów należy uruchomić przeglądarkę i przejść pod adres http://<ip-malinki>:5004, po czym powinna się uruchomić strona.

Projekt HelloWeb to projekt webowy, który pokazuje stronę startową ASP.NET Core. HelloMvc to projekt webowy, który dodatkowo wykorzystuje MVC. Dla niego powinna się uruchomić znana z poprzednich wersji ASP.NET strona z szablonem w bootstrapie. Z kolei dla HelloWeb powinna wyglądać tak:

asp.net welcome page

To tyle jeżeli chodzi o ten wpis z cyklu Raspbian i ASP.NET Core. W kolejnych będzie o instalacji ASP.NET Core na Windowsie z użyciem Visual Studio i publikowaniem aplikacji stworzonej w Visual Studio na malinkę.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *