WSL

PHP, Apache, MySQL und WordPress auf Windows mit WSL Ubuntu installieren

  • dani

dani

6 min read
Photo by Gabriel Heinzer / Unsplash

In einem vorherigen Artikel habe ich beschrieben, wie man WSL unter Windows installiert und wie man damit auf einfache Weise lokale Entwicklungsumgebungen auf einem Windows-System erstellen kann. Wenn du WSL noch nicht kennst und es noch nicht eingerichtet hast, lese den vorherigen Artikel:

Linux mit WSL auf Windows installieren
Installation einer Linux-Distribution (z. B. Ubuntu) auf einem Windows-Computer mit Windows Subsystems for Linux (WSL).

In diesem Artikel erkläre ich, wie man eine lokale Web-Entwicklungsumgebung mit PHP, dem Apache Webserver und der MySQL-Datenbank für z.B. WordPress in einem Ubuntu-Subsystem unter Windows mit WSL einrichtet.

Bei einer Neuinstallation eines Ubuntu-Subsystems solltest du als erstes jegliche Software mit den folgenden Befehlen für Aptitude (apt) aktualisieren (falls du das noch nicht getan hast):

sudo apt update
sudo apt upgrade

Beginnen wir zunächst mit der Einrichtung des Apache Webservers, bevor wir zu PHP, der MySQL-Datenbank und dem WordPress-Blogsystem übergehen.

Installation des Apache Webservers

Die Installation des Apache Webservers ist der einfachste Teil. Wir installieren ihn einfach aus dem standardmäßigen Software-Repository von Aptitude:

sudo apt install apache2

Als nächstes aktivieren wir das Modul mod_rewrite, das für das Umschreiben von URLs verwendet wird:

sudo a2enmod rewrite

Wir installieren noch keine weiteren Mods. Zuvor installieren wir PHP und fügen anschließend die Mods hinzu.

Installation von PHP

Die Installation von PHP ist nicht so einfach wie die Installation von Apache. Das Problem ist, dass WSL normalerweise Ubuntu-Versionen mit Langzeitunterstützung bzw. Long Term Support (LTS) verwendet. Daher wird die neueste LTS-Version von Ubuntu installiert, nämlich Ubuntu 20.04. Die 20 steht für das Jahr 2020 und 04 für den Monat April, also ist diese Version schon etwas veraltet (zum Zeitpunkt des Schreibens dieses Beitrags). Ein großer Nachteil für uns ist, dass Ubuntu 20.04 mit PHP 7.4 gebündelt ist (wiederum zum Zeitpunkt des Schreibens dieses Beitrags). Wenn du also sudo apt install php ausführst, wird die PHP-Version aus dem Standard-Repository von Aptitude installiert, also PHP 7.4.

Wir wollen diese Version nicht. Wir wollen mit PHP 8 weitermachen. Technisch gesehen kann insbesondere WordPress gut mit PHP 7 funktionieren – zumindest ohne Plugins. Aber vielleicht willst du PHP auch für andere Software verwenden, also entscheide dich besser von Anfang an für PHP 8.

Um PHP 8 zu installieren, müssen wir ein neues Software-Repository hinzufügen und die PHP-Pakete explizit in Version 8 installieren. Wir könnten die Version auch weglassen, aber dann würden wir aber wieder auf die Installation von PHP 7 aus dem Standard-Repository zurückfallen. Verwende die folgenden Befehle auf dem Windows-Terminal im Ubuntu-System, um PHP 8.1 zu installieren:

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.1

Prüfe mit dem Befehl php --version dass PHP installiert ist. Die Ausgabe sollte ähnlich zu diesem aussehen:

daniel@DESKTOP:~$ php --version
PHP 8.1.9 (cli) (built: Aug 15 2022 09:39:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.9, Copyright (c), by Zend Technologies

Als Nächstes installieren wir gängige PHP-Erweiterungen (je nachdem welche Bibliotheken in deinem PHP-Code verwendet werden, musst du möglicherweise weitere Erweiterungen hinzufügen):

sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-redis php8.1-intl

Schließlich installieren wir die Apache PHP 8.1 Mod, deaktivieren die PHP 7.4 Mod und aktivieren die für PHP 8.1:

sudo apt install libapache2-mod-php8.1
sudo a2dismod php7.4
sudo a2enmod php8.1

Um alle Änderungen zu übernehmen, starten wir Apache neu:

sudo service apache2 restart

Dein Apache sollte nun auf die URL http://localhost:80 reagieren. Du kannst testen, ob PHP funktioniert, indem du im Verzeichnis /var/www/html/ eine Datei index.php mit dem Inhalt <? phpinfo(); ?> ablegst. Sie sollte Informationen über das installierte PHP ausgeben, d.h. die Versionsnummer und die aktivierten Erweiterungen.

Fahren wir mit der Installation der MySQL-Datenbank fort, bevor wir schließlich das WordPress-Blogsystem in unserer lokalen Umgebung installieren.

Installation der MySQL-Datenbank

Dieser Teil ist einfacher als der vorherige, wir installieren einfach MySQL 8 aus dem Standard-Repository:

sudo apt install mysql-server

Prüfe nach Beendigung des Befehls, ob MySQL tatsächlich installiert ist:

mysql --version

Dies sollte die installierte Version ausgeben, etwa mysql  Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu)). Als nächstes, starte den MySQL-Datenbankserver:

sudo /etc/init.d/mysql start

Als nächstes erhöhst du die Sicherheit der MySQL-Installation mit dem folgenden Skript:

sudo mysql_secure_installation

Das skript führt dich durch einige Fragen zur Sicherheit deiner Installation.

Für den Zugriff auf deine Datenbank gibt es drei Möglichkeiten:

  1. Du kannst direkt von der Ubuntu-Befehlszeile im Windows-Terminal mit dem Befehl sudo mysql auf die Datenbank zugreifen. Dadurch wird die interaktive Eingabe gestartet, in der du SQL-Anweisungen wie SHOW DATABASES; zur Anzeige aller verfügbaren Datenbanken oder SELECT * FROM ... zur Abfrage von Daten eingeben kannst. Das Hinzufügen neuer Datenbanken oder Benutzer ist möglicherweise nicht so einfach wie bei der Verwendung einer grafischen Oberfläche, weshalb wir uns andere Optionen ansehen.
  2. Eine andere Möglichkeit besteht darin, PHPMyAdmin auf dem Linux-Rechner zu installieren, auf das du dann über den gerade installierten Apache Webserver mit einem beliebigen Browser auf deinem Windows-System zugreifen kannst. Dafür kann eine Konfiguration eines virtuellen Hosts im Apache erforderlich sein.
  3. Die einfachste Möglichkeit ist die Installation der MySQL-Workbench als eigenständige Software auf deinem Windows-System. Mit der Workbench stellst du einfach eine Verbindung zur Datenbank auf localhost:3306 mit dem Benutzer root her. Die Software bietet eine funktionsreiche grafische Oberfläche zur Datenbank, in der es einfach ist z.B. neue Benutzer oder neue Datenbanken anzulegen.

Es empfiehlt sich, für jede Anwendung, die die Datenbank zum Speichern von Daten verwendet, einen eigenen Benutzer mit einer eigenen Datenbank anzulegen. Dieser Benutzer sollte nur Zugriffsrechte für seine Datenbank haben. Wenn eine Anwendung von einer Sicherheitslücke betroffen ist und die Anmeldedaten der Datenbank preisgibt, kann der Schaden so auf die Datenbank der Anwendung beschränkt werden. In einer lokalen Entwicklungsumgebung ist Sicherheit vielleicht kein großes Problem. Die Trennung ist jedoch auch nützlich, wenn du eine Anwendung löschst und ihre Datenbank ebenfalls in einem Rutsch löschen willst. Lege also einen neuen Datenbankbenutzer mit einer eigenen Datenbank an, bevor wir im nächsten Abschnitt mit der Installation von WordPress fortfahren.

Installation von WordPress

Auf dem Ubuntu-System verwenden wir die WordPress-Befehlszeilenschnittstelle (CLI), um eine neue WordPress-Instanz zu installieren. Zu diesem Zweck laden wir die CLI über das Terminal herunter:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Als nächstes prüfen wir, ob das funktioniert:

php wp-cli.phar --info

Das sollte in etwas das Folgende ausgeben:

daniel@DESKTOP:~$ php wp-cli.phar --info
OS:     Linux 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64
Shell:  /bin/bash
PHP binary:     /usr/bin/php8.1
PHP version:    8.1.9
php.ini used:   /etc/php/8.1/cli/php.ini
MySQL binary:   /usr/bin/mysql
MySQL version:  mysql  Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
SQL modes:
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /home/daniel
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.6.0

Als Nächstes verschieben wir das CLI-Tool aus dem Home-Verzeichnis unseres Benutzers in den ausführbaren Pfad des Systems:

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Wir prüfen erneut, ob es funktioniert:

wp --info

Schließlich erstellen wir die WordPress-Instanz in einem neuen Verzeichnis namens wordpress in /var/www/html/:

cd /var/www/html/
mkdir wordpress
cd wordpress
wp core download

Dadurch wird die neueste WordPress-Version in das Verzeichnis heruntergeladen, die Ausgabe sollte wie folgt aussehen:

daniel@DESKTOP:/var/www/html/wordpress$ wp core download
Downloading WordPress 6.0.2 (en_US)...
md5 hash verified: 03b5aeda1b4f26178015befd66a65145
Success: WordPress downloaded.

Deine WordPress-Instanz ist nun bereit, konfiguriert zu werden. Du kannst WordPress mit der Web-Installationsroutine konfigurieren, indem du in deinem Browser auf http://localhost:80/wordpress zugreifst. Oder du gehst mit der WP-CLI vor. Lege wie zuvor beschrieben einen neuen Datenbankbenutzer für deine MySQL-Datenbank an und erstellen dann eine neue wp-config.php für dein WordPress mit den Anmeldedaten für den Benutzer und die Datenbank, die du im letzten Abschnitt erstellt hast:

wp config create --dbname=wordpress --dbuser=wpuser --prompt=wpuserpass

Führe die Datenbank-Skripte aus:

wp db create

Führe das Installationsskript aus:

wp core install --url=localhost/wordpress --title="My cool blog" --admin_user=wpcli --admin_password=wpcli --admin_email=info@wp-cli.org

Das war's! Du habst erfolgreich eine lokale WordPress-Entwicklungsumgebung für die Entwicklung von Themes oder Plugins installiert.