Apache und PHP unter WSL
« | 06 Sep 2021 | »Wenn ich PHP Scripts für den Webspace bei
mir zu Hause ausprobieren will, dann helfen mir leider der
IIS oder
Jana wenig. Denn schließlich möchte
ich ja die dortige Apache2
Umgebung mit seinen typischen .htaccess
Dateien genau nachstellen.
Früher hätte ich jetzt auf einen Linux Rechner oder eine VM ausweichen müssen, doch heute erlaubt mir das Windows Subsystem für Linux das gleiche “Feeling” ohne Zusatzaufwand.
Den für mich größten Vorteil von WSL
kann ich immer wieder nur aufs
Neue betonen:
Ich kann in EINEM Dateisystem parallel für Windows und Linux entwickeln.
Visual Studio
(Code) läuft unter Windows
als Editor, Linux-Builds oder Jekyll/Ruby
Scripts laufen in der WSL Shell.
Es ist einfach genial.
Das geht natürlich auch mit dem Apache2 HTTP
Server und dem PHP Modul.
So sieht meine Installation dafür aus:
WSL Apache Installation unter Ubuntu 20.4
Auf meinem WSL Ubuntu 20.4 sieht die Installation so aus:
sudo apt install apache2
Apache2 Webserver wird installiert.sudo apt install php
Der PHP Interpreter wird installiert. Dabei sieht man auch die Version, die die Distribution anbietet (in meinem Fall 7.4) was man sich für später merken sollte.sudo apt install libapache2-mod-php
Das PHP Modul für Apache2 sorgt dafür, dass der Webserver PHP nutzen kann.sudo a2enmod php7.4
Jetzt muss das PHP Modul aktiviert werden. Im Netz findet man auch nursudo a2enmod php
, was aber wegen der Version nicht immer funktioniert. Im Zweifelsfall listet aber ein kurzessudo a2enmod
alle Module auf und fragt dann, welches man wirklich aktivieren möchte.sudo a2enmod rewrite
Ich brauche zusätzlich ein aktiviertesrewrite
Modul um per.htaccess
ein paar Sonderfälle definieren zu können.
Als nächstes werden die Apache Konfigurationsdateien angepasst, damit ich
von WSL aus auf meine Dateien im Windows-Laufwerk zugreifen kann.
Meine Daten liegen in Windows auf D:\devel\projects\opengate
und der Pfad
ist dann unter WSL als /mnt/d/devel/projects/opengate
eingebunden.
Zuerst erlauben wir .htaccess
und die Dateiauflistung des Zielverzeichnisses
in der Datei /etc/apache2/apache2.conf
. Dort fügt man einfach folgende Zeilen an:
Und dann ändert man das Standard-Root-Verzeichnis des Webservers auf das
eigene Verzeichnis um.
Das kann man in der Datei
/etc/apache2/sites-enabled/000-default.conf
editieren, in dem man den
Eintrag DocumentRoot
von seinem Standard /var/www/html
abändert.
Bei mir sieht das dann so aus:
Tja und wenn man den Webserver dann startet mit
sudo service apache2 start
oder nach einer weiter Änderung mit
sudo service apache2 restart
neu gestartet hat, dann sollte man im Browser
unter http://127.0.0.1/
auch schon die eigene Seite sehen (falls mit
index.html
gearbeitet wird), oder zumindest eine Verzeichnisauflistung
auftauchen.
Fazit
Das tolle an WSL ist, dass die Dienste nicht automatisch starten und ich beim
nächsten PC-Neustart keine Ressourcen verliere. Natürlich muss ich immer per
service apache2 start
Starthilfe leisten, wenn ich wieder was austesten
will, aber das kommt ja nur gelegentlich bis selten vor.
Apache im WSL ist so was von angenehm unkompliziert, vor allem wenn ich es mit der Installation von IIS + PHP vergleiche. Das war nämlich schon immer ein Krampf. Heute gibt es zwar Webinstaller usw. die das vereinfachen, aber Anpassungen von Berechtigungen und Ausführungseinstellungen sind immer noch umständlich hinzubekommen.
Von daher mal ein großes Lob an WSL, was mir den ganzen Zirkus ohne Docker und VMs in wenigen Minuten ermöglicht.