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