06. Jan
Post

MultiSite-Einrichtung bei Drupal 7

Vor Kurzem wurde Drupal 7 veröffentlicht. Neben zahlreichen Verbesserungen und Features, die woanders schon mehrfach beschrieben wurde, möchte ich bloß kurz und knapp beschreiben, wie man Drupal als sog. MultiSite-Umgebung konfiguriert. MultiSite bedeutet, dass eine einzige Installation von Drupal für mehrere einzelne Websites genutzt werden kann. Dies erleichtet die Einrichtung und Wartung der Anwendung selbst, der Module und Themes, da nur eine einzige Codebase gepflegt werden muss.

  1. Ich gehe von einer bereits erfolgten Drupal-Standard-Installation aus (siehe z.B. Quick install for beginners). Die Standard-Website ist demnach unter “http://example.com” erreichbar. Ziel dieser Anleitung ist es, eine weitere Site über die Adresse “http://www.beispiel.de” bereit zu stellen.
  2. Im Drupal-Installationverzeichnis existiert ein Ordner namens “sites“. Darin wird für jede zusätzliche Site ein neuer Unterordner erstellt. Wir erstellen also den Ordner “sites/www.beispiel.de“.
  3. Im Ordner “sites” existiert u.a. bereits der Ordner “default“. Aus diesem Ordner kopieren wir die Datei “settings.php” in den soeben neu erstellten Ordner “www.beispiel.de“.
  4. Nun muss die Datei “settings.php” angepasst werden. Wir verwenden der Einfachheit halber die Datenbank der Drupal-Hauptinstanz mit und müssen daher nur ein separates Tabellen-Prefix eintragen, damit Drupal nicht durcheinander gerät: Im Array “$databases” (ca. Zeile 181) tragen wir ein Prefix ein, z.B.
    $databases = array (
      'default' =>
      array (
        'default' =>
        array (
          'database' => 'drupal',
          'username' => 'drupal',
          'password' => 'secret',
          'host' => 'localhost',
          'port' => '',
          'driver' => 'mysql',
          'prefix' => 'site1_',
        ),
      ),
    );

     

  5. Anschließend sorgen wir noch mittels “chmod” und/oder “chown” dafür, dass der Webserver-User im Ordner “sites/www.beispiel.de” schreiben darf.
  6. Die Anpassung der Drupal-Dateien ist nun fast abgeschlossen. Nun muss (falls noch nicht geschehen) dafür gesorgt werden, dass der DNS-Name “www.beispiel.de” auf den Webserver zeigt und dass der Webserver über diesen Namen auf die Drupal-Installation zeigt. Diese Basics sind nicht Teil dieser Anleitung. :-)
  7. Sind diese Vorbereitungen getroffen, kann man mit einem Webbrowser “http://www.beispiel.de/install.php” aufrufen. Es erscheint dann wie bereits in der Installationanleitung (siehe 1.) gezeigt, der Einrichtungsdialog für die neue Site.
  8. Nach der Durchführung ist die neue Site dann über “http://www.beispiel.de” verfügbar.

In Drupal 7 hat man außerdem die Möglichkeit, dieser zusätzlichen Site weitere Aliase zu geben. Verweist man beispielsweise mit den ServerAlias “beispiel.de” (also ohne “www“) ebenfalls auf die Drupal-Installation, kann man dafür sorgen, dass man – statt auf die default-Site – direkt bei der neuen Site (“www.beispiel.de“) landet.

Dazu kopiert man im Ordner “sites” die Datei “example.sites.php” zu “sites.php“, ebenfalls im Ordner “sites“. Für jeden zusätzlich gewünschten Alias fügt man der Datei eine neue Zeile hinzu:

$sites['beispiel.de'] = 'www.beispiel.de';
$sites['test.ganzanderedomain.de'] = 'www.beispiel.de';

Drupal findet diese Datei automatisch, wenn sie existiert und setzt die Konfiguration entsprechend um. Neben diesen explizit gesetzten Einstellungen, versucht Drupal auch automatisch, eine passende Site zur aufgerufenen URL zu finden. Dies ist ein Auszug aus der Datei “sites/example.sites.php“:

For example, for a fictitious site installed at
http://www.drupal.org/mysite/test/, the 'settings.php'
is searched in the following directories:

1. sites/www.drupal.org.mysite.test
2. sites/drupal.org.mysite.test
3. sites/org.mysite.test

4. sites/www.drupal.org.mysite
5. sites/drupal.org.mysite
6. sites/org.mysite

7. sites/www.drupal.org
8. sites/drupal.org
9. sites/org

10. sites/default

GD Star Rating
lädt…

MultiSite-Einrichtung bei Drupal 7, 5.0 von 5 basierend auf 1 Bewertung

Das könnte Dich ebenfalls interessieren:

Veröffentlicht in: IT / Technology

Über den Autor:

Beruflich arbeite ich als Premium Support Engineer bei Novell. Seit 2008 schreibe ich in diesem privaten Blog über Linux, Software, Programmierung, Suchmaschinen-Optimierung und über alles, was mir außerdem an IT-Themen begegnet. Darüber hinaus blogge ich hier auch über meine Hobbies, meine Meinung zu Filmen, Musik und was mir sonst so vor die Flinte kommt.

10 Kommentare zu "MultiSite-Einrichtung bei Drupal 7"

Trackback | Kommentar RSS Feed

  1. Dennis sagt:

    Alias Definitionen machen nur Sinn in Drupal, wenn die httpd.conf einen allgemeinen Eintrag “” enthält und der Apache alles an das CMS durchreicht. Ich halte es aber für besser wenn der Apache dedizierte VirtualHost-Definitionen und Drupal nur die 1..n Multisite-Installationen als FQDN enthält und jeder andere Aufruf in einer Fehlermeldung mündet (z.B. direkter Aufruf über IP), da es dann meist bösartige Aufrufe sind, die gesondert vom Apache behandelt werden sollten. Eine aufgerufene 2rd Level Domain sollte vom Apache auf die richtige 3rd Level Domain umgebogen werden. So muss das Drupalframework nicht für alle möglichen Varianten alles durchprobieren, bevor der richtige Inhalt ausgeliefert werden kann.

  2. thomas sagt:

    @Dennis:

    Alias Definitionen in Drupal machen NICHT nur Sinn, wenn man alles vom Apache durchreicht. Der Apache fordert keine “Alles-oder-nichts”-Konfiguration. Es spricht nichts dagegen, einem VirtualHost einem “ServerName” und ein oder mehrere “ServerAlias”-Optionen zu geben, die dann auch von Drupal ausgewertet werden.

  3. Axel sagt:

    Weiterführend gibt’s hier eine Anleitung zum Updaten einer Drupal-MultiSite-Umgebung.

    Hi Thomas,

    schöner Artikel. Bin auf der Suche nach “Update Multisite” auf deinen Artikel gestossen. Leider hat oben genannter Link nichts mit Drupal 7 zu tun. Alle dort angegebenen Module basieren auf Drupal 6!

    Habe gerade in einer Testumgebung ein Update auf einer Subseite gemacht und konnte mich nicht mehr auf einer anderen Subsseite einloggen (hatte natürlich ein Backup ^^).

    Echt problematisch. Ich denke, da ist Drupal 7 einfach noch lange nicht so weit, wie Drupal 6.

    Also vielleicht demnächst mal wieder hier mit neuen Infos zu “Multisites unter D7″.

    Grüsse Axel

    • Axel sagt:

      Da muss ich mir doch gleich mal selbst antorten ;)
      Drush könnte eine Lösung für das Multisite-Update Problem sein.

      http://drupal.org/project/drush

      • Thomas sagt:

        Hallo Axel,

        ich muss zugeben, der Drupal-Update-Link war etwas halbherzig gesucht. Da ist mir die Version gar nicht aufgefallen. Ich betreibe die Drupal 7 Multisite-Umgebung derzeit nicht mehr. Sie war auch nur als Test gedacht. Ich werde das aber in den nächsten Tagen nochmals wiederholen und mich dann mal die Update-Möglichkeiten untersuchen.

        Danke für den Hinweis!

        Gruß,
        Thomas

  4. Danke, Thomas, fuer die Anleitung. Ich habe nun den selben Drupal 7 Code fuer zwei verschiedene Sites auf der selben Datenbank laufen. Ich benutze wie beschrieben verschiedene Prefixe. Doch fuer die zweite Site kam im Installationsscript kein Feld mehr, um den Admin User einzutragen. Ich habe nun eine zweite Site, die ich aber nicht aendern kann. Hat jemand eine Idee, wie ich einen Admin fuer diese zweite Site definieren kann? Oder was ich evtl. falsch gemacht haben koennte? Dankeschoen!

    • Lieber Thomas, ich habe es soeben selbst herausgefunden. Ich habe fuer die 2. site die settings.php der ersten site genommen und nur den prefix geaendert. Datenbank war die selbe. Dabei fragt Drupal bei der Installation nicht mehr nach dem Admin User. Dann habe ich die default.settings.php genommen und es hat funktioniert.

  5. max sagt:

    bin auch grade dabei mein drupal in multisite umzubauen um eben die codebase vorteile zu nutzen. ich werde die anleitung gleich mal teste bzw. zur hilfe nehmen

    danke dafür

  6. Hi Thomas,
    im Abschnitt weiterer Aliase hat sich ein Fehler eingeschlichen:
    $sites['beispiel.de''] = ‘www.beispiel.de’;
    Ansonsten werde ich mich mal an der Multi-Site Umgebung im Zusammenhang mit dem Commerce-Modul versuchen.
    Gibt es dazu schon Erfahrungen?
    Grüße
    Johannes

    • Thomas Schulte sagt:

      Hallo Johannes,

      danke für den Hinweis. Hab’s grad korrigiert (an zwei Stellen).

      Bei Drupal Commerce kann ich leider nicht helfen, damit habe ich mich bisher noch nicht beschäftigt.

      Gruß, Thomas

Schreibe einen Kommentar