Published

Sun 23 February 2014

←Home

Hostam blog s Raspberry Pi-a

Raspberry Pi je malo računalo veličine otprilike kutije cigareta (one “normalne”, ne ženske) i košta 35 dolara (oko 460 Kn kod nas zajedno s kućištem; keyword za search je samo “raspberry”) izgrađeno oko procesora koji se koristio za mobitele. Unutra je sve što treba nekom računalu - USB, video (HDMI), audio (3.5) i mreža. Nije nešto posebno jako računalo ali s obzirom za što ga koristim, moglo je biti i sporije. Evo opisa što radim s njim.

Raspberry Pi u (nečijoj tuđoj) ruci

U današnje vrijeme clouda prvo pitanje je - zašto uopće u bilo kakvom obliku hostati blog samostalno, kod sebe, umjesto da se nalazi na nekom besplatnom servisu. Odgovor je, dakako, zato što mogu.

Jedna od mojih omiljenih zanimacija je mikro-optimizacija IT sustava - iz malih i naoko slabih stvari izvući maksimum. Bilo da se radi o velikim sustavima gdje se može ušparati kreativnim izborom komponenti i dobrom arhitekturom softvera ili ovako nečem sitnom kao što je blog (i to na hrvatskom jeziku, znači da će posjetitelja biti zaista, zaista malo).

Raspberry Pi je računalo izgrađeno oko procesora ARM. Ne koriste se vječito poznati i popularni procesori Intela ili AMD-a, niti procesori koji su njihove kopije ili su kompatibilni s njima, nego posve druga vrsta procesora koja je napravljena isključivo za korištenje u malim i mobilnim uređajima. Čak i u svojoj klasi, ovaj procesor u Raspberry Pi-u (RPI-u) je spor. Konkretno, ovaj procesor se zadnji put koristio “za prave” u mobitelima generacije HTC Desire (onaj prvi, iz 2010.). Koliko točno je spor možda najbolje demonstrirati usporedbom procesorske snage: RPI može enkriptirati algoritmom AES brzinom oko 21 MB/s a današnja desktop računala su bliže 150 MB/s. Osim sporog procesora, u RPI-u je sporo i sve ostalo - memorija i pohrana. Ne koristi se disk, pa niti specijalizirani SSD nego obična SD kartica.

Karakteristike procesora i pohrane su uvjetovale što mogu raditi s blogom. Zbog sporosti procesora i male količine memorije (u mom RPI-u je 256 MB RAM-a) ne mogu koristiti PHP, znači ne dolazi u obzir WordPress niti bilo što slično nego neki od “statičkih” blogova. Uzeo sam Pelican među ostalim jer je pisan u Pythonu. Radi se o softveru koji niz tekstualnih datoteka (koje pišem naravno u VIM-u) u wiki-sintaksi prevodi u pravi HTML site. Zapravo, izvorni kod ovog weba kojeg čitate možete pogledati na BitBucketu jer ga spremam kao običan source.

Zanimljiva” osobina SD kartica je da se ubrzano kvare ako se puno piše na njih (ne misli se na zapunjenje kapaciteta nego na pisanje na isto mjesto na flash čipu), pa treba definitivno napraviti sve da se izbjegne da blog uzrokuje neke zapise po datotečnom sustavu. Tu sam napravio dvije stvari:

  1. Uklonio sam access log od web servera - za analitiku koristim “cloud” - Google Analytics pa mi ne treba lokalni access log (error log je još uvijek tu i do sada nema ništa u njemu).
  2. Koristim Disqus za komentiranje - tako da su i komentari u “cloudu”.

RPI je spojen na moju lokalnu mrežu u stanu, te tako na ADSL modem. U ADSL modemu imam jednostavno preusmjeravanje porta (još znano i kao virtual server) koji u dolaznom mrežnom prometu s interneta preusmjeruje zahtjeve za TCP portom 80 na RPI. ADSL uplink je dosta spor pa je tu od velike važnosti optimizirati sadržaj i promet. Na RPI-u koristim Web server lighttpd koji među ostalim podržava on-line kompresiju statičkih HTTP sadržaja. U praksi to znači da će svaka statička HTML datoteka koju generira Pelican biti komprimirana prije prijenosa mrežom. Pogledao sam i situacija je dosta dobra - ispada da su uobičajene veličine mojih stranica s blogom oko 5 KiB nakon kompresije (i oko 15 KiB prije kompresije) što znači da moj uplink od 768 Kbps može isporučiti oko 19 stranica u sekundi. U praksi su tu naravno CSS i slike pa je dosta manje, ali budimo realni - blog koji u Hrvatskoj prikupi 10-tak posjeta u sekundi je predobar za svoje okruženje :D

Zadnja komponenta je DNS. Kako ADSL mijenja IP adrese svaki dan, treba postojati nešto što povezuje tekstualnu adresu hrblog.ivoras.net s ovom IP adresom. Ta usluga se zove Dynamic DNS i konkretno moj provider DNS usluge Joker ima potpunu podršku za tu uslugu. To funkcionira na način da se relativno često RPI javlja Jokeru te Joker tako zaključuje na kojoj IP adresi se trenutno nalazi ova DNS adresa.

I to je sve što vam treba.

Zanimljivo je da mi je prelazak s WYSIWYG editora na “sirovo” pisanje teksta s wiki-sintaksom u vim-u čini se dosta pomogao produktivnosti. Izgleda da ljudi koji po Webu traže editore teksta koji im ne odvlače pažnju imaju dobru ideju.

Ako imate komentare, ideje, itd. prostor za komentare je dolje :)

Update: Opisanim aktivnostima je inspirirana radionica na DORS 2014.

Go Top
<< WTF je Codex Alimentarius? | Dajte mi DogeCoin! >>
comments powered by Disqus