Arbeiten mit Subdomains

Viele Fragen kommen auf, wenn man zum ersten mal eine Internetseite betreibt - welcher Hoster, welche Einstellungen, welcher Workflow - und auch, wenn Contao ein relativ benutzerfreundliches CMS ist, ergeben sich im administrativen Bereich dann doch häufig Probleme. Mit ein paar Vorüberlegungen klappt es besser - und saubere Verzeichnisstrukturen auf einem Webserver sind die Voraussetzung.

Der Anfang ist ja schnell gemacht, die Installation eines Systems wie Contao geht in drei Minuten über die Bühne: Contao-Check herunterladen, ausführen und dabei installieren. Datenbank-Zugangsdaten angeben und Admin-Account anlegen. Fertig. Und das System läuft dann auch ein paar Jahre.

Aber irgendwann steht ein Update an, und man hat vielleicht ein paar Erweiterungen installiert, bei denen man unsicher ist, ob sie unter der neuenContao-Version genauso laufen wie unter der alten. Die neue Version also einfach 'drüberinstallieren'? Den Mutigen gehört die Welt - aber sie sind nicht unbedingt immer erfolgreich. Also die Überlegung, es erst einmal mit einem Test zu versuchen und dazu eine Parallelinstallation zu benutzen. Aber wohin damit?

Dummerweise fand die Installation vor fünf Jahren im Wurzelverzeichnis des Webservers statt - dort befinden sich jetzt die Ordner von TYPOlight nebst einer angejahrten .htaccess - man könnte jetzt auch die Idee kommen, einfach ein weiteres Verzeichnis dort anzulegen, zum Beispiel /meinneuescontao, und dort zu testen. Vorab: das geht im Prinzip, aber es ist nicht schön. Und abhängig von der Serverkonfiguration kann einem die im Root befindliche .htaccess auch gehörig in die Parade fahren, denn deren Einstellungen können sich auch auf Unterverzeichnisse auswirken. 'allow_override' ist eben nicht bei jedem Hoster erlaubt.

In diesem Augenblick dämmert uns, dass wir solche Sachen besser lösen könnten - mit Verzeichnisstrukturen, die uns dann auch noch mit simpleren Update-Workflows und der Möglichkeit zum Staging belohnen. Dazu brauchen wir dann noch mindestens eine Subdomain und eine weitere Datenbank - aber das ist ja in Zeiten des günstigen Webhostings kein Problem.

Jetzt aber dazu, wie man das Webhosting grundständig und zukunftsfähig einrichtet.

Zuerst brauchen wir eine Verzeichnisstruktur. Ausgehend vom Wurzelverzeichnis auf dem Webserver legen wir mehrere Ordner an. Für alles, was unser CMS beinhaltet, können wir einen Ordner /CMS erstellen (und nehmen den Gedanken mit, dass für Statistiken ein Ordner /stats eine gute Idee ist, oder für eine Groupware eben /groupware ...). Innerhalb von /CMS kommen nun versionsspezifische Ordner, beispielsweise im Fall von Contao/2_11, /3_0, 3_1 oder /3_2 - je nach Bedarf und eingeetzter Versionsnummer. Und innerhalb dieser Ordner werden dann die jeweiligen Versionen installiert - gibt es eine neue, dann lege ich eben ein neues Verzeichnis an.

Was bringt das? Schon aus der Ordnerstruktur kann ich ablesen, in welchem System ich mich befinde, und muss nicht immer die constants.php zu Rate ziehen. Die Gefahr, dass man sich verfliegt, ist einfach wesentlich geringer. "Aber!" werden jetzt einige sagen, "dann gibt es ja so seltsame URL-Strukturen wie http://example.com/cms/2_11/index.php! Das geht ja gar nicht!"

Subdomains, FTW!

Nein, das geht auch gar nicht - weder sieht das schön aus, noch trägt das zur Freude von Suchmaschinen bei. Man kommt dem aber bei. Zunächst einmal stellen wir im Kontrollpanel des Webhosters sicher, dass example.com auf das Verzeichnis zeigt, auf dem sich die Live-Site befindet (also in dem Beispiel nach /cms/2_11/). Damit werden sämtliche Aufrufe von example.com dann von der Installation in diesem Verzeichnis bedient. Yummy!

Für unser Updatesystem, dass sich vielelicht in /cms/3_2/ befindet, legen wir jetzt eine Subdomain an. Ich finde staging.example.com eine gute Idee - und wir stellen dann ein, dass diese Subdomain in das Verzeichnis /cms/3_2/ zeigt. Alle Aufrufe der Subdomain werden dann von hier bedient.

Update? Aber sicher.

Jetzt ist der Tisch quasi gedeckt - in unserem 3_2-Ordner machen wir eine Kopie der Liveseite, daten das System von 2.11 auf 3.2 up und testen, ob alles läuft. Wenn alles läuft, dann ist der nächste Schritt wieder der Weg ins Kontrollpanel des Webhosters. Dort schnell die Domain example.com auf /cms/3_2/ gesetzt, und alle Aufrufe werden vom aktualisierten System ausgeliefert. Nebenwirkungsfrei.

Falls dann doch etwas noch nicht so läuft, wir man sich das vorgestellt hat, kann man nun auch die Domains nach Bedarf wieder auf die ursprüngliche Installation zurücksetzen. oder auf einen Zwischenschritt. Oder, oder oder. Und in Zukunft hat man eine Sorge weniger.

Details: was bekommen wir noch, wenn wir Verzeichnisstrukturen einsetzen?

Alle URL-Strukturen bleiben konsistent und ohne Pfade, und deshalb ist ein editieren von Dateien wie 'localconfig.php' oder 'pathconfig.php' nicht nötig. Änderungen an der .htaccess sind ebenfalls überflüssig. Suchmaschinen finden alle Inhalte immer unter derselben Adresse. In Contao muss man ebenfalls keine absoluten Pfadangaben berücksichtigen (das trifft manche Konstruktionen, die Inhalte mit Insert-Tags zur Verfügung stellen). Mit einem weiteren Verzeichnis, in der sich eine Kopie des Livesystems befindet und die unter einer weiteren Subdomain ansprechbar ist, sind redaktionelle Workflows möglich - Redakteurinnen und Redakteure arbeiten dann beispielsweise unter redaktion.example.com, und veränderte Inhalte werden mit dem Tool SyncCto nach Freigabe auf das Livesystem gespiegelt.

Ideen und Anwendungsszenarien gibt es also reichlich.

Zurück

Einen Kommentar schreiben

Kommentar von Mario |

Endlich trifft man mal normale Leute! ;-)

Ich mache das genauso und alle schauen mich immer so ungläubig an. So nach dem Motto: Was machst Du dir ja für einen Stress mit den ganzen Ordnern und Subdomains. Aber ich mag nunmal Ordnung und beim Updaten und Testen bleibt mein Blutdruck immer ganz unten.

Kommentar von sonja |

Vielen Dank für die tolle Anleitung!
"Dummerweise fand die Installation vor fünf Jahren im Wurzelverzeichnis des Webservers statt - dort befinden sich jetzt die Ordner von TYPOlight nebst einer angejahrten .htaccess" - spricht mir absolut aus der Seele und meine Updates bereiten mir sehr oft Kummer!
Das Problem ist nur oft das "Kontrollpanel des Webhosters" - wenn es hier nicht die Möglichkeit gibt, auf eine andere Subdomain umzuleiten. Dann hat man wieder den Ärger mit der htacces im Root-Ordner... *heul*

Antwort von Carolina Koehn

Nicht schön, wenn's nicht geht. Welcher Hoster ist denn das?

Kommentar von Claudia |

Vielen Dank!

Mir ist gerade ein ganzer Weihnachtsbaum aufgegangen!
(Besser spät als nie...)

Kommentar von leolux |

Sehr lesenswert. Da öffnen sich neue Möglichkeiten. Würde in einem solchen System auch der Ordner files, der ja recht viele Dateien enthalten kann, mehrfach eingebunden, also sowohl bei 3_1 wie bei 3_2? Wenn das so ist, braucht man je nach Größe der Website schon ziemlich viel Platz.

Antwort von Carolina Koehn

Ja, das wären dann quasi Duplikate - wobei ich mich da jetzt schon sehr strecken muss, um ein Problem zu sehen. Das kleinste Webhostingpaket, dass ich für einen Kunden adminstrierte, bietet irgendwas um die 4 GB an Webspace.

Ich sag's mal so: wenn ich das zu einem Dritteln mit Bildern etc. ausreize, dann habe ich bei günstigem Webhosting ohnehin ein Performanceproblem mit Contao.

Ich glaube nicht, dass man in Zeiten der Terabyte-Speicher am Platz für Backups oder für sichere Upgradepfade sparen sollte.

Kommentar von leolux |

Ich stimme dir uneingeschränkt zu. Deine Vorgehensweise hätte mir vermutlich die eine oder andere Schockstarre beim Update auf 3.2 erspart. Den Weg werde ich ausprobieren.

Kommentar von leolux |

Wenn die Seite in einen Ordner (3_24 z.B.) gespiegelt wird und ebenfalls eine neue Datenbank erstellt wird für das Update, dann müssen die Datenbankverbindungen aber doch zumindest in der localconfig für die Updateversion geändert werden. Richtig?

Antwort von Carolina Koehn

Ich mache das immer mit SyncCto (dazu gibt es auch einen Beitrag hier). Das geht inzwischen recht flott mit den Schritten

  • Contao-Checktool in den neuen Ordner hochladen
  • Aufrufen, Contao in der erwünschten Version installieren
  • im Installtool die entsprechenden Daten angeben (selbstverständlich eine neue Datenbank)
  • Backend nach Installation aufrufen, dann über die Erweiterungsverwaltung SyncCto installieren
  • Einstellungen aufrufen und dabei einen SyncCto-Schlüssel generieren lassen
  • Dann in die alte Installation wechseln und dort SyncCto installieren
  • in SyncCto als neuen Client die Zielinstallation anlegen, dabei den erzeugen Schlüssel angeben
  • Synchronisieren -> Fertig

Die Localconfig wird nicht mitsynchronisiert (jedenfalls dann nicht wenn man es nicht ausdrücklich in den SyncCto-Einstellungen sagt).

Und jetzt hat man ein identisches System, mit dem man Updaten kann.

Kommentar von leolux |

Herzlichen Dank für die ausführliche Info!!

Kommentar von Klaus |

Beim Stöbern im Netz auf diesen Beitrag gestossen, kurz nachgedacht und meine Contao Installation umgestellt.
- Ornder anlegen
- Contao dahin verschieben
- Im HosterAdminTool die Domain umstellen
- Fertig! Nix weiter zu tun.
Vielen Dank für diesen Hinweis.

Kommentar von Fidel |

Hey, danke für diesen Text - aber weiße Schrift auf dunklem Untergrund zu lesen ist echt unangenehm :).

Hast Du Fragen oder Anregungen? Dann nutze die Kommentarfunktion.

Die Verarbeitung Ihrer Daten erfolgt im Rahmen unserer Datenschutzerklärung.