Hlavní navigace

Raspberry Pi jako aplikační server

27. 3. 2014 3:13 zboj

Raspberry Pi se velmi rychle stalo populárním levným plnohodnotným počítačem. S rozšířením tohoto pěkného kousku hardwaru se také roztrhl pytel s nabídkami hostingu pro tento minipočítač. Co tedy s takovýmto “serverem” můžeme dělat?

Raspberry Pi má méně paměti RAM než většina dnešních mobilů a ani procesor nepatří k nejrychlejším. Bez problémů jej lze použít například jako jednoduchý webový server. Ale i jako aplikační, běží na něm například WebSphere a na letošním D-code v Mannheimu jsem na vlastní oči viděl, jak na něm jede SAP HANA. Až do takových extrémů zacházet nechci, ale běžná webová aplikace není problém.

Na SD kartě je běžně OS včetně GCC a Javy. Protože paměti není nazbyt a procesor se dost vleče, určitě chceme mít aplikaci co nejefektivnější a hlavně nenáročnou na paměť (té je 512MB, jenže něco si vezme kromě OS i grafika). V rámci experimentu jsem vytvořil poměrně jednoduchou aplikaci s pár stránkami a databází (nad sqlite). Nejdříve je nutné nainstalovat GCC 4.7, protože předinstalovaná verze 4.6 nestačí ke kompilaci clangu. Sice pro Raspbian existuje balíček clang, ale předpotopní, takže je nutné přeložit čerstvé zdrojáky. Jakmile máme clang, můžeme jím přeložit libc++, čímž se otevře cesta k efektivní kompilaci čehokoliv v C++11. Serverových knihoven existuje několik, například boost (nad asio) nebo microhttpd. Vlastní aplikační logika je potom umístěna mezi touto serverovou komponentou a databází. Není těžké ověřit si, že rozumně napsaná aplikace má malý paměťový footprint (kromě rychlé odezvy).

Kód pro obsluhu požadavků vypadá nějak takto:

http::Server server(8080, [](const std::string& url)->std::string { … return response; });

Jednodušeji by to snad ani nešlo.

Sdílet