webmanufacture

Multisites

DruckversionPer E-Mail senden

Mitunter gibt es die Notwendigkeit bzw. Anforderung, voneinander unterschiedene Webumgebungen zu betreiben.
Natürlich können auf einem Server mehrere voneinder getrennte (autonome) Websites laufen.
Interessant wird es, wenn diese miteinander verbunden sein sollen, bzw. von einer gemeinsamen Codebasis ausgeführt werden sollen.
Jene Formen erfordern ein zentrales Tool für die Zusammenarbeit. In Drupal kann dies mit "Multi-Sites", "Organic Groups" (OG) und "Domain Access" (OA) realisiert werden:

  1. Die Core-Multisite-Funktion Drupals kann von Haus aus Inhalte für verschiedene Domains ausliefern.
    Dieses Feature wird klassischerweise als Drupal-Multisite verstanden und beinhaltet die Möglichkeit, unterteilt bis auf die Ebene der Drupal verwendten Datenbanktabellen, festzulegen, welche Site welche Tabelle für sich allein oder gemeinsam (mit anderen) benutzt. Unterschiedliche Sites können unterschiedliche Module und Themes benutzen und im Grunde komplett eigenständig sein.
  2. Mit Domain Access, bzw. dessen Modulsammlung, ist es ebenfalls möglich, Multisites anzulegen. Die Sites benutzen dieselben Datenabanktabellen. Was über welche Domain abgebildet wird und welcher Nutzer an welcher Stelle welche Rechte und Möglichkeiten hat, wird dabei allein über das DomainAccess-Rechtesystem gesteuert.
  3. Organic Groups Organic Groups ähnelt Domain Access dahingehend, dass über Rechte (präzise: Gruppenzugehörigkeiten + Rechte) Inhalte und Benutzer gesteuert werden.

Diese Lösungen haben alle ihre Stärken und Schwächen. Welche der möglichen Optionen Sinn macht, erfordert die Abwägung verschiedener Vor- und Nachteile der Varianten. Im folgenden zunächst zur Übersicht:

  • "Multi-Seiten" mit separaten (Sub-) Domains

    multisites_img
    • kann einer oder mehrere Datenbanken verwenden
    • hat keine Standard-User-Integration, die Integration der Benutzer ist durch den Austausch von Tabellen innerhalb einer Datenbank oder durch Verwendung von "Open ID" mit separaten Datenbanken möglich
    • kann nur mit den Basismodulen betrieben werden
    • denn: da "Multi-Sites" mit separaten Datenbanken vollständig modular aufgebaut sind, kann diese Struktur leicht je nach Bedarf (auf verschiedenen Servern) wieder aufgeteilt werden
    • der Drupal Upgrade-Pfad ist einfach.
       
  • Organische Gruppen (OG)

    organic_groups_img
    • Organic Groups produzieren keine eigene "unabhängigen" Seiten, sondern wie der Name sagt, eine Gliederung der Seite, daher:
    • getrennte "Gruppen" innerhalb einer (Sub-) Domain
    • verwendet eine Datenbank
    • Standard-User-Integration: Benutzer können Gruppen zugewiesen werden
    • kann nur mit zusätzlichen Modulen durchgeführt werden
    • die Struktur kann nicht ohne weiteres geteilt werden bis ein / aus (auf verschiedenen Servern).
       
  • Domain-Access

    domainaccess_img
    • DomainAccess wird verwendet, um mehrere Domains auf einem einzigen Drupal-Installation einzurichten; eine Fallstudie (incl. E-Shop) wird hier: http://drupal.org/node/369398 vorgestellt.
    • ahmt eine "Multi-Site" nach, arbeitet aber eigentlich eher wie "Organic Groups (OG)"
    • verwendet eine Datenbank
    • Standard-User-Integration, die Benutzer werden auf  "Domains" zugeordnet
    • kann nur mit einem Modul realisiert werden
    • diese Struktur kann nicht ohne weiteres geteilt werden bis ein / aus (auf verschiedenen Servern)

Welche Lösung sollte wann gewählt werden? Möglich Kriterien wären:

Die Core-Funktion war (und ist) ein gutes Hilfsmittel, wenn Festplattenkapazität auf dem Server kostbar ist und FTP die einzige administrative Server-Zugriffsmöglichkeit ist.
Eine neue Website braucht nur einen neuen Konfigurationsordner, eine dorthin kopierte und angepasste settings.php und eine neue Datenbank. Nach dem Update einer Funktionalität  ruft man für jede Website die enstprechende Updatefunktion auf.
Hier jedoch zeigt sich ein Problem: Nach dem Austauschen von Moduldateien müssen sofort die Datenbank-Updates auf allen Websites durchgeführt werden. Das kann zum einen einige Zeit dauern; zum anderen kann nicht ausgeschlossen werden, dass ein (zentrales) Modul-Update auf einer der Websites nicht richtig funktioniert. Ein erneuter Test aller 'Multisites' ist zwingend erforderlich - ein nochmaliger nicht unbeträchtlicher, aber unvermeidlicher Aufwand.

  • ihr Vorzug ist die technische Einfachheit;
    der einfacher Upgrade-Pfad kann von Vorteil sein;
    werden größere Non-Core-Module eingesetzt, sind Probleme nicht auszuschließen, die nur mit relativ hohem Test- und Programmieraufwand handhabbar bleiben

Wenn eine nach außen weisende (Sub-) Domain-Struktur nicht benötigt wird,

  • und um lediglich eine einzelne (Teil-) Domain zu erzeugen, genügt die "Organic Groups (OG)"-Lösung, die voneinander abgegrenzte Seiten simuliert und Benutzer mit unterschiedlichen Berechtigungen ausstattet

Mit Domain Access(DA) - eigentlich ein  Access Control Modul - , können wie beschrieben mehrere Domäns mit einer einzigen Drupal-Installation verwaltet werden. Drupal wird sozusagen zum Filter für alle Inhalte im System, um sie nur auf bestimmten Domains anzeigen zu lassen.

  • DA ist zum einen sehr mächtig und bietet viel Fleibilität, ist eigentlich aber ein Access Control Modul. Da es das Core-Node-Berechtigungsystem verwendet, kann es zu komplizierten Wechselwirkungen mit anderen Modulen kommen, die Bewilligungen nutzen oder benötigen.

Quelle: Grafiken by Larry Garfield