WordPress-Server auf einem Raspberry Pi

In diesem Artikel wird die komplette Installation eines Raspberry Pi als Webserver mit WordPress vorgestellt. Als Einsatzszenario lege ich einen üblichen Home-Router (Fritzbox) und zur Administration ein normales Windows-Notebook zugrunde.
Benötigt werden neben dem RasPi noch eine MicroSD-Karte (z.B. 16GB), das Netzteil und ein Netzwerkkabel zum Anschluss an die Fritzbox.

Noobs ist sicherlich die einfachste Möglichkeit das Image auf die Speicherkarte zu laden, möchte man jedoch eine größere SD-Karte verwenden (32,64 oder 128GB z.B.) kann bei einer Noobs Installation das Filesystem ggfls. nicht erweitert werden. In solchen Fällen sollte das Raspbian-Image mit einem Tool wie Balena Etcher installiert werden.
(Achtung: nach der Installation ist die Tastaturbelegung zunächst englisch)


Das benötigte Installationsimage kan bei raspberrypi.org geladen werden. In diesem Beispiel wird Noobs, ein etwa 2,4GB großes Paket geladen. Noobs umfasst neben Paspbian noch weitere Installationen, so dass es auch anderweitig weiter verwendet werden kann.


Nach dem Download wird die heruntergeladene Datei entpackt.


Weiter geht es in der Datenträgerverwaltung. Hier wird die für den RasPi vorgesehene SD-Karte partitioniert.
Nachdem der Datenträger fertig ist, werden die entpackten Noobs-Dateien auf die karte kopiert. Diese wird dann in den RasPi eingesetzt, der Rechner angeschlossen und dann kann die eigentliche Installation beginnen …


Nach dem Boot kann im intialen Installationsdialog das Betriebssystem und die Installationssprache gewählt werden.
Die Installation benötigt einige Minuten um durchzulaufen, dann folgt ein Reboot und das Zielsystem wird gestartet.

Um das Betriebssystem zu konfigurieren sind nur noch wenige Schritte erforderlich. Nach dem Einloggen mit dem Default-User ‘pi’ und dem Initial-Passwort ‘raspberry’ befindet man sich auf dem Betriebssystem-Prompt und kann die Systemaktualisierung starten.

sudo apt-get update
und
sudo apt-get upgrade

Mit ‘update’ werden die Repositories gelesen und die zur Verfügung stehenden Pakete eingelesen. ‘upgrade’ startet dann die eigentliche Aktualisierung. Steht ein Versionswechsel an , wird stattdessen ‘sudo apt-get dist-upgrade’ verwendet.


Wenn das System dann auf aktuellem Stand ist, wird mit

sudo raspi-config

die Grundkonfiguration abgeschlossen. Zunächst wird das Tool aktualisiert, danach werden das Passwort und unter Advanced Options -> Expand Filesystem geändert.
Ggfls. können noch der Overscan und der Memory-Split angepasst werden.
Nach einem Reboot kann es mit dem Einrichten der Dienste weiter gehen.

Ab jetzt ist der RasPi auch per ssh erreichbar. Dazu kann das Programm PuTTY genutzt werden.

Installation des Web-Servers erfolgt mittels

sudo apt-get install apache2 -y
sudo service apache2 restart
ifconfig


Der zweite Befehl startet Apache und der RasPi kann die initiale Site im Browser anzeigen (http://’IP-des-Raspi’). Sollte ifconfig nicht funktionieren, kann

ip address show

eingesetzt werden um die IP-Adresse des Raspberry herauszufinden.

Um WordPress laufen zu lassen, wird die Skriptsprache PHP benötigt. Diese muss aucch um die Apache-Module erweitert werden, damit PHP und Webserver zusammen arbeiten können.

sudo apt-get install php -y
sudo apt-get install php7.3-bcmath php7.3-imagick php7.3-curl php7.3-gd
sudo service apache2 restart


Zum Testen kann im Verzeichnis /var/www/html die bestehende Datei index.html gelöscht und eine neue index.php mit dem Inhalt

<?php
phpinfo();
?>


erstellt werden.
Die Befehle dazu sind:

cd /var/www/html
ls
sudo rm index.html
sudo nano index.php
ls


Wenn die Datei ersellt und gespeichert ist, sollte das Aktualisieren des Browsers Informationen zur PHP-Installation liefern.

WordPress speivhert seine Inhalte sowohl im Filesystem, wie auch in einer Datenbank. Daher muss nun die mariaDB installiert und konfiguriert werden.

sudo apt-get install mariadb-server-10.0 php-mysql -y
sudo service apache2 restart


Die Grundkonfiguration erfolgt mittels

sudo mysql_secure_installation

Die Bildschirmausgaben finden sich im grau unterlegten nächsten Absatz.

pi@raspberrypi:/var/www/html $ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we’ll need the current password for the root user. If you’ve just installed MariaDB, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.

Enter current password for root (enter for none): OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer ‘n’.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!

Reloading privilege tables.. … Success!

By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
Remove anonymous users? [Y/n] y … Success!

Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] … Success!

By default, MariaDB comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
Remove test database and access to it? [Y/n]
Dropping test database… … Success!
Removing privileges on test database… … Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
Reload privilege tables now? [Y/n] … Success!

Cleaning up… All done! If you’ve completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!

Nun sind alle erforderlichen Komponenten installiert und die eigentliche WordPressinstallation kann beginnen.
Diese besteht auf Systemebene aus drei Schritten:
– Anlegen der Datenbank
– Herunterladen und Entpacken der Software
– Konfiguration des Webservers

Zuerst also das Anlegen der Datenbank.

sudo mysql -uroot -p
create database wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO ‘root’@’localhost’ IDENTIFIED BY ‘Passwort_von_oben’;
FLUSH PRIVILEGES;

Mit CTRL + D kann das DB-Tool dann wieder verlassen werden.

Damit ist die WordPress-DB angelegt und die Installation der Software kann erfolgen.

WordPress kann direkt in das Installationsverzeichnis geladen werden.
Dazu wechselt man zunächst ins HTML-Verzeichnis und löscht alle dort evtl. vorhandenen Dateien.
Dann wird die Software geladen und entpackt. Dabei wird das Verzeichnis ‘wordpress’ erstellt, so dass ale darin enthaltenen Dateien eine Ebene höher kopiert werden müssen. Danach werden das Verzeichnis ‘wordpress’ und ZIP-File ‘latest.tar.gz’ gelöscht und die Zugriffsrechte so angepasst, dass der Webserver sie verarbeiten kann.

cd /var/www/html
sudo rm *
sudo wget http://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz

sudo chown -R www-data: .

Wenn das geschehen ist folgt Schritt 3 – die Endkonfiguration des Webservers.
Zuerst muss das Apache-Modul rewrite aktiviert werden, dann wird die Conf-Datei editiert.

sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/000-default.conf


In der Datei werden folgende Zeilen ergänzt:

Erste Zeile:
<Directory “/var/www/html”>
AllowOverride All
</Directory>


Die selben Zeilen werden auch im Abschnitt <VirtualHost *:80> zugefügt und die Datei gespeichert und verlassen.
Damit die Änderungen aktiv werden, wird Apache neu gestartet

sudo service apache2 restart

Damit sind die Arbeiten auf Systemebene beendet.

Jetzt kann im Browser der frisch installierte Server aufgerufen und die Betriebssprache gewählt werden.



Die folgenden Schritte definieren dann noch die DB-Verbindung sowie den Admin-User. Danach kann man sich dann anmelden und direkt mit dem Bloggen beginnen.

Wenn die neue Site auch vom Internet aus erreicht werden soll, muss (sollte) der RasP-Server eine feste IP innerhalb des LAN bekomen und das Portforwarding auf dem Router muss aktiv sein, damit Anfragen auf TCP Port 80 (also http) auch durchgereicht werden.
Die Adressreservierung in einer Fritzbox findet sich unter Heimnetz-> Netzwerk. Hier kann man dem Server eine IP zuordnen. Wichtig ist das setzen der Option ‘Diesem Netwerkgerät immer die gleiche IPv4 Adresse zuweisen.’.



Ist die Adresse zugewiesen, kann das Portforwarding eingerichtet werden.



Diese Funktion ist unter Internet->Freigaben zu finden. Hier wird der RasPi ausgewählt und dann mit dem Button neue Freigabe der HTTP-Server eingerichtet.
[Bitte keinesfalls einen Exposed Host aktivieren!]
Nun muss nur noch alles gespeichert werden und …

Fertig!


Happy Blogging!