Diese Seite hier wird zwar direkt bei Strato gehostet, allerdings leite ich eine Subdomain an meinen heimischen Mac. Dies geht in der Kombination Strato/Fritz!Box recht einfach.

Zuerst bei Strato zur Domain-Verwaltung und bei der gewünschten Domain auf "verwalten" klicken.
 
"Subdomain anlegen" auswählen, gewünschten Namen eingeben und anlegen.
 
Nun etwas unschön gelöst: Um die Subdomain einzurichten muss ich erst wieder zurück zur Domain-Verwaltung. Von dort verwalte ich dann die eben angelegte Subdomain.
 
Unter den DNS-Einstellungen DynamicDNS verwalten...
 
...und aktivieren.
 
Nun noch das ganze auf der Fritz!Box einrichten.
Unter Internet > Freigaben > Dynamic DNS lässt sich der Strato-Account sehr einfach anlegen.
Noch die gewünschten Ports an den gewünschten Server weiterleiten.

Fertig.

Was, wenn ich nun noch eine zweite Sub-Domain anlegen will, die ebenfalls in mein Heimnetz und/oder ebenfalls auf meinen Server geleitet werde soll?

Auch keine große Sache...

Zweite Subdomain bei Strato anlegen

Wir legen wie vorhin eine weitere Subdomain bei Strato an.
In der Verwaltung der Subdomain aktivieren wir allerdings nicht wieder Dynamic DNS, sondern ändern den CNAME-Record (Canonical Name; Anerkannter Name).
 
CNAME sollte der Dynamic-DNS-Subdomain entsprechen, wobei man einen Punkt am Ende hinzufügen muss.

Danach (oder nach spätestens 24 Stunden) leiten die im Beispiel angelegten Subdomains daheim.apfel-z.net und heim.apfel-z.net beide auf denselben Server bei mir zu Hause und würden beim Aufruf im Browser dieselbe Website anzeigen (vorausgesetzt natürlich, meine Firewall lässt Port 80 zu einem Server durch, auf dem Apache eine Website ausliefert).

Nun soll die Subdomain daheim.apfel-z.net allerdings eine andere Website als heim.apfel-z.net ausliefern.

Zweite Subdomain am Mac einrichten

In meinem Fall handelt es sich um einen macMini mit MacOS X 10.6
An der Vorgehensweise mit Apache sollte sich in weiteren MacOS-X-Versionen allerdings nicht viel geändert haben.

Status Quo
Standard-Webroot ist das Verzeichnis /Library/WebServer/Documents/
Sowohl die Anfragen an daheim.apfel-z.net wie auch an heim.apfel-z.net landen hier.

Wir legen einen neuen Ordner heim.apfel-z.net in diesem Verzeichnis an, in welchem die Website für diese Suddomain lagern soll.

Danach noch eine kleine Änderung in der Apache-Konfiguration:

sudo pico /etc/apache2/httpd.conf

Sicherstellen, dass das vhost-Modul aktiv (also nicht mit # auskommentiert) ist:

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

Ebenso sicherstellen, dass die httpd-vhosts.conf geladen wird und nicht auskommentiert ist:

Include /private/etc/apache2/extra/httpd-vhosts.conf

Zwar könnte man die folgende Konfiguration auch direkt in der httpd.conf machen und auf die httpd-vhosts.conf verzichten, der Ordnung und Übersichtlichkeit zu liebe lagere ich allerdings lieber aus.

Virtuelle Hosts anlegen

sudo pico /etc/apache2/extra/httpd-vhosts.conf

Für jede Subdomain benötigen wir einen <wikitext><VirtualHost *:80/></wikitext>-Eintrag, wobei man beachten sollte, dass der erste Eintrag der Fallback-Eintrag für nicht spezifizierte Subdomains und Zugriffe aus dem lokalen Netzwerk via IP-Adresse darstellt.

In unserem Fall:

<VirtualHost *:80>
    ServerAdmin  webmaster@xyz.net
    DocumentRoot "/Library/WebServer/Documents"
    ServerName   apfel-z.net
    ServerAlias  daheim.apfel-z.net
    ErrorLog     "/private/var/log/apache2/daheim.apfel-z.net-error_log"
    CustomLog    "/private/var/log/apache2/daheim.apfel-z.net-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin  webmaster@xyz.net
    DocumentRoot "/Library/WebServer/Documents/heim.apfel-z.net"
    ServerName   apfel-z.net
    ServerAlias  heim.apfel-z.net
    ErrorLog     "/private/var/log/apache2/heim.apfel-z.net-error_log"
    CustomLog    "/private/var/log/apache2/heim.apfel-z.net-access_log" common
</VirtualHost>

Etwas unschön ist in diesem Fall, dass ich auf diese Art über die Adresse http://daheim.apfel-z.net/heim.apfel-z.net/ Zugriff auf das Root-Verzeichnis der zweiten Sub-Domain bekomme, weil daheim.apfel-z.net alles im Documents-Ordner ausliefert und heim.apfel-z.net im Documents-Ordner liegt.

Die zweite Subdomain in einem anderen Ordner als den Documents-Ordner abzulegen hatte bei mir nicht funktioniert, da Apache wohl keine Zugriffsrechte außerhalb des Documents-Ordner hat.

Deshalb empfehle ich, auch die "Haupt-Subdomain" in einem Unterordner innerhalb des Documents-Ordner abzulegen:

<VirtualHost *:80>
    ServerAdmin  webmaster@xyz.net
    DocumentRoot "/Library/WebServer/Documents/daheim.apfel-z.net"
    ServerName   apfel-z.net
    ServerAlias  daheim.apfel-z.net
    ErrorLog     "/private/var/log/apache2/daheim.apfel-z.net-error_log"
    CustomLog    "/private/var/log/apache2/daheim.apfel-z.net-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin  webmaster@xyz.net
    DocumentRoot "/Library/WebServer/Documents/heim.apfel-z.net"
    ServerName   apfel-z.net
    ServerAlias  heim.apfel-z.net
    ErrorLog     "/private/var/log/apache2/heim.apfel-z.net-error_log"
    CustomLog    "/private/var/log/apache2/heim.apfel-z.net-access_log" common
</VirtualHost>

Der Documents-Ordner enthält nun also nur noch die beiden Verzeichnisse daheim.apfel-z.net und heim.apfel-z.net. Der vorherige Inhalt des Documents-Ordners wurde in daheim.apfel-z.net verschoben.

Apache über die Systemeinstellungen > Freigaben > Webfreigabe neu starten (Haken kurz raus und wieder rein) und die Sache sollte laufen.

Nicht wundern, wenn das Ergebnis nicht gleich wie gewünscht sein sollte: Es kann bis zu 24 Stunden dauern, bis die bei Strato angelegten DNS-Einträge sich im gesamten Internet verbreitet haben.
Die zweite Subdomain hatte bei mir einen Tag lang trotz aller Konfiguration am Mac dasselbe angezeigt wie die erste Subdomain. Dies ist ein normales Verhalten.

Wie ruft man die weitere Subdomain lokal auf?

Arbeite ich lokal am Server, gelange ich bei der Eingabe von localhost oder 127.0.0.1 zur ersten Subdomain.
Wie gelange ich zur zweiten Subdomain, ohne den Umweg raus in's Internet über den Domain-Namen machen zu müssen? Durch einen weiteren <wikitext><VirtualHost *:80/></wikitext>-Eintrag in der vhosts-Datei:

<VirtualHost *:80>
    ServerAdmin  webmaster@xyz.net
    DocumentRoot "/Library/WebServer/Documents/heim.apfel-z.net"
    ServerName   meinserver.local
    ServerAlias  heim.localhost
    ErrorLog     "/private/var/log/apache2/heim.apfel-z.net-error_log"
    CustomLog    "/private/var/log/apache2/heim.apfel-z.net-access_log" common
</VirtualHost>

...und eine Erweiterung der hosts-Datei:

sudo pico /etc/hosts

# Hinzufügen:
127.0.0.1       heim.localhost

Bei Eingabe der Adresse http://localhost im Browser lande ich nun auf derselben Website wie bei Eingabe von http://daheim.apfel-z.net (da dies der erste Eintrag in der vhosts-Datei ist), bei Eingabe von http://heim.localhost lande ich auf der Website http://heim.apfel-z.net