171 views

Raspberry PI inrichten als webserver

Pin It

RPi_Logo De raspberry pi is een creditcard formaat computer systeem. De ontwikkeling heeft vooral in het teken gestaan van “compleet, goed en zo goedkoop mogelijk“. Het resultaat is een complete computer voor rond de € 40,- met een SDHC memory kaartje als opslag (in plaats van een harde schijf).

RPi
Deze computer is uitstekend te gebruiken als privé webserver voor bijvoorbeeld een Blog. Uiteraard kan deze computer geen high-volume websites hosten. Daar zijn de specificaties (ARM11 @700Mhz) gewoon te beperkt voor. Al vanaf het begin is de raspberry pi een lieveling van de Linux gemeenschap. Er zijn verschillende Linux distributies geschikt gemaakt voor dit creditcard computertje.

Om hem te gebruiken als webserver moeten, behalve de installatie van Linux, nog een aantal andere pakketten geïnstalleerd worden. Deze handleiding beschrijft stap-voor-stap hoe dat moet. Omdat de capaciteit van de raspberry pi beperkt is wordt lighttpd als webserver gebruikt.

De initiële installatie van Debian Weezy op de raspberry pi staat beschreven op de website van raspberrypi.org. Klik hier om een pdf met alle stappen te downloaden.

Deze installatie handleiding gaat ervan uit dat er een raspberry pi aanwezig is met het initiële 2013-02-09 wheezy image. Dit image kun je hier downloaden.

Hoe deze op een SDHC-card te schrijven staat uitvoerig op hun website beschreven. Eventueel kun je hier meer informatie over het beschrijven van de SDHC-card vinden.

Stop de SDHC-card in de Raspberry pi en sluit de spanning aan…..
Na enige tijd verschijnt deze melding:



De, in deze handleiding gebruikte, conventie is dat alle tekst die op je computerscherm verschijnt in het groen wordt weer gegeven. Commando’s die je moet intoetsen zijn in het zwart weergegeven. Ieder commando moet worden afgesloten door op <Enter> te drukken!
Als je een commando moet intoetsen dat niet op één regel past, dan wordt het commando voor de duidelijkheid over twee of meer regels verspreidt. Op de plek waar het commando is onderbroken staat dan een backslash (“\“). Deze backslash maakt geen onderdeel uit van het commando en moet dan ook niet worden ingetoetst!

Het onderstaande menu verschijnt:
raspi-config
Selecteer met de pijltjestoetsen een voor een de volgende onderdelen, druk op <Enter> en volg de aanwijzingen die op het scherm verschijnen:

  • Expand root partition to fill SD card
  • Change password for ‘pi’ user
  • Set locale (zet default op: en_GB.UTF-8)
  • Set timezone
  • Try to upgrade

Druk vervolgens op de <Tab>-toets tot <Finish> geselecteerd is en druk weer op <Enter>. De basis configuratie van de raspberry pi (RPi) is nu klaar.

Dit is een goed moment om de raspberry pi opnieuw op te starten. Hiervoor kent Linux het reboot commando. Het commando sync schrijft alle file buffers naar de ‘schijf’.

Nadat de initiële configuratie is afgerond en, dus, het IP adres van de raspberry pi bekend is, vind ik het prettiger om de rapsberry  verder als headless device te benaderen. Dat kan op verschillende manieren (afhankelijk van het platform waar je gewoonlijk mee werkt).

  • Onder Linux open een terminal window en toets in:
              ssh pi@<IPadress van de RPi>
  • Onder OSX open een terminal window en toets in:
              ssh pi@<IPadress van de RPi>
  • Windows kent standaard geen mogelijkheid om via het ssh-protocol verbindingen met andere devices te maken. Daar is dus extra software voor nodig. Mijn favoriet is PuTTY. Dit is gratis, er hoeft niet echt iets geinstalleerd te worden (alleen een executable, geen registry setting en zo meer).
    PuTTY_1
    Voer bij Host Name (or IP address) het IP adres van je raspberry pi en bij port 22 in en zorg ervoor dat bij Connection Type SSH is aan-gevinkt. Klik nu op [Open] en er verschijnt een terminal window waarin je kunt inloggen op je raspberry pi.

Het leuke van deze manier van verbinding maken is dat je met meerdere terminal-windows tegelijk op je RPi kunt werken. Als er in het ene window een langdurende taak opgestart is, kun je in een ander window andere werkzaamheden verrichten.


Nadat het systeem opnieuw is opgestart is het verstandig om eerst alle pakketten up-to-date te maken.

Na het volgende commando kunt u gerust even koffie gaan drinken….

Tijd voor koffie 😉 koffie

Om te kijken of alles tot-nu-toe goed is gegaan starten we de raspberry pi opnieuw op (dit is niet echt noodzakelijk maar het geeft even een rust punt en het kost geen extra geld 😉 ..).


Als de raspberry pi opnieuw is opgestart kunnen we met de installatie van de nodige pakketten beginnen.

logo-mysql-170x115 Eerst installeer je de mysql-server:

Er wordt twee maal om een password voor de mysql ‘root’ user gevraagd. Vergeet dit password niet!

php51 .. daarna de php stack (alles op een (1) regel! De backslash (“\“) geeft aan waar de regel, voor de leesbaarheid is opgesplitst. De backslash moet je natuurlijk niet overtikken ;-)) :

lighttpd .. en nu waar het allemaal om te doen was, de lighttpd server:


Om te controleren of de installatie gelukt is moet je op een PC binnen je lokale netwerk je favoriete browser opstarten en de volgende URL intoetsen:

http://<het_IPadres_van_je_raspberrypi>/

Als je nu de volgende pagina te zien krijgt, dan is de installatie gelukt!

lighttpd


De meeste toepassingen waar de webserver voor gebruikt gaat worden zullen gebruik willen maken van php. We hebben in een vorige stap php al geïnstalleerd, maar lighttpd kan hier nog geen gebruik van maken. Daarvoor moeten eerst de modules 10-fastcgi.conf en 15-fastcgi-php.conf ge-‘enabled’ worden. Hiervoor bestaat het commando lighty-enable-mod, maar ik krijg daarmee alleen foutmeldingen. Daarom maar op de ouderwetse manier doen door een symbolic link aan te maken.
Let op: de commando’s moeten achter elkaar op een regel worden ingevoerd (zonder de “\“) ..


Vervolgens de webserver opnieuw de configuratie laten inlezen ..


Om te controleren of lighttpd nu php programma’s kan verwerken maak je in de webserver root directory een klein programma aan. Als je de bron-code hebt ingetikt sluit je nano of door <Ctrl>+X, Y, <Enter> in te toetsen).

Het programma moet er zo uit zien:

a nu weer naar een PC in je lokale netwerk en toets de volgende URL in:

http://<het_IPadres_van je_raspberrypi>/phpinfo.php

Als de opgehaalde pagina er zo uitziet, dan werkt lighttpd met php:
phpinfo


PHP schrijft meldingen over programma zaken in het error.log van lighttpd. Dit is een belangrijk hulpmiddel om problemen en/of fouten in de programma code te ontdekken. Op een ‘productie’ systeem, en zeker één als de RPi met een SDHC geheugen, wil je dit tot een minimum beperken.
Gelukkig kun je dit instellen in het bestand php.ini.

Ongeveer op regel 463 staat:

Verander deze regel in (“& ~E_NOTICE toevoegen):

en sla de wijzigingen op.
Om de nieuwe instelling te gebruiker moet lighttpd opnieuw opgestart worden:


Nu nog wat extra pakketten installeren die het gebruik en beheer van de raspberry pi vereenvoudigen. Zeker als je webserver via internet bereikbaar is raad ik je aan om serieus naar fail2ban te kijken!

Het is handig om het updatedb commando 1x per dag door cron uit te laten voeren. Je moet dan wel cron voor de root user aanpassen. Dit lukt niet met sudo crontab -e. Daarom eerst een shell voor root starten (de prompt voor root is #).

Voeg, aan het einde van het bestand, de volgende regel toe:

Nu zal updatedb iedere dag om 03:02 uur de locate-database opnieuw opbouwen.

Met het locate commando kun je nu eenvoudig ieder file op je raspberry pi snel terug vinden!



De raspberry pi leent zich ook uitstekend als lokale server voor het door- of ver-zenden van eMail over het internet. Ik heb een aparte post geschreven over de installatie en configuratie van postfix.


Het is niet nodig, maar ik vind het prettig om nu het systeem netjes af te sluiten en een backup van de SDHC-card te maken. Het commando shutdown -h now stopt het systeem (-h van ‘halt’). Met shutdown -r now wordt het systeem afgesloten en weer opgestart (-r van ‘reboot’ dit heeft hetzelfde effect als reboot).

Veel plezier!

Dit bericht is geplaatst in Computer, Nodo, Scripts met de tags , , , , , , , , . Bookmark de permalink.

30 reacties op Raspberry PI inrichten als webserver

  1. Mark schreef:

    Is het niet mogelijk een complete Image te downloaden, en deze aan te passen naar behoeft/iprange.

    • Willem Aandewiel schreef:

      Hi Mark,

      Is mogelijk .. ware het niet dat ik daar de capaciteit en bandbreedte niet voor heb. Ik maak gebruik van een 8GB SDHC kaartje en daarop kan ik geen image neerzetten van zichzelf.
      Daarnaast is het natuurlijk ook zo dat je altijd zelf configuratie bestanden moet aanpassen (domein naam, IPadres, wachtwoorden enz.). Enige handigheid met een editor is dan toch wel noodzakelijk en dan is het volgen van de drie (twee?) installatie-handleidingen een kleine stap verder en geeft je ook de mogelijkheid om direct de meest actuele versie van raspbian en de NoDoWeb-app te gebruiken.

  2. Dylan schreef:

    He zie ik het goed dat je ook de nodo werkend heb….
    Ik wil graag de raspberrypi werkend hebben met de nodo
    En dan ook met een stukje eigen site.
    Waar ik dan ook een mailserver van wil maken…[ voor de fun een eigen mail account ]

    KAN dit allemaal

    Hoor graag van je

    • Willem Aandewiel schreef:

      Hallo Dylan,

      Ja, je ziet het goed. Ik heb een werkende NoDo en op een Raspberry Pi draait de NoDo WebApp (die, in mijn opzet, alleen lokaal benaderbaar is). Verder draait ook deze website op dezelfde RPi, waarmee een deel van jou vragen beantwoord is.

      Om er ook een mailserver op te laten draaien moet je de post op deze website over Postfix maar lezen. Dat zijn de eerste stappen om de RPi als mailserver te kunnen gebruiken. Je moet er wel rekening mee houden dat de beschikbare opslag op een SD kaartje erg beperkt is. Maar dat kun je eenvoudig oplossen door een USB HD op de RPi aan te sluiten en deze in het filesysteem op te nemen.

      Het kan allemaal en het is hartstikke leuk om er mee bezig te zijn! Op internet is voldoende te vinden over welke pakketten je hier het beste voor kunt gebruiken.

      Veel succes!

      • Dylan schreef:

        Succes Heb ik zeker nodig….

        Ben er maar druk mee.
        Ben windoozen gewend…….

        Nu al voor de 5de keer een schone start gemaak, maar kom nog niet waar ik zijn wil…
        Maar als het allemaal kan, zal ik zeker nog een keer van “diensten” gebruik willen maken…..

        Greetz

        • Willem Aandewiel schreef:

          Leuk!
          En “Ja”, Winowz heeft een hoop mensen voor altijd beschadigd.
          Als je met Linux aan de gang gaat zal het je verbazen wat je allemaal kunt doen met zelfs zo’n klein boardje als de RPi. En als je er via internet en Google niet uit komt wil ik je best proberen te helpen.
          Laat me weten wat je vorderingen zijn.
          Grtz.
          Willem

  3. Dylan schreef:

    @ Willem,

    Wat ik me wel afvraag.
    Kan ik een simpel siteje of meerdere sites draaiend krijgen zonder dat Php te gebruiken. [ ik zie telkens dat index.php terwijl ik eigenlijk index.html wil gebruiken ]
    En dan daarnaast wel “gewoon” de nodowebapp werkend krijgen..

    Wat zijn de verschillen tussen:
    nginx
    Lighttpd
    Of kunnen beide pakketten gelijktijdig draaien?

  4. Dylan schreef:

    Update…
    En kan wordpress er dan ook “gewoon” bij?

  5. Dylan schreef:

    @ Willem….

    Zware kost…
    Maar er draait wat…
    Ik kan alleen niet met FTP in de www map documenten uploaden.
    Krijg steeds een fout met rechten…

    Op naar de nodo

  6. Bart schreef:

    Duidelijke instructie.

    Maar als Linux noob heb ik nog wel een vraag. Hoe krijg ik mijn bestanden op de site?
    FTP vanaf een windows
    FTP vanaf de PI?
    Samba?

    Wat is de best practice?

    aanvulling:
    FTP opzetten is niet echt moeilijk met b.v.
    sudo apt-get-install proftpd
    of een andere ftp server

    Maar hoe pas je de rechten aan om te schrijven in /var/www ?

    🙂
    sudo chown -R pi /var/www
    uitgaande van gebruiker “pi”

    Heel hartelijk bedankt voor je uitleg, met wat nawerk heeft het mij resultaat opgeleverd.

    • Willem Aandewiel schreef:

      Hallo Bart,

      Heerlijk zo’n lezer die zijn eigen antwoorden geeft 😉

      Ik ben er alleen niet zeker van of het zo’n goed idee is om de gebruiker “pi” eigenaar van ‘/var/www/’ te maken. Het zou zomaar kunnen dat de webserver dan niet meer kan wat hij moet kunnen (meestal is de gebruiker “www”, “www-data” of “wwwrun” eigenaar van deze boom)..

      Het gebruik van ftp zou ik afraden. Beter is het om sftp te gebruiken (secure ftp) en volgens mij hoef je daar niets voor te installeren omdat het gebruik maakt van het SSH protocol (maar dat weet ik niet zeker). Onder Windowz kun je dan WinSCP gebruiken om bestanden op de RPi te zetten (of ze ervan af te halen). Tussen Linux/OSX systemen kun je gewoon de commandline “scp” gebruiken. Ik doe niet anders.

  7. Marc schreef:

    Hallo Willem,

    ik heb de handleiding voor het inrichten van de Pi als webserver met belangstelling gelezen, maar hoe zorg je ervoor dat die website voor mensen bereikbaar is. Stel je hebt http://www.voorbeeldwebsite.nl als domeinnaam, hoe stel je het in op de Pi zodat mensen de site kunnen bezoeken?

    • Willem Aandewiel schreef:

      Hallo Marc,

      Op de RPi kun je dat niet instellen. Daarvoor moet je instellingen in je modem aanpassen. Vaak kan dat via een optie “Games”. In ieder geval moet je in je modem instellen dat alle binnenkomende verzoeken voor poort 80 (dat is de poort die voor het http protocol wordt gebruikt) worden doorverwezen naar het IP-adres van je RPi. Dit valt onder “NAT-translation“.

      Succes

    • Walther Swarte schreef:

      Hoi Marc,

      Bij het bedrijf waar je je domeinnaam hebt geregistreerd (in mijn geval mijndomein.nl) kan je de DNS-record van je domein aanpassen. Verander het ‘www record’ waar je http://www.voorbeeldwebsite.nl staat naar het ip-adres die je van je internetprovider hebt gekregen. Dit is het (externe!) ipadres van jouw modem. Je kan dit adres vinden in je modem door te kijken bij status.

      Maar pas op: pas je alle records aan en je weet je ip-adres die je van je domeinprovider hebt toegewezen gekregen (niet meer [Willem]?) kan (moet [Willem]?) je de helpdesk bellen…. 🙁

      Je kan natuurlijk ook een subdomein aanmaken zoals bijvoorbeeld pi.voorbeeldwebsite.nl. Dan maak je gewoon een nieuwe regel aan in je dns-record (waarna je website extern via deze subdomein-naam benaderd kan worden [Willem]).

      Ik raad het je wel aan om een subdomein te gebruiken! Dit voorkomt sleutelen en/of problemen aan je ‘originele’ website. Zeker als je niet bekend bent met dns records…

      Groet!
      Walther,
      IJmuiden.

  8. Hans Bemelen schreef:

    Hallo Willem,

    Ben deze post met de raspberry begonnen en alles wat beschreven is, is goed gegaan behalve bij het opnieuw aanmelden op de phpinfo.php krijg ik geen scherm maar 403 forbidden. Wat is daar verkeerd gegaan of moet ik de inlognaam pi veranderen en zo ja, hoe?

    • Willem Aandewiel schreef:

      Hallo Hans,

      Ik denk dat je de stappen om PHP te installeren en/of de volledige installatie hiervan voor lighttpd niet goed hebt doorlopen.

      Kun je controleren of je dezelfde info krijgt als je onderstaande commando’s invoert:

      /———————————————————-
      Pi@wpnode202:~$ sudo -s
      root@wpnodo202:~# cd /etc/lighttpd/
      root@wpnodo202:/etc/lighttpd# ls -l conf-enabled/
      total 0
      lrwxrwxrwx 1 root root 33 Apr 25 2013 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
      lrwxrwxrwx 1 root root 37 Apr 25 2013 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf
      lrwxrwxrwx 1 root root 35 Apr 30 2013 90-wordpress.conf -> ../conf-available/90-wordpress.conf
      root@wpnodo202:/etc/lighttpd#
      \———————————————————-

      met name deze regel is van belang om PHP onder lighttpd te kunnen gebruiken:

      lrwxrwxrwx 1 root root 37 Apr 25 2013 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf

      Er staat dat 15-fastcgi-php.conf in de conf-enabled/ directory, een symbolic link is naar een bestand met dezelfde naam in de conf-available/ directory.

      Er zijn een hoop mensen die één en ander vanaf mijn posts aan de praat hebben gekregen. Problemen zijn tot nu toe altijd te wijten geweest aan vertikkingen of het overslaan van een stap(je).

      Heb je, na alle installatie de RPi een keer opnieuw opgestart?

      sudo reboot

      If all else fails .. gewoon overnieuw beginnen.

      Vriendelijke groet,

      Willem

  9. Hans Bemelen schreef:

    Hallo Willem,
    na een aantal malen opnieuw te zijn begonnen draait het geheel dus verder gegaan met de nodo software erop te zetten maar helaas ik kom niet ingelogd. Je hebt in je voorbeeld staan van de sql db met Id de user en zijn confirm_code alleen staat er bij mij niets in dat vak. Ik heb dus niet de postfix gebruikt.
    Ik wilde tevens naar error.log in de lighttpd kijken maar daar krijg ik permission denied. Als je er niets mee kunt dan houd het op maar wie weet. Verder de beste wensen voor het nieuw jaar.

    Groetjes
    Hans

    • Hans schreef:

      Willem,

      GELUKT.

      Even zoeken naar het reset commando wat reset is en reboot voor te rebooten, webapp opgestart gegevens ingevuld.
      DIRECT contact lokaal via de RPI.

      Heel hartelijk dank
      Groetjes
      Hans

  10. Jeroen Hooijer schreef:

    Hallo Willem,
    Allereerst geweldig werk wat u heeft gedaan. De uitleg was helder en duidelijk en heb nu ook de Pi ingezet als lokale server om de Nodo Webapp te hosten.
    het werkt geweldig!
    Alleen, waarschijnlijk ben ik nog niet goed op de hoogte, is het ook mogelijk de webinterface van de webapp vanaf extern te bereiken?
    zoals u al aanbeveelde heb ik nu een domeinnaam geregistreerd.
    Ook begreep ik dat het benaderen van de Nodo webapp via internet het één en ander aan veiligheidsrisico’s met zich meebrengt…

    In ieder geval bedankt voor alle energie die hier allemaal inzit!

    met vriendelijke groeten,
    Jeroen

    • Willem Aandewiel schreef:

      Hallo Jeroen,

      Mooi dat je er iets aan hebt gehad.

      Om je Website “van buiten” te kunnen benaderen moet je in je modem opgeven dat “www.<je_domein_naam>” voor poort 80 moet worden doorgestuurd naar het interne IP adres van je RPi.

      Het veiligheidsrisico wordt beperkt voor de benadering van je RPi, daar zou een Cracker zich eventueel toegang voor kunnen verschaffen. Leuk, kan hij je website verstieren … Zet je een backup terug op een SD kaartje en dan ben je weer “in de lucht”. Als je echter andere, belangrijke zaken op, of via, je RPi regelt of als je daar een mail server op hebt draaien, dan zijn de veiligheid risico’s groter.

      • Jeroen Hooijer schreef:

        hallo Willem!
        ik heb het draaiens gekregen, met inderdaad een poort 80 port forward, en ik was vergeten bij de domeinnaam beheerder de domeinnaam te redirecten naar mijn eigen IP.

        Nogmaals bedankt voor uw hulp!

  11. bert schreef:

    Ik heb net de Weezy geinstalleerd, maar kan het zijn dat ie niet direct over ethernet te benaderen is. Ik wou de install headless doen, maar kan dat wel?

    • Willem Aandewiel schreef:

      Hallo Bert,

      Ik werk altijd “headless”. Als je weet wat het IP adres van de RPi is en de SSH daemon is enabled, dan kun je alles doen wat je maar wilt via een SSH sessie.

      Groet,

      Willem

  12. Pieter schreef:

    ik heb nu een website maar ik snap niet wat ik nu moet doen (niet te moeilijk uitleggen want ik ben nog een beetje jong snap je)

  13. pieter schreef:

    Hoi Willem

    Ik wil graag een website maken waar een paar linkjes zitten waarmee ik mijn rspberry op afstand kan besturen

  14. Dit zag ik op een andere site schreef:

    Running a lightweight webserver on the Raspberry Pi (lighttpd).

    Summary of the steps required following the link above.

    Install lighttpd -> sudo apt-get install lighttpd

    Install mysql database (optional) -> sudo apt-get install mysql-server mysql root password will be prompt upon completion of installation

    Install PHP -> sudo apt-get install php5-common php5-cgi php5 php5-mysql

    NOTE it’s important to install in the order listed above. If you try to install php5 without first installing the php5-cgi package then it will install Apache as well, which we don’t want for this light-weight lighttpd server.

    Willem ik kreeg error 0403 en na zoeken op internet zag ik onderstaande installatie volgorde

    Install php mysql libraries -> sudo apt-get install php5-mysql

    Enable lighttpd to handle php -> sudo lighty-enable-mod fastcgi-php followed by reloading lighttpd sudo service lighttpd force-reload

    Set permission for /var/www -> sudo chown www-data:www-data /var/www, then allow group to write to the dir sudo chmod 775 /var/www, followed by adding pi to the www-data group sudo usermod -a -G www-data pi

Reacties zijn gesloten.