XAMPP mit Windows-Boardmitteln ersetzen

Die meisten Webentwickler werden wohl schon einmal von XAMPP gehört haben, oder es sogar aktiv jeden Tag nutzen. XAMPP ist eine Ansammlung von Software mit der man relativ schnell und einfach einen funktionierenden Apache Webserver auf der eigenen Windows-Maschine zum laufen bringen kann. Enthalten ist ein Apache2 Server, PHP, MySQL, TomCat, FileZilla  und Mercury. PHP-MyAdmin als einfache Oberfläche für den MySQL Server wird ebenfalls direkt mitgeliefert.

Als ich meinen Rechner letztens neu aufgesetzt habe, fing das ewige zusammensuchen von Software an.

Herunterladen – installieren – einrichten.

Dabei ist mir wieder sauer aufgestoßen das ich eine extra Software benötige um eine Webseite lokal zu hosten. Jeder der bereits einmal mit Linux gearbeitet hat oder ein Webserver auf Linux Basis eingerichtet hat, weis vermutlich wovon ich rede. Allgemein liebäugle ich momentan immer mehr mit Linux Systemen. Aber eine extra Virtuelle Maschine laufen zu haben um mir lokal einen vollwertigen Webserver zur Verfügung zu stellen fand ich ebenfalls wieder ein wenig übertrieben. Da viel mir das „Subsystem for Linux“ wieder ein. Denn Windows ermöglicht es doch mittlerweile mit einer Kompatibilitätsschicht, Linux-Executables auszuführen

Mit dem Subsystem sollte es uns also möglich sein direkt „aus Windows heraus“ einen Apache und MySQL-Server auf Linux Basis aufzusetzen.

Das „Subsystem for Linux“ aktivieren

Das aktivieren funktioniert relativ simpel. In die Windows Features wechseln und dort das gewünschte Feature aktivieren. Nun müssen wir uns noch ein Linux-Terminal besorgen. Ich verwende hierfür einfach aus dem Microsoft Store die App „Ubuntu“ (Hier klicken).

Die App einfach installieren und den ersten User einrichten.
In mehreren Foren konnte ich lesen, dass es zu Problemen führen kann wenn der User der hier eingerichtet wird den gleichen Namen erhält wie der Windows-Benutzer. Dies habe ich nicht getestet, aber man kann es ja einfach vorsichtshalber berücksichtigen.

Ist die Installation abgeschlossen kann man die App „Ubuntu“ einfach starten und findet sich anschließend in einem Terminal wieder.

Webserver und MySQL Datenbank installieren

Diesen Punkt schneide ich nur kurz an, da ich davon ausgehe das jeder  der sich für diese Variante interessiert, diese Schritte sowieso beherrscht.

1. Vorbereitung

sudo apt-get update

2. Apache, MySQL und PHP installieren

sudo apt-get install apache2
sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Alles installiert, dann kann der Service gestartet werden.

sudo service apache2 start

Damit läuft der Server und sollte unter http://localhost erreichbar sein.


Arbeitsweise und Einschränkungen

Natürlich gibt es bei dem Subsystem ein paar Einschränkungen. Zum einen sollte man es tunlichst vermeiden die Linux Dateien aus Windows heraus im normalen FileSystem zu bearbeiten. Deswegen gebe ich dafür keinen Pfad an.

Dafür stehen einem in der Bash jedoch Mount-Points zur Verfügung. Und zwar für jede unter Windows eingerichtete Partition eine.

Wie ihr seht stehen dort „c„, „l“ und „d“ zur Verfügung. Alle meine Partitionen auf diesem Gerät. Ich habe extra einen Symlink zwischen einen Ordner der Partition „l“ sowie dem „/var/www/html“ in dem Sub-System angelegt. So kann ich aus Windows heraus die Dateien bearbeiten und sie stehen sofort dem lokalen Webserver zur Verfügung.

Ebenfalls ist es natürlich ganz normal möglich in den Apache .conf files die SubDomains anzulegen um z.B. mehrere Projekte über unterschiedliche Urls anzusprechen. http://dev.localhost oder http://projekt123.localhost.

Autostart Workaround im Windows Subsystem

Ebenso muss man auf Tricks zurückgreifen damit die Services (Apache und MySQL) automatisch gestartet werden. Hier gibt es mehrere Ansätze. Im folgenden beschreibe ich einmal kurz die Variante die ich nutze.

Ich erweitere die .bashrc Datei und lasse dort noch ein von mir definiertes Script ausführen. In diesem Script definiere ich die Services die ich starten möchte.

startservices.sh

#!/bin/bash

# Edit this for your relevant services.
services=(ssh mysql apache2)

for service in "${services[@]}"
do
        if (( $(ps -ef | grep -v grep | grep $service | wc -l) == 0 ))
        then
                # Uncomment to get messages.
                # echo "Starting service ${service}"
                (sudo service $service start > /dev/null &)
        fi

done

Diese Datei muss natürlich ausführbar sein.

chmod +x startservices.sh

Und anschließend in der .bashrc hinterlegen.

echo ./startservices.sh >> .bashrc

Das einzige was nun getan werden muss um den lokalen Server auf „Subsystem for Linux“ Basis zu nutzen ist die App „Ubuntu“ starten. Dadurch wird die .bashrc ausgeführt und ihr solltet in der Konsole direkt sehen ob die Services gestartet wurden oder bereits liefen.

Ich werde wohl nun erst einmal eine ganze Weile das Subsystem for Linux testen und damit herum experimentieren. Aber der erste Eindruck, auch was die Performance angeht, ist wirklich sehr Positiv. Ich bereue es schon fast das Subsystem nicht direkt bei Release getestet, sondern es nur auf meine „ToDo“ Liste geschoben zu haben. Für „so einfache Anwendungen“ wie einen Webserver finde ich bisher keine Argumente gegen das Subsystem.


Beitrag veröffentlicht

in

, ,

von

Schlagwörter:

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert