Blog

Virtual Hosts mit XAMPP für Mac OS X

Gerade wenn man lokal gleichzeitig an mehreren Webprojekten arbeitet, empfiehlt sich die Nutzung von Virtual Hosts. Virtual Hosts ermöglichen es, dass der lokale Webserver auf verschiedene Verzeichnisse für unterschiedliche Hostnamen zugreift. In diesem Tutorial zeige ich die Einrichtung von VirtualHosts mit XAMPP für Mac OS X. Ich verwende hierbei Apple Mac OS X 10.8.2 Mountain Lion und XAMPP in der Beta-Version 1.8.1.

Virtual Hosts aktivieren

Damit du Virtual Hosts mit dem in XAMPP verwendeten Apache-Server nutzen kannst, musst du im ersten Schritt diese Funktion in der Konfigurationsdatei httpd.conf-Datei aktivieren. Öffne dazu mit einem Editor die Datei /Applications/XAMPP/xamppfiles/etc/httpd.conf und suche nach den folgenden Zeilen

# Virtual hosts
#Include etc/extra/httpd-vhosts.conf

Ein Auskommentieren der zweiten Zeile aktiviert die Virtual Hosts. Das Ergebnis sieht dann so aus

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

Nachdem du die Änderungen abgespeichert hast, geht es im nächsten Schritt mit der eigentlichen Konfiguration der Virtual Hosts weiter.

Virtual Hosts konfigurieren

Die Konfiguration der Virtual Hosts findet in einer weiteren Konfigurationsdatei des Apache statt. Rufe dazu mit einem Editor die Datei /Applications/XAMPP/xamppfile/etc/extra/httpd-vhosts.conf auf. In der Konfigurationsdatei befinden sich zwei Virtual Host-Beispieleinträge, die du löschen kannst.
Damit das ursprüngliche htdocs-Verzeichnis von XAMPP weiterhin unter localhost erreichbar ist, musst du als erstes einen VirtualHost-Eintrag für localhost anlegen. Füge dazu folgendes ans Ende der Datei:


  ServerName localhost
  DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
  <Directory "/Applications/XAMPP/xamppfiles/htdocs">
    Options Indexes FollowSymLinks Includes execCGI
    AllowOverride All
    Require all granted

Mit weiteren Einträgen kannst du nun weitere Virtual Hosts anlegen. Füge dazu für jeden Virtual Host einen entsprechenden Eintrag wie den folgenden ans Ende der Datei


  ServerName projekt1
  DocumentRoot "/Users/Benutzername/beliebigerOrdner"
  <Directory "/Users/Benutzername/beliebigerOrdner">
    Options Indexes FollowSymLinks Includes execCGI
    AllowOverride All
    Require all granted

  ErrorLog "logs/projekt1-error_log"

Mit dem obigen Eintrag wird mit ServerName der VirtualHost – in diesem Beispiel projekt1 – benannt. Mit der Angabe DocumentRoot wird das Verzeichnis für den Virtual Host projekt1 festgelegt. In diesem Beispiel ist “Benutzername” dein Benutzername unter Mac OS X und “beliebigerOrdner” ist ein frei zu wählender Ordner, in dem die Inhalte für den neuen Virtual Host liegen. Die weiteren Zeilen definieren die Zugriffsrechte und den Dateinamen des Fehler-Logs.

Hosts anpassen

Abschließend muss nun noch die Hosts-Datei von Mac OS X angepasst werden, damit das Betriebssystem die neuen Servernamen auch richtig verarbeiten kann. Die Hosts-Datei kannst du z.B. mit Hilfe des Editors nano im Terminal ändern. Rufe dazu ein Terminal auf (Programme > Dienstprogramme > Terminal) und starte die Konfiguration der hosts-Datei mit

sudo nano /etc/hosts

In deiner Hosts-Datei sollte für localhost bereits ein Eintrag mit der IP-Adresse 127.0.0.1 vorhanden sein.
Für die weiteren Virtual Hosts fügst du ans Ende der Datei jeweils einen Eintrag wie den folgenden.

# VirtualHost projekt1
127.0.0.1 projekt1

Die erste Zeile ist ein reine Kommentarzeile (und kann natürlich auch weggelassen werden). Mit der zweiten Zeile wird der Hostname auf die lokale IP-Adresse 127.0.0.1 gemappt. Der Hostname muss identisch mit dem vorherigen Schritt gewählten Virtual Host-Namen sein. Speichere die Datei mit der Tastenkombination CRTL+o, bestätige das Speichern mit ENTER und verlasse den Editor mit CRTL+x

(Fast) fertig

Nachdem die Konfiguration der Virtual Hosts nun abgeschlossen ist, wird es Zeit für einen ersten Test. Starte dazu den Apache mithilfe des XAMPP Control Panels (Programme > XAMPP > XAMPP Control) neu und rufe in einem Browser deiner Wahl den VirtualHost auf (z.B. http://projekt1).

Je nachdem welchen Ordner du für deinen VirtualHost gewählt hast, kann es sein, dass der Test nicht erfolgreich ist und du stattdessen eine Fehlerseite mit der Meldung “Zugriff verweigert” und dem Fehlercode “Error 403” erhälst.

Zu dem Fehler kommt es, da der Apache in seiner Ausgangskonfiguration als “nobody”-Benutzer läuft und somit ggf. keinen Zugriff auf den Ordner deines Virtual Host hat. Dieses Problem kann man lösen indem man die Benutzerrechte des Ordners entsprechend ändert oder den Apache mit anderen Benutzerrechten laufen lässt.

Letztere Lösung ist aus Sicherheitsgründen nicht ganz unbedenklich, bietet meiner Meinung nach aber trotzdem eine gute Lösung des Problems, so lange der Apache nur lokal läuft und keinen Zugriff von außen gestattet – was bei der Standardkonfiguration von XAMPP der Fall ist.

Um den Benutzer des Apache zu ändern, rufst du nochmals mit einem Editor die Konfigurationsdatei /Applications/XAMPP/xamppfiles/etc/httpd.conf auf, suchst nach dem Eintrag

# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User nobody
Group nogroup

und änderst diesen entsprechend ab mit

# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User Benutzername
Group nogroup

wobei Benutzername der Benutzername ist, den du im Mac OS X Betriebssystem verwendest. Starte nun noch einmal den Apache-Server neu, damit die Änderungen übernommen werden.

Ein weiterer Test mit dem Aufruf eines VirtualHosts (z.B. http://projekt1) sollte nun erfolgreich sein.