Multisite: Viele Sites mit einem Drupal

Etwas wirklich Nützliches im Core ist die Fähigkeit von Drupal, eine Multisite-Installation zu ermöglichen.

Oft wird pro Website ein CMS installiert. Das ergibt bei 45 Kundenwebsites 45 Drupal-Installation, 45 Konfigurationsvorgänge, 45 Updates etc. In einer Multisite-Installation haben Sie nur eine Drupal-Installation, beliebig viele Kundenwebsites und einen Updatevorgang! Sie sparen also erheblich Zeit und Geld.

9.9.1 Die Ordner sites/default und sites/all

Sie haben sich bestimmt schon über das Verzeichnis sites/default und sites/all in Ihrem Drupal-Ordner gewundert:

Im sites/default-Verzeichnis liegen alle Dateien, die explizit mit der ersten installierten Site zu haben, der Standardwebsite. Hochgeladene Dateien, Benutzerbilder etc. Außerdem finden Sie hier noch die Datei settings.php mit den Zugangsdaten zur Datenbank.

Jeder neue Ordner im sites-Verzeichnis repräsentiert eine neue Website, z.B. sites/meinersterkunde. Bestandteile, die nur für eine Website (spezifisches Theme) zugänglich sein sollen, werden hier abgelegt (sites/meinersterkunde/themes).

Im sites/all-Verzeichnis werden alle Bausteine (Module, Themes) abgelegt, die für alle Websites dieser Installation benutzbar sein sollen, beispielsweise die bereits von uns installierten Module Administration Menu, Poormanscron und die Editoren. In diesem Verzeichnis werden später die meisten Module liegen. Wirklich selbst programmierte Module, die nur für eine Website eingesetzt werden, sind eher selten und oft „Notlösungen“. Bei Themes sieht es anders aus. Hier gibt es recht oft spezifische Themes für eine Website.

Um so eine Installation mal durchzuspielen, möchte ich mit Ihnen unter XAMPP Lite und dem Betriebssystem Windows eine Multisite aufbauen.

9.9.2 Schritt 1 – Der Plan

Die Anforderungen sind zunächst ganz einfach. Nehmen wir an, Sie wollen zwei Websites mit einer Drupal-Installation aufbauen. Sie möchten die default-Website http://drupalbuch nennen und die erste Kundenwebsite http://meinersterkunde. Wenn Sie diese URLs in Ihrem lokalen Browser eingeben, sollen zwei unterschiedliche Websites erscheinen.

9.9.3 Schritt 2 – Die DNS-Auflösung unter Windows

In Windows finden Sie im Ordner c:\windows\system32\drivers\etc\hosts die Datei, die für die Domain-Namensauflösung zuständig ist. Um sie bearbeiten zu können, benötigen Sie Administrationsrechte.

Starten Sie zuerst den Windows Editor mit Administrationsrechten (rechte Maustaste auf das Editor-Icon oder den Editor-Menülink und ausführen als Administrator wählen) (Abbildung 9.14).

Editor als Administrator öffnen
Abbildung 9.14: Editor als Administrator öffnen

Laden Sie dann die Datei c:\windows\system32\drivers\etc\hosts in den Editor. Achten Sie darauf, dass Sie dabei die Auswahl alle Dateien im Editor ausgewählt haben. Die hosts-Datei hat keine Endung, und der Editor erkennt sie mit den Normaleinstellungen nicht. Tragen Sie die folgenden Werte ein:

127.0.0.1 localhost

127.0.0.1 drupalbuch

127.0.0.1 meinersterkunde

Nach dem Speichern sind die Vorbereitungen abgeschlossen.

9.9.4 Schritt 3 – Den Apache-Webserver konfigurieren

Jeder Webserver muss konfiguriert werden und wissen, wohin er schauen soll, wenn Anfragen an ihn gestellt werden. In XAMPP Lite wird der Apache-Webserver benutzt, und der hat im Ordner c:\xampplite\apache\conf diverse Konfigurationsdateien.

Fügen Sie in der Datei c:\xampplite\apache\conf\extra\httpd-vhosts.conf die folgenden Zeilen ein3 bzw. entfernen Sie die Dopplekreuze vor dem Befehl:

# Use name-based virtual hosting.

NameVirtualHost *:80

# VirtualHosts:

<VirtualHost *:80>

# Geben Sie hier Ihre eigene E-Mail-Adresse ein

ServerAdmin admin@example.com

DocumentRoot "c:\xampplite\htdocs"

ServerName localhost

</VirtualHost>

<VirtualHost *:80>

# Geben Sie hier Ihre eigene E-Mail-Adresse ein

ServerAdmin admin@example.com

DocumentRoot "c:\xampplite\htdocs\drupal62"

ServerName drupalbuch

ServerAlias meinersterkunde

</VirtualHost>

Das, was Sie da tun, ist die Einrichtung zweier namensbasierter virtueller Server. Im Internet erledigt das Ihr Provider für Sie oder ein Programm wie Plesk oder Confixx.

Wenn Sie jetzt im XAMPP Control Panel den Apache einmal stoppen und dann neu starten, sollte folgender Effekt auftauchen:

HINWEIS

Sie können die Namen der lokalen Domains völlig frei festlegen. Oft nennt man auch die lokale Version einer Website anstelle http://meinewebsite.de   -> http://meinewebsite.lokal.

 

9.9.5 Schritt 4 – Drupal konfigurieren

Als letzten Schritt müssen Sie in Ihrer Drupal-Installation im sites-Ordner den Ordner meinersterkunde für die gleichnamige Website anlegen. Die Website drupalbuch befindet sich im default-Ordner (Abbildung 9.15):

Multisite Ordner
Abbildung 9.15: Multisite Ordner

Im Ordner meinersterkunde benötigen Sie die Datei settings.php im Originalzustand.

  • Kopieren Sie sich die Datei /sites/default/settings.php in den Ordner /sites/meinersterkunde. Die Datei ist auch unter Windows schreibgeschützt. Vor der Bearbeitung müssen Sie per rechter Maustaste und einem Klick auf Eigenschaften den Haken beim Attribut Schreibgeschützt entfernen.

  • Löschen Sie die Zeile 93. Je nachdem, mit welchem Benutzer und Passwort Sie Ihr Drupal installiert haben, steht hier etwas wie:
    $db_url = 'mysqli://nobody:kaesekuchen@localhost/drupal62'
    oder
    $db_url = 'mysqli://root@localhost/drupal62';

Sie können die Zeile löschen oder auskommentieren.

/* $db_url = 'mysqli://root@localhost/drupal62'; */

Wenn Sie nach dem Speichern der Datei im Browser http://meinersterkunde/install.php aufrufen, können Sie Ihre erste Kundenwebsite einrichten. Drupal startet mit dem Webinstaller, der in der settings.php alle notwendigen Änderungen durchführt und die Datei danach wieder auf readonly (schreibgeschützt) setzt.

In Abschnitt 2.6 Der Drupal-Webinstaller finden Sie die Beschreibung des Installationsvorgangs. Denken Sie daran, dass die neue Website eine neue Datenbank benötigt, die Sie vor der Installation angelegt haben müssen.

9.9.6 Das Ergebnis

Das Ergebnis ist beeindruckend, wenn denn alles funktioniert hat. Sie können tatsächlich in 5 Minuten eine neue Drupal-Website einrichten und müssen jetzt nur noch die Module aktivieren, die Sie dort benutzen wollen, sie stehen ja im Ordner /sites/all auch für diese Website zur Verfügung.

Außer der Tatsache, dass es funktioniert, werden natürlich sofort Wünsche wach:

  • eine gemeinsame Benutzertabelle für alle Websites

  • viele Domainnamen, aber nur ein Verzeichnis

  • ...

Alles ist machbar.

Allerdings – auch wenn das Prinzip einfach ist – kann einen die Einrichtung einer Multisite je nach Betriebssystem, Hardware-Umgebung, Provider und Domain-Verwaltung zum Wahnsinn treiben. Sehen Sie mir bitte nach, dass ich nicht auf MAMP (OSX), Linux, Unix, Strato, 1und1, Domainfactory, Hetzner, Ubuntu, SUSE, EeePC, iPhone4, Nokia S605, NAS-Laufwerke und was einem sonst noch so einfällt, eingehe.

Ich verspreche Ihnen hoch und heilig: Es funktioniert überall.


  • 3 Eine bereits geänderte vhosts.conf finden Sie auf der Buch-CD.

Section: 
Freetags: