Installeer WordPress op een Raspberry Pi

Er zijn vele toepassingen te bedenken om je Raspberry Pi nuttig te maken. Zelf heb ik er voor gekozen om er een WordPress website op te laten draaien. Hieronder laat ik stapsgewijs de daarvoor  benodigde stappen zien. De instructies hieronder worden uitgevoerd op een Raspberry Pi 2 waarop de laatste versie draait van Raspbian (31-01-2015).  Maar deze instructies gelden natuurlijk net zo goed voor een Ubuntu of Debian computer. Hoewel een wifi dongle prima werkt heb ik er voor gekozen om de Raspberry Pi te verbinden met mijn router via een ethernet (eth0) aansluiting.

raspberrypi_2

Voorbereidingen

Maak aantekeningen van je vorderingen. Er worden meerdere users en wachtwoorden gebruikt voor Raspberry Pi, MySQL root, MySQL gebruiker en voor WordPress.  En je moet (voor deze howto) natuurlijk Raspbian hebben geïnstalleerd op je Raspberry Pi. Daarbij is het handig om onder Advanced Options te kiezen voor het aanzetten van de SSH server. Op die manier kan je comfortabel van achter je eigen desktop je server bereiken. Onder mijn desktop (Ubuntu) is het een kwestie van een terminal openen met daarin het volgende commando:

ssh pi@hetipadresvanjeraspberrypi

Dat IP adres is van belang. Je moet ervoor zorgen dat je Raspberry Pi altijd van hetzelfde IP adres wordt voorzien. Normaal gesproken wordt een IP adres uitgedeeld door je DHCP server van je router. Dat is handig maar dat zal echter niet altijd hetzelfde IP adres opleveren. Daarom begin je met het creëren van een statisch IP adres.

Maak een statisch IP adres aan

Log in op je Raspberry Pi

bekijk de uitvoer van:

ifconfig

Je krijgt dan een lap tekst in je terminal te zien. De volgende regels zijn van belang:

eth0  Link encap:Ethernet  HWaddr b8:27:eb:b3:fc:2c
      inet addr:192.168.1.81  Bcast:192.168.1.255  Mask:255.255.255.0

(Gebruik je wifi ipv ethernet? Dan zoek je onderaan naar de regel die begint met wlan0 ipv eth0)

Je hebt straks de uitvoer nodig van inet addr (dat is het huidige IP adres van je Raspberry Pi), Bcast (dat is de Broadcast IP Range) en Mask (subnet Mask adres). Maak daar dus een aantekening van. Maar we zijn er nog niet. We hebben nog een klein beetje meer informatie nodig over het netwerk. Gebruik daarvoor het volgende commando:

netstat -nr

Noteer uit die output ook het Gateway Address en het Destination Address (In het screenshot zijn dat de adressen 192.168.1.1 voor de gateway en 192.168.1.0 voor de Destination)

pi@raspberrypi: ~_034

Met deze gegevens gaan we vervolgens de netwerk configuratie aanpassen door het bestand interfaces in de map /etc/network te veranderen. Daarvoor gebruik je een tekst editor zoals bijv. Nano.

sudo nano /etc/network/interfaces

In de terminal verschijnt nu in de Nano tekst editor de inhoud van dat bestand. Verander nou de regel:

iface eth0 inet dhcp

in

iface eth0 inet static

en plaats meteen daaronder de volgende informatie. Gebruik daarvoor de informatie die je hiervoor zojuist hebt verzameld. Gebruik voor address het IP adres wat je voor je Raspberry Pi wil gebruiken. Dat kan dus ook het IP adres zijn wat al was toegewezen door de DHCP server (het innet addr) Alle andere adressen heb je zojuist ook genoteerd en vul je dienovereenkomstig in. Let op: de doorgestreepte IP adressen zijn dus voorbeelden. Gebruik de informatie die je zelf hebt gevonden.

address 192.168.1.150
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254

Dat was het dus. Je slaat het bestand op door de toetscombinatie CTRL+X en kiest vervolgens voor Yes of Ja om het opslaan te bevestigen. Reboot vervolgens de Raspberry Pi met

sudo reboot

Nou..dat was de start. Nu we een vast IP adres hebben gemaakt kunnen we beginnen met het installeren van Apache (webserver), PHP (scripttaal), MySQL (database) en WordPress.

Installeer Apache webserver op je Raspberry Pi

sudo apt-get install apache2 -y

Installeer PHP op je Raspberry Pi

sudo apt-get install php5 libapache2-mod-php5 -y

Installeer Mysql op je Raspberry Pi

sudo apt-get install mysql-server php5-mysql -y

Je krijgt tijdens het installeren van MySQL de vraag om een wachtwoord te genereren voor het zgn. root account van MySQL. Vul daar dus een uniek wachtwoord in en bewaar dat goed.
We vervolgen deze operatie met het meer veilig maken van je database. Dat doe je met de opdracht:

sudo mysql_secure_installation

Je krijgt dan het verzoek om wederom je root wachtwoord van MySQL in te voeren. Beantwoord daarna de vragen zoals aangegeven in screenshot.

pi@raspberrypi: ~_securemysql

Zo..dat was even hard werken. Maar alle benodigdheden zijn nu bijna allemaal gemaakt. We gaan over tot het downloaden en installeren van WordPress zelf.

Installeer WordPress op je Raspberry Pi

wordpress-logo

Navigeer om te beginnen naar /var/www op je Raspberry Pi. Vanuit je terminal of ssh venster:

cd /var/www
sudo chown pi: .
rm *
wget http://wordpress.org/latest.tar.gz

(let op: in de 2e regel staat een spatie en een punt achter de dubbele punt)

De laatste regel gebruikt wget om een bestand te downloaden met daarin de laatste versie van WordPress. Dit bestand wordt gecomprimeerd gedownload en moet dus eerst worden uitgepakt en daarna moeten we ons ontdoen van de verpakking. Als volgt:

tar xzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz

WordPress is een toonaangevend CMS. Ze zeggen zelf dat 23% van alle websites draaien onder hun systeem. In tegenstelling tot een standaard html website maakt WordPress gebruik van zowel MysQL als PHP. MySQL en PHP zijn al geinstalleerd maar om WordPress te kunnen configureren heb je eerst een database aan te maken. Dat gaat als volgt:

mysql -uroot -pwachtwoord

waarbij ‘p’ staat voor password en ‘wachtwoord’ moet worden vervangen voor het root wachtwoord wat je eerder heb aangemaakt in de MySQL omgeving. Let op, er staat geen spatie tussen -p en wachtwoord. Dankzij dit commando verschijnt er een mysql prompt. Daarin gaan we verder:

mysql> create database wordpress;

Je ziet dat deze opdracht dus wordt afgesloten met een ; Als het goed is verwerkt krijg je een antwoord terug als:

Query OK, 1 row affected (0.00 sec)

Vervolgens gaan we een user aanmaken. Dat gaat met het commando:

GRANT ALL PRIVILEGES ON `wordpress`.* TO `wordpress_user`@`localhost` IDENTIFIED BY 'hetwachtwoordvoordewordpressgebruiker';

Deze opdracht voer je dus nog steeds uit in je MySQL omgeving dus achter de nog openstaande MySQL > prompt. Je maakt voor de gebruiker (wordpress_user) dus een apart wachtwoord aan. Dat wachtwoord plaats je tussen de haakjes ter vervanging van het hetwachtwoordvoordewordpressgebruiker.

Sluit nu de MySQL omgeving af met de toetscombinatie

CTRL+D

Je hebt nu dus een database aangemaakt. De database heet wordpress, de database user heet wordpress_user en het wachtwoord heb je zelf verzonnen. De Database Host is localhost (draait op dezelfde machine als je website straks).

WordPress configureren

Navigeer in je browser naar het IP adres van je Raspberry Pi. (bijv. http://192.168.1.150). Er verschijnt nu een pagina van WordPress. Klik nu op de knop “Create a Configuration File¨ en daarna op “Let’s go!” van de volgende pagina.

Vul nu de informatie in aan de hand van de hierboven vermelde gegevens:

Database Name:      wordpress
User Name:          wordpress_user
Password:           hetwachtwoordvoordewordpressgebruiker
Database Host:      localhost
Table Prefix:       wp_

Er volgt dan een venster waarin de configuratie wordt vertoond maar met een waarschuwing dat het wp-config.php bestand nog niet beschrijfbaar is. Kopieer die tekst naar het klembord en open weer de terminal van je Raspberry Pi (of het SSH venster van je desktop) en creëer handmatig dat bestand en kopieer daarin de inhoud uit het venster. Sluit je browser niet af!

wp-config (1)

nano wp-config.php

en kopieer (CTRL+v) de gekopieerde tekst in dat bestand. Sluit Nano af met CTRL+X en bevestig met Yes of Ja en Enter.

Als je nu weer kijkt in je browser en daarin klikt op “Run the Install” knop krijg je een welkomstscherm. Vul daarin de gegevens in. Je moet dus een aparte gebruiker aanmaken voor wordpress. (Ja…je hebt als gebruiker op de Pi ook al een gebruiker (root) aangemaakt voor de MySQL database en nu wéér een gebruiker voor WordPress).

wp-info

Tot slot klik je op de knop “Install WordPress” en logt vervolgens in op het account wat je zojuist hebt aangemaakt in WordPress. Daarvoor navigeer je naar het IPadres van jouw Raspberry Pi gevolgd met /wp-login.php dus bijv. http://192.168.1.150/wp-login.php (doorgestreept, want je gebruikt daar je eigen IP adres).

Gefeliciteerd: je hebt Apache webserver draaien met PHP en MySQL en daarop draait het meest succesvolle Opensource CMS: WordPress.

In een volgend artikel laat ik zien hoe je mooie permalinks kunt maken, maak ik schrijfrechten handiger  en wordt een FTP server geïnstalleerd en geconfigureerd.

(bron: Setting up an apache web server on a raspberry Pi & WordPress) Ook heb ik goede tips ontvangen vanuit de  Nederlandse Linux Gebruikers Groep op Facebook.

Er komen (on)regelmatig ook vervolg stukjes op dit bericht. Hieronder een verwijzing:

19 gedachten over “Installeer WordPress op een Raspberry Pi”

  1. Heldere, duidelijk uitleg! WordPress geïnstalleerd en doorverwezen (portforwarding) naar mijn .nl domeinnaam. Nu nog mijn eigen site bouwen…
    Nogmaals bedankt!

  2. ik krijg bij wordpress configuren krijg ik niet een site van wordpress maar apache2
    wat heb ik fout gedaan

    gr t de fijter

  3. Hallo Tobi,

    Als je in de terminal alle ingevoerde commando’s vergelijkt met de instructies dan moet er ergens een verschil merkbaar zijn. Je kan de ingegeven instructies teruglezen door met je cursortoets omhoog te scrollen. Waar het is foutgegaan kan ik natuurlijk hier niet vaststellen.

  4. Hallo,
    Ik wil mijn raspberry gebruiken om een wordpress op te draaien. Dit wil ik gebruiken voor een project op school. Ik wil dus mijn wordpress pagina benaderen terwijl ik op school ben. Is dit mogelijk en is het thuisnetwerk hier dan nog wel veilig? We hebben een nas op het netwerk maar die is niet op zichzelf beveiligd, Kunt u me hier mee helpen?

    Alvast bedankt

    • Hallo Robert, dat is zonder problemen te regelen. Als wordpress op je Pi draait kan je het voor de buitenwereld open zetten door in je router je portforwarding in te stellen. Hoe dat moet is afhankelijk van je router. Standaard is het zo dat je verkeer op poort 80 toewijst aan het IP adres van je Raspberry Pi.

      Er spelen dan een paar zaken mee. Ten eerste moet je ervoor zorgen dat je PI werkt onder een vast IP adres. Dat staat overigens beschreven in dit artikel. Je moet je ook beseffen dat een bezoeker je website moet bezoeken door jouw externe IP adres te gebruiken. Dus het adres wat je van je provider hebt gekregen. Sommige providers geven je een vast IP adres en zelfs een hostname (xs4all), bij andere providers krijg je een dynamisch IP adres. Dat wil dus zeggen dat je soms een ander extern IP adres krijgt toegewezen. Dat kan je overigens oplossen door gebruik te maken van diensten zoals dyndns. Je kan daarnaast ook een domeinnaam registreren en in de dns laten regelen dat die domeinnaam verwijst naar jouw externe IP adres (dus het adres van jouw internetaansluiting. Dan hoeven bezoekers geen IP adres in te tikken. Een domeinnaam maakt het ze dus een stuk eenvoudiger. Als je dan je portforwarding goed hebt staan komt die keurig uit op jouw website op die Raspberry Pi.

      • Ik ben bezig geweest met het installeren van alles. Ik had helaas 1 probleem. Toen ik wordpress wilde installeren gaf hij aan dat er niet genoeg opslag vrij was om wordpress te installeren. Ik begon met een kompleet lege micro SD van 8GB. Heb ik een grotere nodig of is er een andere oplossing om dit probleem te verhelpen?

        Alvast bedankt.

          • En als ik /ect/network/interfaces wil veranderen kan dat niet. Hij geeft dan de error: can’t open file to write. Ik heb deze stap overgeslagen om te kijken of ik later zonder zou kunnen. Is deze stap cruciaal? en wat kan ik hier tegen doen?

            • Het is een root bestand dus je moet editen met een sudo oftewel: sudo nano /etc/network/interfaces Als je geen toestemming krijgt om te schrijven dan edit je dat bestand zonder rootrechten en dat kan inderdaad niet.

              (Het sudo-commando is een programma voor op UNIX gebaseerde besturingssystemen dat gebruikers in staat stelt om programma’s uit te voeren met speciale privileges, meestal met rootrechten. Het is de afkorting van super user do.)

              De reden waarom je dit moet doen is omdat je dan ervoor zorgt dat je raspberry Pi altijd met hetzelfde interne IP adres is verbonden aan je router. Is het noodzakelijk: Ja. Kan het ook anders? Mogelijk, want in sommige routers kan je ook een dchp ip adres vast koppelen aan een mac adres van een device. Als je dat kan doen kan deze stap worden overgeslagen.

              • Zodra ik dat sudo nano gebruik en het bestand open staat er helemaal niks in. Dit was later ook het geval voor de php website. Als ik het interfaces bestand open in de text editor staat er wel iets in maar dat kan ik niet oplaan

                • Je werkt in een terminal neem ik aan, dus een zwart scherm met knipperende prompt? Daarvoor staat een soort dollarteken, het bewijs dat je als gebruiker bent ingelogd.

                  Kijk eerst eens wat er nu staat in dat bestand:

                  Dat doe je met het commando: cat /etc/network/interfaces
                  Dan zie je in je terminal de inhoud van dat bestand.

                  Dat ga je bewerken met een editor. De editor is nano. Ten overvloede:

                  Met sudo geef je jezelf rootrechten
                  nano is de editor
                  /etc/network/interfaces is de lokatie (/etc/network) en het bestand (interfaces) wat bewerkt moet worden.

                  Dus na het commando sudo nano /etc/network/interfaces geef je eerst je wachtwoord op en dan opent de editor zich met de inhoud van het bestand. Let op: de slashes moeten ook ingetikt worden.

  5. Hallo,

    Ik kom niet verder dan de stap dat ik naar de pagina moet gaan waar mijn Raspberry op draait.
    Dan kom ik weer bij de Apache2 Debian Default Page uit.

    Kunt u mij helpen?

    • Staar er soms ook nog een index.html? Soms krijgt die voorrang boven een index.php. De .html is de webpagina waar je naar kijkt. Als je deze handleiding hebt gevolgd moet er ook een index.php staan.

Reacties zijn gesloten.