Ja du behöver lite mer för att det skall fungera fullt ut, men mycket av detta kanske du redan har liggande.
Till att börja med så behöver du en Raspberry Pi (Modell B), vilket är en liten men komplett dator. Det enda som egentligen behövs till är ett operativsystem och lite lagringsutrymme, vilket man löser genom ett vanligt SD-kort på några GB (jag använder ett på 4 GB). På bilden så syns min Raspberry Pi med en låda och en extra kabel som inte ingår när man köper datorn. Kabeln är bra om man vill bygga lite andra elektronikexperiment med olika kretskort, men för det här projektet så behövs den inte. En låda däremot kan vara bra men inte nödvändig.
Som alla datorer så måste man även ansluta till en skärm (HDMI) och mus/tangentbord (USB), samt en nätverksanslutning (vanlig nätverkskabel). ”Pajen” strömförsörjs med en mikro-USB kabel och den måste leverera minst 700 mA (helst 1 A). Det var det sista som var lite struligt för mig, så det slutade med att jag fick beställa en mikro-USB laddare för ändamålet.
Raspberry Pi säljs i princip överallt och om man använder någon av prisjämförelsesidorna så hittar man dem för under 300, men vanligt pris i butik är strax över 300 kronor.
Börja med att ladda hem operativsystemet från http://www.raspberrypi.org. Det finns flera att välja på och jag använder ”Raspbian” i den här instruktionen.
Filen man hämtar är packad och packas upp på vanligt sätt. Sedan behöver man skriva den *.img fil som blir resultatet av uppackningen till SD-kortet och här skiljer det sig beroende på operativsystem (sök efter ”Win32 Disk Imager” på Windows och ”PiWriter” på OS X). Här redogör jag för terminalkommandona i Linux, eftersom den beskrivna grafiska metoden inte fungerade för mig.
df -h umount /dev/sdkort-namn_från_förra_kommandot sudo dd bs=4M if=/sökväg/raspbian-avbildning.img of=/dev/sdkort-namn_från_första_kommandot sync
Det första kommandot ovan listar alla enheter och partitioner där det gäller att hitta igen det anslutna SD-kortet. På min dator heter kortet ”/dev/mmcblk0”.
Kortet avmonteras med det andra kommandot och det tredje skriver diskavbildningen till kortet. Processen rensar kortet helt och det är mycket viktigt att man anger rätt sökväg, då man kan skriva över fel disk av misstag. Ingen vill väl bli av med sin primära linuxpartition.
Om det inte fungerar så kan man prova att ändra ”bs” till ”1M”, vilket kan fungera men tar betydligt längre tid.
Medan programmet kör så händer ingenting, men det är bara att vänta (för mig tog det ca 5 minuter). Om allt gick bra så kör man sista kommandot för att rensa cachen och göra det säkert att ta ut kortet.
Sätt in kortet i ”Pajen” och anslut skärm, tangentbord, nätverk och slutligen ström via mikro-USB.
Det kan ta några sekunder men sedan så bör det börja blinka lampor och text rulla på skärmen. Efter ett tag så kommer det upp en meny:
Här konfigurerar man grunderna i systemet och jag kör ettan för att använda hela SD-kortet, tvåan för att byta lösenord, trean för att bota till kommandoraden då jag inte behöver en skrivbordsmiljö och sedan går jag in i de avancerade inställningarna under åtta:
Här använder jag A2 för att bestämma vad servern skall heta (jag väljer ”piserver”) och sedan så kör jag A4 för att aktivera SSH så det går att komma åt servern från en annan dator och fjärrstyra den. Slutligen väljer jag ”Finish” och loggar in med användarnamnet ”Pi” och det valda lösenordet. Kör kommandot ”ifconfig” för att kontrollera IP-adressen och därefter ”sudo halt” för att stänga av servern så alla onödiga sladdar kan tas bort. När jag sedan återansluter strömmen så skall det bara vara nätverkskabeln kvar som är ansluten.
Från en annan dator kan jag nu ansluta med SSH exempelvis med följande kommando från en linuxdator:
ssh pi@piserver
I mitt fall fungerade det inte att ange namnet utan jag fick använda IP-adressen till servern i stället.
Det kan som vanligt vara bra att uppdatera servern med kommandona:
sudo apt-get update sudo apt-get upgrade
Nu kan man i princip installera vad man vill på datorn, men tänk på att det inte är ett prestandamonster till dator.
Jag installerar en enkel webbserver med kommandot:
sudo apt-get install lighttpd
Jag passar även på att installera samba (apt-get install samba) och gör de konfigurationer som behövs för att komma åt webb-roten med en filhanterare.
Naturligtvis behöver rättigheten sättas på katalogen /var/www också, och tills vidare så gör jag det med kommandot:
sudo chmod 775 /var/www
Det var egentligen det hela. Resten består i att ladda upp html och javaskriptfiler till den utdelade katalogen, och sedan är det bara att ansluta med webbläsaren till servern.
Här i bilden har jag bara skapat en enkel ”index.html” fil i den utdelade katalogen och kör ett mycket enkelt Leaflet exempel med Open Street Map som enda lager.
Att tänka på är att lagringsutrymmet är begränsat men det fungerar ganska bra att hänvisa till data på andra servrar (exempelvis WMS tjänster). Eftersom javaskript körs på klienten så blir det inte heller så betungande för den lilla servern.
Ha inte för stora förväntningar på ”pajen”, men det blir svårt att hitta en server som tar mindre plats och drar mindre ström, för att inte tala om den obefintliga ljudnivån…
[EDIT]
För att aktivera PHP på webservern kör följande kommandon:
sudo apt-get install php5-common php5-cgi php5 sudo lighty-enable-mod fastcgi-php sudo service lighttpd force-reload
Testa PHP med koden:
<?php phpinfo( ); ?>
Det var det hela…
Mycket trevlig och lättförstålig handledning. Jag uppskattar verkligen det du gör. Men… (det är alltid ett men)
Skriv aldrig chmod 777 filnamn
Det gör din webbserver vidöppen för attacker, och det vill vi inte har.
Då är det bättre att du använder chmod 755 filnamn eller möjligen chmod 775 filnamn.
De motsvarare med mer lättförståeliga symboler kommandona: chmod u=rwx,go=rx filnamn eller chmod ug=rwx,o=rx filnamn
Kort förklaring av bokstäverna: u är User, g är Group och o är Other. = är endast dessa rättigheter, + är lägg till och – är ta bort rättigheter samt rwx är Read, Write och eXecute. För mer information, läs manualen med kommandot man chmod och/eller man ls.
Om du vet vilken grupp webbservern kör som, så kan du enkelt lägga till den användare som skall kunna ändra i filerna till samma grupp, dvs www-data i debian (tror jag det är), det ses enklast med ls -al /var/www.
För att lägga till en användare till en grupp, använd kommandot addgoup
sudo addgroup user www-data
Notera att på kataloger behöva man normalt x-rättigheten, men på filer behöver man bara x-rättigheten om filen är ett program som skall exekveras (köras). Normalt är inte filer som webservern visar program som skall exekveras.
Så då räcker rättigheterna chmod 644 filnamn eller chmod 664 filnamn istället.
De motsvarar då chmod u=rw,go=r filnamn eller chmod ug=rw,o=r filnamn
Så kort:
Ge aldrig ut skrivrättighet till övriga som inte är ägare eller grupp (dvs aldrig o=w, o är other, = är sätt exakt dessa rättigheter och w är write)
Var restriktiv med att ge grupperna skrivrättigheter (dvs g=w, g är group)
Vilka grupper som det gäller på filer ser man med ls -l filnamn. Då ser man ägare och grupptillhörighet på filen.
Man kan även ändra grupp på filen, men normalt lägger man till rättigheter till användaren eller gruppen användare som skall kunna ändra i filer/kataloger. Detta för att andra program/servrar kan förutsätta att data skall vara läsbart av användare från en viss grupp.
Långt men bra svar 😉
Jag brukar hoppa över säkerhet när jag testar annat, delvis eftersom det brukar strula för mig med samba och rättigheter. Men ofta är man sugen på att komma igång med det som användaren märker först. I utvecklingsarbetet så är designprocessen och användarupplevelsen viktigast för mig och det är först när det börjar bli dags att realisera systemet som säkerheten får större fokus.
Jag skall dock försöka att komma ihåg detta till nästa gång och framför allt bli tydligare med att framföra varningar i instruktionerna.
Om man vill skapa en separat grupp för just webbserverns katalog och sätta upp en användare (eller flera) i denna grupp kan man använda följande kommandon (grupp: ”webadmin” användare: ”stefan”):
sudo useradd – M stefan
sudo pdbedit -a -u stefan
sudo groupadd webadmin
sudo usermod -a -G webadmin stefan
sudo chgrp -R webadmin /var/www/
sudo chmod -R 775 /var/www/
Här behöver jag 775 för att ”Stefan” och gruppen ”webadmin” skall kunna skapa nya filer via smb-sökvägen till den utdelade katalogen.
I smb.conf så har jag då även ändrat ”guest ok” från ”yes” till ”no”, vilket ger en inloggningsruta när man försöker ansluta till resursen.
Angående strömförsörjning.
Det finns en inre ”säkring” i RPi som gör att det inte är någon idé att ha något laddare som ger mer än 1,2A. Men vad man skall passa sig för är för dåliga USB-kablar som inte är anpassade för laddning. Spänningsfallet över sladden kan bli för stor och RPi:n kan fungera dåligt pga det. Lösning är att se till att man inte har för många saker på USB:porten som drar ström och att man skaffar en bättre och kortare kabel.
Det har även rapporterats att skrivning till SD:kort som är extra snabbt (hög klass) kan bli lite osäkert om man kör överklockat och bara bryter strömmen. Så det kan vara bra att göra säkerhetskopior av innehållet på SD:kortet emellanåt. Vilket är ganska enkelt, bara att stoppa RPi och sedan göra tvärt emot vad du gjorde när du skapade SD:kortet första gången.
Jag har faktiskt en sådan liten kort kabel, väldigt smidig. Den skulle passa utmärkt till mindre USB-diskar, eller det skulle man kunna tro. Det var när jag testade detta och trodde att disken var trasig som det gick upp för mig att det faktiskt finns kablar som bara är till för att ladda olika prylar.