Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

domain:subdomain

Subdomains

Auch wenn der Begriff Subdomain schwammig ist - du kannst dafür sorgen, dass für einzelne Hostnamen ein anderes Verzeichnis zum Tragen kommt, wenn du parallel zu html ein Verzeichnis anlegst, das so heißt, wie der Hostname. Du musst also erst mal in den entsprechenden Ordner wechseln:

[julia@amnesia ~]$ cd /var/www/virtual/$USER
Da das oft verwechselt wird: Der Ordner ist /var/www/virtual/$USER/ und nicht dein Homeverzeichnis ~/

Die Verzeichnisstruktur hier sieht im Normalfall so aus:

[julia@amnesia julia]$ ls -l
drwxr-xr-x 4 julia julia 4096 Dec 18 08:24 cgi-bin
drwxr-xr-x 2 julia julia 4096 Nov  5 09:50 fcgi-bin
drwxr-xr-x 6 julia julia 4096 Mar 10 11:28 html
drwxr-xr-x 2 root  root  4096 Mar 16 04:02 logs

Alles wird aus dem Verzeichnis html bedient.

Die Befehle gibst du alle auf der Shell ein, mit der du dich per SSH verbinden kannst.

Extra Ordner

Möchtest du neben deiner normalen Website die Subdomain blog.juliamueller.tld betreiben, so kannst du so vorgehen:

[julia@amnesia julia]$ mkdir /var/www/virtual/$USER/blog.juliamueller.tld

Demensprechend dann die Ausgabe des ls -l -Befehls:

[julia@amnesia julia]$ ls -l
drwxr-xr-x 2 julia julia 4096 Mar 17 13:48 blog.juliamueller.tld
drwxr-xr-x 4 julia julia 4096 Dec 18 08:24 cgi-bin
drwxr-xr-x 2 julia julia 4096 Nov  5 09:50 fcgi-bin
drwxr-xr-x 6 julia julia 4096 Mar 10 11:28 html
drwxr-xr-x 2 root  root  4096 Mar 16 04:02 logs

Nun musst du nur noch das Verzeichnis /var/www/virtual/julia/blog.juliamueller.tld befüllen und schon hast du dort deinen eigenen Webroot.

Bitte beachte, dass der Webserver darauf konfiguriert sein muss, überhaupt auf diese Subdomain zu reagieren.

Deiner Fantasie sind hier keine Grenzen gesetzt, einige Beispiele für (Sub-) Domains:

  • juliamueller.tld
  • und.noch.eine.juliamueller.tld
  • sovieledomains.julia.amnesia.uberspace.de
Es reicht nicht, den Ordner oder Symlink blog zu nennen, er muss nach dem Schema blog.juliamueller.tld bekannt werden.

Ob dort ein Ordner oder ein Symlink liegt, ist unserem Webserver egal. Als Beispiel möchte Julia ihr Owncloud über die Domain owncloud.juliasdomain.tld erreichbar machen, die Installation liegt aber unter /var/www/virtual/julia/html/owncloud:

[julia@amnesia ~]$ cd /var/www/virtual/$USER
[julia@amnesia julia]$ ln -s /var/www/virtual/$USER/html/owncloud /var/www/virtual/$USER/owncloud.juliasdomain.tld

Wenn alles gut gelaufen ist, sieht das dann so aus:

 
[julia@amnesia julia]$ ls -l /var/www/virtual/$USER
drwxr-xr-x 4 julia julia 4096 Dec 18 08:24 cgi-bin
drwxr-xr-x 2 julia julia 4096 Nov  5 09:50 fcgi-bin
drwxr-xr-x 6 julia julia 4096 Mar 10 11:28 html
drwxr-xr-x 2 root  root  4096 Mar 16 04:02 logs
lrwxrwxrwx 1 julia julia   13 Dec 24 09:09 owncloud.juliasdomain.tld -> /var/www/virtual/julia/html/owncloud

Das hat den Vorteil, dass sowohl owncloud.juliasdomain.tld als auch julia.amnesia.uberspace.de/owncloud als auch juliasdomain.tld/owncloud das gleiche ausspielen.

Beachte, dass der Verzeichnisname exakt zum Hostnamen passen muss. Es reicht nicht, den Ordner oder Symlink blog zu nennen, er muss nach dem Schema blog.juliamueller.tld bekannt werden.

Ein anderer Anwendungsfall für Symlinks ist die beliebte www-Subdomain. Wenn dein Blog nicht nur unter http://juliasblog.tld/, sondern auch unter http://www.juliasblog.tld/ aufrufbar sein soll, hilft ebenfalls ein Symlink.

Ohne sieht's so aus, www.juliasblog.tld würde den html-Ordner ausliefern:

[julia@amnesia julia]$ ls -l /var/www/virtual/$USER
drwxr-xr-x 2 julia julia 4096 Mar 17 13:48 juliasblog.tld
drwxr-xr-x 4 julia julia 4096 Dec 18 08:24 cgi-bin
drwxr-xr-x 2 julia julia 4096 Nov  5 09:50 fcgi-bin
drwxr-xr-x 6 julia julia 4096 Mar 10 11:28 html
drwxr-xr-x 2 root  root  4096 Mar 16 04:02 logs

Wir brauchen also einen Symlink für www.juliasblog.tld

[julia@amnesia julia]$ ln -s /var/www/virtual/$USER/juliasblog.tld /var/www/virtual/$USER/www.juliasblog.tld

Das Ergebnis sieht gut aus:

[julia@amnesia julia]$ ls -l
drwxr-xr-x 2 julia julia 4096 Mar 17 13:48 juliasblog.tld
drwxr-xr-x 4 julia julia 4096 Dec 18 08:24 cgi-bin
drwxr-xr-x 2 julia julia 4096 Nov  5 09:50 fcgi-bin
drwxr-xr-x 6 julia julia 4096 Mar 10 11:28 html
drwxr-xr-x 2 root  root  4096 Mar 16 04:02 logs
lrwxrwxrwx 1 julia julia   13 Dec 24 09:09 www.juliasblog.tld -> /var/www/virtual/julia/juliasblog.tld

Schon werden die Inhalte dieser beiden URLs aus dem neuen Verzeichnis ausgeliefert - während alle anderen HTTP-Requests weiterhin aus dem Standard-DocumentRoot html ausgeliefert werden.

Etwas Vorsicht ist geboten, wenn Ihr einmal einen Symlinks wieder löschen wollt. Richtig entfernt ihr einen Symlink wie folgt:

[julia@amnesia julia]$ rm www.juliasblog.tld

Achtet gut darauf, dass hinter dem Namen des Links nicht noch ein / angefügt wird, wie es zum Beispiel passiert wenn Ihr Tab zum vervollständigen verwendet.

Der Webserver hat aus Sicherheitsgründen keinen Zugriff auf dein Home-Verzeichnis. Symlinks kannst du also nur unterhalb von /var/www/virtual/$USER/ erstellen und sie können nicht nach /home/$USER zeigen.

Technische Hintergründe

Beachte bitte, dass wir diesen Mechanismus mit Hilfe einer RewriteRule in deinem VirtualHost realisiert haben und es sich somit nicht um echte DocumentRoots handelt. Wenn du daher aus Scripts heraus die Umgebungsvariable DOCUMENT_ROOT auswertest, so wird diese immer auf dem Standard-DocumentRoot verweisen. Wenn du dich für die Details interessierst - so sieht die entsprechende Regel aus:

# If there is a host-specific pseudo-DocumentRoot, use it instead of the default one
RewriteCond %{REQUEST_URI} !^/f?cgi-bin/
RewriteCond /var/www/virtual/julia/%{HTTP_HOST} -d
RewriteRule (.*) /var/www/virtual/julia/%{HTTP_HOST}$1

Beachte bitte außerdem, dass es außerdem keine rechtemäßige Trennung zwischen den verschiedenen (Pseudo-)DocumentRoots gibt. Mehr dazu findest du unter Ein Wort zum Thema Reselling. Soll der Zugriff auf die verschiedenen Domains auch rechtemäßig getrennt sein, so brauchst du dafür separate Uberspaces.

Achtung bei RewriteRules

Da bei Nutzung von solchen Pseudo-DocumentRoots die URL bereits durch unsere o.g. Regeln umgeschrieben wurde, wenn der HTTP-Request dann in deinem Verzeichnis ankommt, brauchst du noch eine zusätzliche Zeile, wenn du in jenem Verzeichnis mit einer .htaccess-Datei mit RewriteRules arbeiten willst - damit diese korrekt funktionieren, braucht's das hier:

RewriteBase /

Damit sollten deine eigenen RewriteRules dann funktionieren.

domain/subdomain.txt · Zuletzt geändert: 2016/03/20 23:50 von uber