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 unzip
i curl
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:
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ę.