Apache, MySQL und PHP in Subsystem für Linux 2 (WSL2) installieren

    Distributionen für Windows Subsystem for LinuxDas in Windows 10 2004 ent­haltene Sub­system for Linux 2 (WSL2) umfasst einen eigenen Linux-Kernel und kann zahl­reiche Programme für das Open-Source-OS nativ aus­führen. Daher bietet es sich etwa an, diese Um­gebung für die Web-Entwicklung zu nutzen und dort Apache, MySQL und PHP zu instal­lieren.

    Um einen LAMP-Stack unter Windows zu betreiben, kann man Linux natürlich in einer virtuellen Maschine installieren. Darüber hinaus gibt es Portierungen von Apache, PHP und MySQL bzw. MariaDB für Windows, so dass man sie etwa mittels XAMPP auch dort einrichten kann.

    Vorteile von LAMP in WSL

    Im Vergleich zu Linux in einer VM bietet WSL2 eine wesentlich engere Integration mit Windows 10. So kann man aus der bash auch Windows-Anwendungen starten oder man kann mit dem Explorer durch das Linux-Dateisystem navigieren.

    Linux-Shell aus dem Datei-Explorer starten

    Interessant ist auch, dass sich Linux-Services von Windows aus über localhost ansprechen lassen, etwa wenn man eine Web-Anwendung unter Linux ausführt und sie im Browser unter Windows anzeigen möchte.

    Die Windows-Portierungen der LAMP-Komponenten sind nicht ideal, wenn man eine Web-Anwendung lokal entwickelt, aber die produktive Umgebung dann unter Linux läuft. Auch hier erweist sich WSL2 als guter Kompromiss, weil es ein natives Linux in der vertrauten Windows-Umgebung bereit­stellt.

    Vorgehen unter Ubuntu

    Microsoft bietet für WSL2 mehrere Linux-Distributionen zur Auswahl an, die man über den Microsoft Store installieren kann, sobald man das Subsystem als Windows-Feature aktiviert hat (siehe dazu: Subsystem for Linux 2 (WSL 2) in Windows 10 2004 und Server Preview installieren).

    Diese Anleitung zeigt die Einrichtung eines LAMP-Stacks anhand von Ubuntu, das aktuell in den Versionen 18.04 und 20.04 vorliegt. Nach dem ersten Start und dem Festlegen des root-Passworts gibt man zuerst diese Kommandos ein, um anstehende Updates einzuspielen:

    sudo apt update
    sudo apt upgrade

    Das frisch installierte Ubuntu fordert dazu auf, das System auf verfügbare Updates zu prüfen.

    Anschließend kann man sich an die Installation von Apache, MySQL und PHP machen.

    Installation von lamp-server ausführen

    Einige Anleitungen im Web übergeben dazu die Namen sämtlicher Komponenten an apt-get. Einfacher geht es, wenn man dafür das Meta-Package lamp-server nutzt, auch wenn man dabei nicht bis ins Detail die Kontrolle über die Installation hat:

    sudo apt-get install lamp-server^

    Das Caret nach lamp-server ist erforderlich und kennzeichnet dieses als Meta-Package.

    Meta-Package für den LAMP-Server installieren

    Während der gesamte Vorgang unter Ubuntu 18.04 ohne Unterbrechung durchläuft, scheitert in der Version 20.04 die Installation von MySQL 8.0 (Ubuntu 18.04 nutzt standardmäßig MySQL 5.7). Dabei erscheint die Fehlermeldung:

    Errors were encountered while processing: mysql-server-8.0
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    Nutzt man in WSL2 die Distribution Ubuntu 20.04, dann scheitert die Installation von MySQL 8.0

    Verschiedene Foren widmen sich diesem Problem, aber im Moment scheint es dafür keine Lösung zu geben. Man kann es bloß umgehen, indem man die installierten MySQL-Komponenten entfernt und danach als Alternative MariaDB einrichtet:

    sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

    sudo apt install mariadb-server

    Apache anpassen

    Wenn man nach erfolgreicher Installation zuerst den Apache-Server startet, dann wirft dieser folgende Warnung aus:

    (92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT

    Beim ersten Start gibt der Web-Server eine Warnung aus, die man durch Anpassen der Konfiguration beseitigt.

    Daher sollte man vorher die Konfigurations­datei mit

    sudo vi /etc/apache2/apache2.conf

    öffnen und dort die Zeilen

    AcceptFilter http none
    AcceptFilter https none

    einfügen.

    Konfiguration für Apache anpassen, um die Warnung beim Start zu vermeiden

    Nun startet man Apache mit

    sudo service apache2 start

    Beim ersten Mal meldet sich die Windows-Firewall, in der man die Kommunikation von apache2 zulassen muss.

    Firewall-Ausnahme für den Apache-Server einrichten

    Funktionsfähigkeit von PHP prüfen

    Im nächsten Schritt empfiehlt es sich, die korrekte Funktion von PHP zu testen (Ubuntu 20.04 nutzt per Voreinstellung PHP 7.4, Ubuntu 18.04 die Version 7.2). Dazu legt man unter /var/www/html eine Datei mit dem Namen phpinfo.php an und fügt folgenden Inhalt ein:

    <?php
    phpinfo();
    ?>

    Über

    http://localhost/phpinfo.php

    sollten sich die Informationen über das installierte PHP anzeigen lassen.

    Informationen zu PHP ausgeben, um seine Funktionstüchtigkeit zu prüfen

    MySQL konfigurieren

    Auch MySQL erfordert vor den ersten Start eine Anpassung, um eine Warnung des Scripts wsl-integration.sh zu vermeiden. Sie dafür sorgt, dass das Konto, unter dem die Datenbank läuft, ein Home-Verzeichnis zugewiesen erhält:

    sudo usermod -d /var/lib/mysql/ mysql

    Heimatverzeichnis für das Konto konfigurieren, unter dem MySQL läuft

    Je nach Security-Anforderung an die Entwicklungs­umgebung führt man dann noch das Sicherheits-Script

    sudo mysql_secure_installation

    aus. Anschließend startet man MySQL mit

    sudo service mysql start

    phpMyAdmin installieren

    Ein populäres Tool für das Management der Datenbank ist phpMyAdmin. Dieses installiert man nebst einigen von ihm benötigten PHP-Modulen mit diesem Befehl:

    sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

    phpMyAdmin inklusive einiger PHP-Module installieren

    Anschließend sollte sich das Tool über

    http://localhost/phpmyadmin

    starten lassen.

    Keine Kommentare