Virtual Domains unter Mac OS X

Dieser Artikel beschreibt das Einrichten und Konfigurieren von Virtual Domains unter Mac OS X im eigenen Netzwerk (ähnlich einem Intranet) im Zusammenspiel mit Windows XP als Testclient. Dafür benötigt man auf beiden Systemen Bordmittel und Gratisprogramme.

Für einen Webentwickler unter Mac OS X ist es von Vorteil, auf seinem Mac und mithin in seinem eigenen Netzwerk eine Umgebung mit Virtual Domains zu betreiben. Das vereinfacht die Entwicklung von CMS-basierten Websites, vor allem wenn man mit root-basierten Links ( z.B. /sites/all/images/pic.jpg) arbeiten muss, was ein eigenes Server-Root erfordert. Auch das Apache-Modul «mod_rewrite» lässt sich so problemlos einsetzen.

Der Vorteil liegt darin, dass man anfänglich nicht auf einem externen Webserver arbeiten muss, was Verzögerungen oder einen Mehraufwand bei der Entwicklung mit sich bringen kann. Zudem schont man die Ressourcen des externen Webservers und braucht vor allem diejenigen des eigenen Mac-Computers.

Ohne Virtual Domains kann man eine Website (ohne eigenes Server-Root) wie folgt aufrufen (nur Beispiele):

Das Server-Root ist hier für localhost, 127.0.0.1 oder 192.168.1.2 immer das gleiche, nämlich /Library/Webserver/Documents/ oder /User/ichselber/Sites/. Das Root der einzelnen Websites befindet sich aber im entsprechenden Unterverzeichnis, was im URL angezeigt wird z.B. kunde99/cms1/ oder cms/projekt5/. In diesem Fall darf man keine root-basiert Pfade verwenden wie /kunde99/cms1/images/bild1.jpg oder /resources/bild1.jpg. Nach einem Upload ins Webverzeichnis beim Hoster verweisen interne Links und Pfadangaben für Medien auf Verzeichnisse ausserhalb des Webserver-Roots.

Mit Virtual Domains kann man eigenständige virtuelle Webserver mit eigenem Server-Root auf dem eigenen Mac aufrufen (nur Beispiele):

Die Server-Root wären in diesem Fällen ganz verschiedene. Beispiele mit Unix-Pfaden:

  • /Users/ichselber/Sites/cms-projekte/cms1/
  • /Users/ichselber/Sites/drupal/

Das Server-Root für meinmac.local oder spiderman.local ist hier aber immer /Users/ichselber/Sites/, wenn wir als Server-Root das Websites-Verzeichnis des Benutzers festlegen. Mit Subdomains (3rd-Level) erhalten wir weitere Virtuelle Server mit eigenem Webserver-Root, welches nicht im URL angezeigt wird. In der Webserver- bzw. HTTPD-Konfiguration wird dem Apache-Webserver mitgeteilt, wo sich das Webserver-Root für die jeweilige Subdomain befindet.

Werkzeuge

Dazu gehören ein paar kostenlose Texteditoren, von denen es unter Unix ein paar gibt, die aber teilweise recht gewöhnungsbedürftig sind. Für den Mac gibt es den Gratiseditor «TextWrangler» von Barebones Software, die auch den empfehlenwerten, kostenpflichtigen Editor «BBEdit» anbieten. In beiden Programmen gibt es die Funktion «Open Hidden», mit der man die «versteckten» Textdateien im Unix-Unterbau eines jeden Mac OS X-Systems öffnen kann.

Für Windows empfehle ich den hervorragenden Texteditor «Notepad++», mit der man die hosts-Datei und andere Plain Text-Dateien unter Windows (XP) bearbeiten kann.

Benutzername «ichselber»

In der Regel wird beim ersten Start frischen Macs nach dem eigenen Namen des Benutzers gefragt, aus dem dann der Unix-Benutzername bzw. Accountname abgeleitet und gespeichert wird. Natürlich ist es auch möglich, den Unix-Benutzernamen, der nur ein kleingeschriebenes Kürzel (a-z,0-9) ist, selber festzulegen. Ich gehe davon aus, dass jeder, der dieser Anleitung folgen will, seinen Unix-Benutzernamen kennt. Hier gebe ich ihn mit «ichselber» an.

Benutzer anlegen unter Mac OS X

Gerätename «meinmac»

Um in einem Netzwerk, wozu auch ein Intranet gehört, mit einem schlüssigen, einfachen Namen erreichbar zu sein, lohnt es sich, allen Macs und PCs einen einfachen Namen zu geben. Am besten ist, wenn man ein Muster anwendet wie z.B. Vornamen, Romanfiguren, Planeten etc. Den Namen setzt man in den Systemeinstellungen unter «Sharing». Am besten man verwendet nur Kleinbuchstaben und Zahlen z.B. «meier19», «florian» oder «spiderman». Hier verwende ich den Gerätenamen «meinmac».

Websharing einrichten unter Mac OS X

Server-Root (Speicherort der Webdateien)

Das Server-Root befindet sich unter Mac OS X im Verzeichnis /Library/Webserver/Documents, das man bei aktiviertem Webserver (Webfreigabe) mit http://127.0.0.1 oder http://localhost aufrufen kann. Es macht aber keinen Sinn, HTML- oder PHP-Dateien in diesem Verzeichnis abzulegen, sondern speichert diese am bestem im eigenen Benutzerverzeichnis unter «Websites» oder «Sites», wo auch alle anderen persönlichen oder projektbezogenenen Objekte der Website gespeichert werden.
Aus diesem Grund löschen wir das (leere) Server-Root-Verzeichnis /Library/Webserver/Documents/ und legen dafür einen symbolischen Link an, der auf das Benutzer-Sites-Verzeichnis verweist.

Im Terminal geben wir dazu folgende Befehle ein. Sollte ein Befehl nicht funktionieren, fügt man am Beginn der Befehlzeile die Meta-Anweisung «sudo» hinzu und muss das mit Passwort bestätigen z.B. sudo rmdir Documents.

cd /Library/Webserver/ 
rmdir Documents 
ln -s /Users/ichselber/Sites Documents
  

Somit wird ein symbolischer Link, der einem Alias ähnlich sieht, angelegt, der auf den «Websites»-Ordner im eigenen Benutzerverzeichnis verweist. Die Updates und Upgrades von Mac OS X tasten im übrigen diesen Smybolischen Link nicht an, da der Ursprungsorder eh nur Standard-Daten (wie «Hello World») enthält und auch keinerlei systemrelavanten Scripte und Konfigurationsdateien enthält.

Document Root / Webserver Root unter Mac OS X

Konfiguration Webserver und Nameserver

Nun wollen wir, dass wir auf unserem geliebten Mac virtuelle Domains im hauseigenen Netzwerk einsetzen können. Dazu müssen wir unserem Mac propagieren, welche Domains auf ihm angesiedelt sind (schön formuliert, nicht wahr?). Wir müssen aber wissen, dass jeder Computer seine ureigene Domain oder IP-Adresse hat, die nur für ihn selber gilt und das Herzstück einer jeden Domainverwaltung ist: localhost oder 127.0.0.1. Jeder Computer in einem Netzwerk hat diese Adresse, und der Gültigkeitbereichs ist nur auf ihn selber beschränkt. Wenn Sie also im Webbrowser die Adresse http://localhost oder http://127.0.0.1 aufrufen, rufen Sie eigentlich immer nur den HTTP_Server ihres eigenen Rechners (Computer) auf.

Folgende Dateien aufm Mac anpassen, u.U. mit TextWrangler/BBEdit («Open Hidden»)

/private/etc/hosts

Hier werden Hosts und Virtual Hosts, die auf dem aktuellen Mac laufen sollen, eingetragen. Wenn der Gerätename korrekt eingetragen ist unter Systemeinstellungen → Sharing/Freigaben (siehe oben), kann man als Domain auch diesen Namen verwenden, z.B. meinmac.local. Die einleitenden, zweifachen Doppelpunkte leiten übrigens einen Kommentar ein.

/private/etc/hosts

127.0.0.1  localhost
255.255.255.255  broadcasthost
::1    localhost

127.0.0.1  meinmac.local
127.0.0.1  projektname.meinmac.local 
::2    meinmac.local

/private/etc/httpd/users/vhosts.conf

Diese Datei benötigt der Webserver für die Konfiguration der Virtual Hosts. Im besonderen wird hier der zentral

/private/etc/httpd/users/vhosts.conf

NameVirtualHost meinmac.local:80
# meinmac.local
ServerName meinmac.local
DocumentRoot "/Library/WebServer/Documents/"

# ErrorLog und CustomLog hier nicht zwingend notwendig
# ErrorLog /private/var/log/httpd/error_log
# CustomLog /private/var/log/httpd/access_log

# PROJEKT 
ServerName projektname.meinmac.local
DocumentRoot "/Users/ichselber/Sites/projektname/cms/"
# Nachfolgende Anweisung ginge auch 
# DocumentRoot "/Library/WebServer/Documents/projektname/cms/" 

/private/etc/httpd/httpd.conf

Deaktivieren Sie am Schluss der Datei httpd.conf die Anweisung zu NameVirtualHost mit einem Hash-Zeichen (#) an Beginn der Zeile. Die Include-Anweisung für users/*.conf am Schluss muss aber vorhanden und aktiviert sein (ohne #), denn die oben besprochene Datei vhosts.conf befindet sich ebenfalls im users-Verzeichnis und muss beim Neustart des Webservers jeweils neu geladen werden.

/private/etc/httpd/httpd.conf

...
# NameVirtualHost 127.0.0.1:80 
Include /private/etc/httpd/users/*.conf

Apache-Webserver stoppen und neu starten

So, jetzt wird es spannend. Wir stoppen unseren Apache-Webserver, falls er schon läuft, und starten diesen danach erneut. Das geht ganz einfach unter Systemeinstellungen -> Freigaben, indem man die Checkbox «Webfreigaben» deaktiviert und danach wieder aktiviert. Fertig. Das geht aber auch mit dem Terminal auch verschiedene Arten, die ich später hier mal hinzufüge.

Jetzt kann man ein CMS-Projekt auf seinem Mac unter einer solchen URL entwickeln:
http://projektname.meinmac.local

Die Startseite im Server-Roots, lässt sich folgendermassen aufrufen
http://meinmac.local oder http://localhost oder http://127.0.0.1

Windows-Client im eigenen Netzwerk zu Testzwecken konfigurieren

Selbstverständlich muss der Webdesigner auch ein Windows-System einsetzen, um seine Webprojekte vor allem mit dem für Webdesigner mühsamsten aller Webbrowser zu testen, dem Internet Explorer von Microsoft. Dazu müssen wir nur im Windows-System die hosts-Datei erweitern eine Zeile pro Virtual Host. Dazu müssen wir aber die netzwerk-interne IP-Adresse des Host-Computers (unser Mac) kennen. Wir verwenden hier 192.168.1.33.

C:\Windows\system32\drivers\etc\hosts

C:\Windows\system32\drivers\etc\hosts

127.0.0.1 localhost
192.168.1.33 projekt.meinmac.local # Mein Kommentar

Danach können wir im Internet Explorer von Microsoft unser Projekt mit http://projekt.meinmac.local aufrufen. Das funktioniert nur, wenn beide Systeme im gleichen Netzwerk eingebunden sind. Wollen Sie mit einem PC aus einen anderen ggf. übergeordneten Netzwerk zugreifen, muss auf dem Router, an dem unser Mac angeschlossen ist, ein entsprechender Port geöffnet werden (z.B. der Standard-Port: 80).

Neuen Kommentar schreiben

CAPTCHA
Diese kleine Aufgaben müssen wir Ihnen leider stellen, um Roboter daran zu hindern, dieses Formular zu missbrauchen.
Image CAPTCHA