3. Projekt Atropa: Ako spojazdniť ASP.NET 5 na Linuxe

Loading

Raspberry Pi Hacks – Facebook – V predchádzajúcich dieloch seriálu sme si povedali, prečo a ako budeme tvoriť “zlý” počítač založený na Raspberry Pi a Raspbian Linuxe a ukázali si, ako ho nainštalovať. V dnešnom pokračovaní si ukážeme, ako na neho nainštalovať Mono, ASP.NET 5 a ako napísať a spustiť jednoduchú aplikáciu. Uvedený postup je síce písaný na mieru Raspberry Pi a Raspbianu, ale malo by byť možné ho použiť všeobecne, aj pre iné distribúcie Linuxu.

Architektura ASP.NET 5

Dnes je de facto podporovaný iba jediný runtime (.NET Framework) a ASP.NET je závislé na rade starých API pevne zviazaných s Windows a IIS. Nie je prakticky možné prevádzkovať ASP.NET na ničom inom, než na Windows. Takto vyzerá ASP.NET dnes, vo verzii 4.5:

S ASP.NET 5 sa architektúra výrazne zmení. Nová verzia bude nezávislá na použitom operačnom systéme a Windows, Mac OS X a Linux budú chápané ako rovnocenné platformy. K dispozícii budeme mať tiež na výber z troch rôznych platforiem, ktorým sa hovorí DNX (.NET Execution Environment) a budú mať rôzne vlastnosti. A čisto na nich, bez závislosti na konkrétnych legacy API, budú postavené všetky webové technológie. Možno si to predstaviť zhruba takto:

K dispozícii máme v súčasnosti celkovo tri rôzne Runtime prostredie – DNX:

  • .NET Framework 4.6 – to je plnohodnotný .NET, ako ho poznáme a milujeme. Funguje len na Windows a ponúka úplnú sadu API a najširšie možnosti.
  • CoreCLR – nový runtime, napísaný od základu. Momentálne toho vie najmenej a zatiaľ nie je v praxi použiteľný, ale postupne by mal .NET Framework nahradiť a byť k dispozícii pre všetky tri podporované platformy (zatiaľ je k dispozícii len pre Windows).
  • Mono – projekt Mono dostáva s príchodom ASP.NET 5 nový zmysel. Funguje multiplatformový, na Windows, Linuxe i Macu a je dostatočne dospelý pre rad aplikácií.

Inštalácia Mono Runtime

V ideálnom svete by stačilo napísať sudo apt-get install mono-complete. Avšak, v ideálnom svete nežijeme a v repozitároch Raspbianu nie je v čase písania tohto článku dostupná aktuálna verzia Mona. A verzia, ktorá je k dispozícii, príliš nefunguje a nie je kompatibilný s ASP.NET 5.

Prvými dvoma príkazy pridáme do zoznamu repozitárov balíčkovacieho systému server pre distribúciu Mona. Ďalšími príkazy aktualizujeme zoznam dostupných balíčkov, nainštalujeme dostupné aplikácie a konečne kompletné distribúciu Mona. Ich vykonanie bude chvíľu trvať, pretože je potrebné stiahnuť a nainštalovať množstvo vecí.

Inštalácia Libuv

ASP.NET 5 využíva knižnicu Libuv, ktorá slúži k asynchronnímu programovanie. Bohužiaľ, nie je k dispozícii ako balíček. Začnite tým, že sa pozriete na stránky projektu na GitHub a zistíte aktuálnu verziu. V čase písania článku bola aktuálna verzia 1.6.1. Ak medzi tým vyjde novšie, upravte v príkazoch číslo verzie.

V čase písania článku bola aktuálna verzia 1.6.1. Ak medzi tým vyjde novšie, upravte v príkazoch číslo verzie.

K inštalácii použite nasledujúce príkazy:

Prvý príkaz nainštaluje balíčky automake a libtool, ktoré budeme potrebovať ďalej. Druhým príkazom stiahnete zdrojové kódy knižnice a rozbalíte ich do dočasného priečinka v / usr / local / src. Ďalšími príkazy potom kód skompiluje a dočasné súbory zmažete.

Reklamy

Pridávanie certifikátov medzi dôveryhodné

ASP.NET 5 si priebežne doťahuje balíčky z rôznych serverov. Komunikuje s nimi cez HTTPS.

Inštalácia ASP.NET

Teraz môžeme konečne nainštalovať ASP.NET 5 ako také. Základom všetkého je DNVM – .NET Version Manager. Môžete totiž mať nainštalované rôzne verzie .NET side by side

Nie sú ale nainštalované žiadne verzie DNX, ako sa môžete presvedčiť príkazom dnvm list. Pre inštaláciu najnovšej betaverzie použite príkaz dnvm upgrade. V čase písania článku ide o verzii 1.0.0-beta5, ako vidíte v nasledujúcom výstupe uvedeného príkazu:

Ak v čase, keď budete ASP.NET inštalovať, bude k dispozícii novšia verzia, musíte patričným spôsobom upraviť aj nasledujúce súbory a projekty.

Poznámka: v predchádzajúcich verziách sa DNVM volal KVM a boli k dispozícii aj iné príkazy. Ak nájdete príklady, kde je príliš veľa “korunačiek”, zrejme sú zastarané.

Teraz bola dokončená inštalácia ASP.NET 5 a môžeme vytvoriť prvý projekt.

Vytvorenie príkladného projektu

Náš “zlý captive portál” sa bude volať WiFiGate a tomu zodpovedajú aj názvy adresárov a podobne. Ak chcete rozbehnúť vlastnú aplikáciu, pomenujte si ich inak.

Začneme tým, že vytvoríme v domácom adresári aktuálneho užívateľa pi adresár www a v ňom adresár wifigate. K tomu použijeme nasledujúci príkaz: mkdir -p ~ / www / wifigate.

Potom vytvoríme v uvedenom adresári definičný súbor project.json. K editáciu súborov budeme všeobecne používať editor nano, pretože je dosť komfortná a používatelia Windows s ním budú pravdepodobne dosť kompatibilné. Spustite ho príkazom nano ~ / www / wifigate / project.json.

Zadajte do súboru nasledujúci kód (nezabudnite ho upraviť, ak budete používať novšiu verziu, než 1.0.0-beta5; k náhrade textu môžete v editore Nano použiť klávesovú skratku Ctrl + W Ctrl + R):

Reklamy

Editor ukončite šťuka Ctrl + X. Na otázku, či sa má modifikovaný obsah uložiť, odpovedzte Y (áno). Navrhovaný názov súboru nemeňte a potvrďte ho stlačením klávesy Enter.

Rovnakým spôsobom vytvorte v tej istej zložke súbor Startup.cs, ktorého obsah bude nasledujúci:

Tento kód napospol nič nerobí, len zobrazí ukážkovú stránku, aby sme vedeli, že všetko funguje správne.

Obnovenie NuGet balíčkov a spustenie projektu

Pred spustením aplikácie je nutné nainštalovať (obnoviť) balíky, špecifikované v súbore project.json. To jest činiť príkazom dnu restore ~ / www / wifigate /.

Teraz konečne môžeme spustiť projekt vo vstavanom servera Kestrel, nasledujúcim príkazom: DNX ~ / www / wifigate / Kestrel.

Spúšťanie bude chvíľu trvať, ale potom, čo sa vypíše na konzolu “Started”, môžeme sa pozrieť na IP adresu RPI a port 5004 (nakonfigurovaný v project.json). Ak ste všetko urobili správne, mala by sa vám zobraziť ukážková stránka ASP.NET 5:

Gratulujeme, práve ste sprevádzkovali ASP.NET 5 aplikáciu na Raspberry Pi na Linuxe.

Za normálnych okolností by ste mali mať možnosť ukončiť Kestrel tým, že stlačíte Enter. Aktuálne beta však obsahuje chybu, takže je nutné použiť trochu dramatickejší prostriedky.

Najprv proces pozastavte stlačením klávesovej skratky Ctrl + Z. Potom si príkazom ps nájdite proces menom mono a zistite jeho pid (v prvom stĺpci, napríklad tu 18080). Pomocou príkazu kill -9 proces zabite. Že všetko prebehlo v poriadku si môžete overiť opätovným spustením príkazu ps. Celú sekvenciu vidíte tu:

Aplikácia nám síce beží, ale len na vývojovom serveri a musíme jej ručne spustiť, nebeží v pozadí ako služba. Ako to zariadiť, to si ukážeme v ďalšom pokračovaní za týždeň.

Odkaz na nasledujúci – budúci článok.

  1. Projekt Artropa: Ako vyrobiť z Raspberry Pi zlé zariadenie s NETom
  2. Projekt Atropa: Sprevádzkovanie Raspberry Pi a Raspbian Linuxu
  3. Projekt Atropa: Ako spojazdniť ASP.NET 5 na Linuxe
  4. Projekt Atropa: Automaticé spustenie webu a publikaci prostredníctvom nginx
  5. Projekt Atropa: Vytvárame Honeypot
  6. Projekt Atropa: Vytvárame captive portál
  7. Projekt Atropa: Ako sa brániť?

Reklamy

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *