#0 Einführung in Docker und WordPress

Eine kurze Einführung zu Docker und WordPress sowie die darunterliegenden Services und wie sie miteinander interagieren.

 

1. Was ist Docker?

KubeCon and CloudNativeCon Europe 2018 - Linux Foundation ...

Docker ist eine Open Source Software die genutzt wird um Software Abhängigkeiten in einen Container zu bündeln. Container könnt ihr euch vorstellen als eine leichtgewichtige Version einer virtuellen Maschine(VM) die sehr sehr schnell hoch fahrbar ist. Es gibt noch viele besondere Eigenheiten, aber  für unser Verständnis wird dies reichen.

Wenn der Container heruntergefahren wird, werden alle Daten gelöscht und bei der Neuinstantiierung eines Containers wird der Ausgangszustand wieder hergestellt – man spricht daher auch von Zustandslosigkeit.

2. Was ist WordPress ?Wordpress - Free social media icons

WordPress it ein Open-Source Content Management System mit einer sehr großen Community. Es gibt eine große Auswahl an Vorlagen um darauf aufbauend eigene Seiten zu erstellen, sei es ein Blog, Webseite oder E-Commerce Shop. Auch ohne vorherige Programmierkenntnisse können durch Plugins Funktionalitäten erweitert werden. Sollte auf dem WordPress marketplace doch kein passendes Template oder Plugin vorhanden sein, ist es auch möglich, eigene zu erstellen und diese zu teilen.

3. Was steckt hinter WordPress ?

Um WordPress zu nutzen wird ein Webserver benötigt, welcher die Skriptsprache PHP “verstehen kann” und eine Datenbank, um eingegebene Daten zu speichern.

3.1. Caddy als Webserver

Webseiten sind eigentlich nur Dateien auf einem anderem Computer welche noch einmal vorverarbeitet werden um auf dem Empfängerbildschirm schön aussehen zu lassen. Der Webserver ist dafür zuständig bei einer Anfrage mit den korrekten Dateien zu antworten. Sehr bekannte Webserver sind hierbei Apache Webserver und NGINX. Jedoch ist Caddy als weniger bekannte  Alternative trotzdem nicht zu unterschätzen. Es ist ein leichtgewichtiger Webserver mit integrierter automatischer Erzeugung von TLS Zertifikaten durch Let’s Encrypt und ermöglicht eine einfache Konfiguration über ein “Caddyfile”. Es kann unter caddyserver.com/ heruntergeladen werden.

3.2. MySQL und MariaDB als Datenbank

WordPress speichert nicht jede abzurufende Seite als einzelne Datei. Vielmehr ist es so, dass jeder Inhalt eines Blog Post, Webseite oder gar Kategorien-Tag in einer Datenbank abgespeichert werden. WordPress nutzt dann PHP um die Datenbank abzufragen und das Ergebnis auf der Webseiten Vorlage (Template) auszugeben, weshelb es auch als Content Management System gilt. Es unterstützt offiziell das Open Source Datenbankmanagementsystem MySQL. Jedoch kann auch MariaDB als Ersatz für MySQL genutzt werden, da es ursprünglich aus dem Quellcode von MySQL heraus entwickelt wurde. Für einen tieferen Einblick würde ich auf folgenden Blog verweisen blog.panoply.io.

3.3. PHP-FPM PHP,Free source code for the taking. Over five million ...

PHP ist eine Skriptsprache und ein Modul, welches vom Server aufgerufen wird um serverseitige Skripte zu übersetzen und die Ausgabe dem Clienten zu übertragen. Normallerweise würde das PHP Modul sich in der gleichen Umgebung befinden wie der Webserver. Im unserem Fall benutzen wir jedoch PHP-FPM welches ein eigenständiger Server mitsamt dem PHP Modul ist. Der eigentliche Webserver kann nun PHP Anfragen an das PHP-FPM Modul weiterleiten. Dies bringt den Vorteil einer Skalierung mit, wenn sich beispielsweise PHP Modul und Webserver auf unterschiedlichen Raspberry Pis befinden würden. In unserem Fall ist es eine nette Übung dies zu trennen und ist hilfreich, wenn wir nur unseren Server oder nur unsere PHP Version updaten wollen. Weiterführende Informationen zu PHP-FPM unter hostek.com.

4. Wichtige Dateien unserer WordPress Intallation

Wir haben unsere Services definiert. An dieser Stelle möchte ich explizit auch noch einmal darauf hinweisen, dass Container zustandslos sind – daher: bei Abschaltung werden unsere Daten gelöscht. Um die WordPress relevanten Daten zu speichern müssen wir diese identifizieren und auf unserem Host System binden. Dazu verbinden wir bestimmte Ordner von unserem Host System mit dem des Containers. Wenn nun Dateien in diesem Ordner gespeichert werden, werden sie auf dem Host System gepseichert. Wichtige Dateien sind Folgende:

    • Datenbank spezifische Dateien
    • die WordPress Installation an sich, mit Plugins, Templates, etc.
    • die Caddy Webserver Konfiguration
    • die TLS Zertifikate die durch Let’s Encrypt erstellt werden und uns HTTPS erlauben

5. Der Raspberry PiRaspberry Pi Icon - Free Download at Icons8

Der Raspberry Pi ist ein leistungsstarker kleiner Mini-Computer. Der größte Unterschied zwischem ihm und herkömmlichen Computern ist, dass der Prozessor eine andere Architektur besitzt und Computerbefehle anders entgegennimmt. Normalerweise ist dies kein Problem, da viele Anbieter ihre Software auch schon für den Raspberry Pi bereitstellen. Wir wollen jedoch mit Docker arbeiten welches wiederum mit Images arbeitet. Images die auf Intel Prozessoren kompiliert wurden und laufen, werden durch die anders übersetzten Befehle nicht auf dem ARM Prozessor unseres Raspberry Pi’s laufen. Das bedeutet, dass wir explizit nach ARM Images ausschau halten müssen (oder uns im Zweifel ein Image auf unserem Raspberry Pi noch einmal anhand des Rezeptes neu aufbauen müssen). Dies erwies sich zum Teil als problematisch, da ich beispielsweise kein MySQL v7 Image für die ARM Architektur gefunden habe und daher auf MariaDB umschwenken musste.

>>>weiter: #1 Installation von WordPress auf einem Raspberry Pi mit Hilfe von Docker-Compose in unter 10 Minuten

Kommentar verfassen

Your email address will not be published.