9.9 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:

  • Wenn Sie http://localhost aufrufen, sollte die Startseite von XAMPP Lite erscheinen.

  • Wenn Sie http://drupalbuch oder http://meinersterkunde aufrufen, sollte die Startseite Ihres installierten Drupals erscheinen.

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.

Ihre Bewertung: Nichts Durchschnitt: 3.8 (8 Stimmen)

Eine Installation, mehrere Sites, eine Benutzerliste

Hallo Hagen,

vielen Dank für dein nützliches Buch! Ich möchte mit einer Drupal-Installation mehrere Sites einrichten, die als Zusammenhang eine Benutzerliste haben sollen. Geht sowas? Ich habe in Google zu dieser speziellen Anforderung noch nichts finden können.

Danke für deine Hilfe.

Gruß,
Andreas

Nochmal: Eine Installation, mehrere Sites, eine User-Liste

Hallo Hagen,

ich habe inzwischen das entsprechende Tutorial gefunden:
http://drupal.org/node/291373

Gruß,
Andreas

Multisite Installation auf allinkl

Hallo und danke für das tolle Video,

Ich habe mir den Abschnitt über die Multisite-Installation bestimmt 10x angesehen und es nicht hinbekommen.

ich hatte im Ordner "Sites" wie im Video erklärt ein Verzeichnis "subdomain
" erstellt.

Das Verzeichnis musste aber heissen "subdomain.hautpdomain.de" dann hat es funktioniert mit der Multisite-Installation.

Aber ansonsten hab ich ne Menge durch das Video gelernt, es müsste mal eines geben was sich nur mit Modulen und Themes beschäftigt mit Schwerpunkt Views und CCK...=)

Gruß

drupal multisite theme

Hallo. Ich möchte das bald ausprobieren und vorher etwas wichtiges wissen. Was ist dann eigentlich mit der optischen Darstellung der zweiten Seite (andere Domain). Kann ich dann das Aussehen der zweiten Seite unabhängig von der ersten Hauptseite verändern? So das Beide völlig anders ausschauen und doch ein und das selbe Drupal läuft?

Vielen lieben Dank für eure Hilfe!

Josi

Bild von Hagen Graf

Anderes Aussehen ist möglich

Die einzelnen Websites innerhalb einer Drupal Installation haben eine eigene Datenbank und können eigene Module und eigene Themes haben. Es ist allerdings auch möglich alle Module und alle Themes allen Websites zur Verfügung zu stellen. Ja nach Integrationswunsch können auch einzelne Tabellen (User) gemeimsan genutzt werden.
Es ist also problemlos möglich ein völlig eigenständiges Aussehen zu haben.

struktur

default sollte nicht die erste Seite sein sondern nur die default einstellungen beinhalten.
drupalbuch würde ich als drupalbuch.de im verzeichnis /sites extra anlegen, genau wie meinersterkunde.de.

.

.

Multisite

Hallo Hagen,

ich habe beides, Buch und CD, leider finde ich keine Antwort für ein Multisitesystem für unterschiedliche Server.

Hintergrund: Unsere Firma hat 5 unterschiedliche Sprachen/Länderwebsites. Gehostet werden sie auf Servern in den entsprechenden Ländern.

Wie kann man also ein Multisite System realisieren, das mit unterschiedlichen Servern korrespondiert?

Vielen Dank

Ansich nur, indem alle Server

Ansich nur, indem alle Server einen gemeinsamen File- und Datenbankserver nutzen.