WSL LAMP-Stack der bessere XAMPP
Wer unter Windows auf einem lokalen Webserver entwickeln möchte, greift meist zum XAMPP (Apache + MariaDB + PHP + Perl).
Aber es geht auch anders - und zwar mit dem Windows Subsystem für Linux kurz WSL. Seit dem Anniversary Update für Windows 10 64bit kann man sich eine Linux-Distribution unter Windows installieren. Unter diesem Linux ist es möglich einen Apache-Server mit MySql / MariaDB und PHP-Unterstützung zu installieren. Dieser LAMP-Stack ist wesentlich schneller als XAMPP.
Nach dem Umtieg auf Contao 4.5 hier ein kleines Tutorial für alle Webentwickler, welche unter Windows entwickeln.
WSL, LAMP, XAMPP?
Wer unter Windows auf einem lokalen Webserver entwickeln möchte, greift meist zum XAMPP (Apache + MariaDB + PHP + Perl). Aber es geht auch anders - und zwar mit dem Windows Subsystem für Linux kurz WSL. Seit dem Anniversary Update für Windows 10 64bit kann man sich eine Linux-Distribution unter Windows installieren. Unter diesem Linux ist es möglich einen Apache-Server mit MySql / MariaDB und PHP-Unterstützung zu installieren. Dieser LAMP-Stack ist wesentlich schneller als XAMPP.
WSL mit Ubuntu einrichten
Als erstes müssen wir das WSL-Feature freischalten. Dafür benötigen wie oben erwähnt mindestens Windows 10 64bit mit Anniversary Update.
Wir öffnen also die Windows-Einstellungen...

...und aktivieren den Entwicklermodus



Das Paket wurde installiert, wenn wir folgende Meldung sehen:

Jetzt können wir geschwind unter der Systemsteuerung:

...innerhalb von "Programme und Features" -> "Windows-Features aktivieren oder deaktivieren" ...

...aktivieren das Häkchen bei "Windows-Subsystem für Linux":

Danach werden wir aufgefordert einen Neustart auszuführen, welchen wir Folge leisten. Jetzt benötigen wir noch eine Linux-Distribution. Diese können wir einfach über den Windows-Store beziehen:

Wir entscheiden uns für Ubuntu und suchen nach dieser App:

Mit dem Klick auf "Herunterladen", downloaden wir Ubuntu für das Subsystem. Danach nur noch auf "Starten" klicken und Ubuntu wird installiert:

Es öffnet sich ein neues Fenster und die Installation beginnt. Dies kann einige Zeit in Anspruch nehmen!

Zum Abschluss vergeben wir einen UNIX-Benutzernamen und Passwort und landen schließlich schon in der Bash von Ubuntu.

Nach dem Klick-Marathon können wir endlich einen einfachen LAMP-Stack installieren:
# Quellen updaten
sudo apt update
# LAMP-Stack installieren
sudo apt-get install apache2 libapache2-mod-php7.0 php7.0 php7.0-mysql mysql-server
Im Anschluss starten wir die Services:
sudo service apache2 start && \
sudo service mysql start
Das war es auch schon! Einfach einen Browser öffnen und "localhost" eingeben und der Apache begrüßt uns mit einer netten Seite.

Fehlermeldungen abstellen
Während des Starten der Services ist dem Einen oder Anderen, vielleicht zwei Fehlermeldungen aufgefallen:
[core:warn] [pid 9009] (92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT
sowie:
No directory, logging in with HOME=/
Diese können wir mit folgenden Befehlen abstellen:
sudo service mysql stop && \
sudo service apache2 stop && \
sudo echo "AcceptFilter http none" | sudo tee --append /etc/apache2/apache2.conf > /dev/null && \
sudo echo "AcceptFilter https none" | sudo tee --append /etc/apache2/apache2.conf > /dev/null && \
sudo usermod -d /var/lib/mysql/ mysql
Jetzt wieder die Services neustarten ^^. Damit wir das nicht immer händisch eingeben müssen, packen wir das Ganze in ein Shell-Script:
touch start_lamp.sh && \
chmod +x start_lamp.sh && \
vi start_lamp.sh
mit folgenden Inhalt (Einfg -> Text einfügen -> ESC -> :x! Eingeben und Enter):
#!/bin/sh
sudo service apache2 start
sudo service mysql start
Nun das Script mit "./start_lamp.sh" starten. Jetzt sollten keine Fehlermeldungen, sondern nur erfolgreiche Meldungen zu sehen sein.
Anwendung entwickeln
Das Entwickeln von tollen Anwendungen kann nun beginnen. Doch huch wo speichern wir unsere Daten ab? Der Apache2-Standard-Pfad ist unter Ubuntu "/var/www/html" zu finden. Doch wie bekommen wir unsere Daten dort hin? Wir verlinken einfach unseren Projekt-Ordner nach html. Wir nehmen mal an unser Projekt-Ordner ist unter "D:\Projekte". Alle Festplatten sind im WSL unter /mnt gemountet. Das Verlinken funktioniert folgendermaßen (inklusive Backup des alten Verzeichnisses):
sudo mv /var/www/html /var/www/html.bak && \
sudo ln -s /mnt/d/Projekte /var/www/html
Damit die Änderungen auch übernommen werden, muss der Apache neugestartet werden:
sudo service apache2 restart
Ob PHP auch wirklich geht, seht wir, wenn ich euch ein Beispielprojekt anlegt (D:\Projekte\tolles-projekt\index.php):
<?php
echo "<h1>ich bin ein tolles projekt</h1>";
Nach Eingabe von der Adresse des Projektes: "http://localhost/tolles-projekt", wird das Ergebnis im Browser angezeigt:

Happy developing! ;)