C. Eine Multisite-Installation auf dem eigenen Rechner
Die Multi-Site-Funktion ist Grundbestandteil jeder Drupal-Installation. Das ist gerade für die jenigen gut, die mehrere Webseiten von einem Server aus betreiben wollen. Eine Drupal-Installation ist damit in der Lage mehrere Domains auszuliefern. Dadurch wird es natürlich wesentlich leichter die Seiten auf dem aktuellsten Stand zu halten. Auch bei nur einer Damain ist Drupal in der Lage verschiedene Sub-Domains (z.B. forum.meineseite.de) zu bedienen.
Der schwerere Teil einer Multisite Installation ist die Einrichtung des Webservers (Apache) und des DNS-Servers. Dies ist bislang nicht bestandteil dieses Artikels, da jedes System (UNIX, LINUX, WINDOWS...) das jeweils anders handhaben. Ich werde dies zumindest für ein System exemplarisch nachreichen.
Seit Version 5 werden die veschiedenen Domains in dem Sites-Ordner abgelegt.
Verzeichnis | Inhalt |
---|---|
/drupal/sites/all (wird von allen Domains benutzt) |
/modules |
/drupal/sites/default (Wird benutzt wenn kein /drupal/sites/meineseite.de Verzeichnis vorhanden ist.) |
/files settings.php |
/drupal/sites/meineseite.de (Alle Dateien für www.meineseite.de |
/files |
/drupal/sites/meineandereseite.de (Alle Dateien für www.meineandereseite.de |
/files |
/drupal/sites/forum.meineandereseite.de (Alle Dateien für forum.meineandereseite.de |
/files |
Idealerweise sollte man für jede Domain einen eigenen Ordner im /sites Verzeichnis anlegen. Diese sollten auf jeden Fall eine eigene settings.php Datei und das /files Verzeichnis enthalten.
WICHTIG! Für jede Domain muss dann das "File System Directory" auf den jeweiligen Ort eingestellt werden. Also für www.meineseite.de dann /sites/meineseite.de/files anstelle des Standard /files.
Alle Module und Themes, die nur für diese Domain benötigt werden, kommen in die /sites/meineseite.de/modules und /sites/meineseite.de/themes Verzeichnisse.
Alle anderen Module und Themes die von allen Seiten benötigt werden kommen in die /sites/all/modules und /sites/all/themes Verzeichnisse.
ACHTUNG! Es sollten kein /sites/all/files Verzeichnis und keine /sites/all/settings.php Datei eingerichtet werden.
Für die Subverzeichnisse einer Domain gilt genau das gleiche wie für eine eigenständige Domain.
Nach einer solchen Aufteilung erhält man eine sauber aufgeräumte Drupal-Installation:
- Die Drupalverzeichnisse enthalten nur die standard "Kern" Dateien.
- Alle zusätzlichen Erweiterungen und Einstellungen befinden sich in den /sites Unterverzeichnissen wie /sites/all und /sites/meineseite.de oder /sites/default
- /sites/default/settings.php und /files werden benutzt, wenn kein eigenständiges /sites/meineseite.de Verzeichnis existiert.
- /sites/all/modules und /sites/all/themes sind für alle Domains verfügbar.
- Ein Backup des jeweiligen /sites Verzeichnisses enthält alle Dateien (aber nicht die Datenbank) um die jeweilige Domain wieder her zu stellen.
- Das hinzufügen einer neuen Domain ist sehr einfach. Einfach das /sites/default Verzeichnis in /sites/meineandereseite.de kopieren und anpassen.
Desweiteren braucht jede Domain eine eigene Datenbank-Struktur. Diese ist vor der Installation anzulegen und dann einzugeben.
TIPP! Normalerweise ist sind die Seiten unter /sites/default nie zu sehen. Sollte aber trotzdem mal ein Fehler vorkommen sollte man dort einen kleinen Fehler und Hilfetext hinterlegt haben. Ansonsten erscheint dort dann die Erstinstallations-Meldung.
Weiter Installationsanleitungen auch für das ansprechen mit nicht-Standard Ports finden sich in der INSTALL.TXT der Drupal-Installation.
Das Original dieser Übersetzung findet sich HIER.
- Anmelden oder Registrieren um Kommentare zu schreiben
unterschiedliche frontends gleiche daten?
am 15.12.2007 - 19:54 Uhr
gibt es auch die möglichkeit mit unterschiedlichen frontends (design/themes) auf die gleichen daten (-bank) zuzugreifen?
möchte die inhalte meiner webseite für partner in derem look&feel anbieten.
wie stelle ich das an?
danke
patcher
_______________________________
http://www.elternjobs.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
Mögliche Lösung: Multiple Domains oder Domain Access
am 20.12.2007 - 21:11 Uhr
Hallo Patcher,
ich experimentiere zur Zeit mit dem Modul Domain-Access herum, das auf die selbe Datenbank zugreift und mehr Möglichkeiten als das Modul Multiple-Domain bietet.
http://drupal.org/project/multidomain
http://drupal.org/project/domain
Bitte die unterschiedlichen Installations-Anleitungen im Modul-Paket von Domain-Access beachten. Erstens reicht keine einfache Modul-Aktivierung und zweites bietet das Modul einige Gefahren!
Ich selbst möchte unter verschiedenen Domains auch verschiedenen Content anbieten. Identischer Content unter verschiedenen Domains wird übrigens von Google abgestraft, soweit ich weiß.
Ich möchte vor allem eine einheitliche Benutzer-Datenbank haben und den unterschiedlichen Content mit unterschiedlichen Kategorien (Taxonomie) ordnen. Ich weiß nicht ob es grundsätzlich geht, aber ich möchte für jede Domain eine eigenständige Taxonomie haben. Wenn ich das nicht mit Domain-Access hin bekomme, werde ich wahrscheinlich einen anderen Weg einschlagen. Im Moment denke ich über eine zentrale User-Datenbank nach. Wenn jemand einen einfacheren Weg als LDAP kennt (http://drupal.org/project/ldap_integration), wäre ich für einen Tipp dankbar.
Viel Erfolg,
Carsten Logemann
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
hallo carsten, domain-modul
am 22.12.2007 - 14:50 Uhr
hallo carsten,
domain-modul liest sich ganu so, was ich brauche.
welche gefahren siehst du da? bein ein totaler laie ;-)
ja duplicate content ist wohl ein problem bei google.. die frage is nur, ob gleicher content auf einer subdomain anders behandelt wird als auf einer anderen hauptdomain?
danke
patcher
_______________________________
http://www.elternjobs.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
patcher wrote: ja duplicate
am 24.12.2007 - 12:05 Uhr
ja duplicate content ist wohl ein problem bei google.. die frage is nur, ob gleicher content auf einer subdomain anders behandelt wird als auf einer anderen hauptdomain?
Ja, auch das ist schädlich wenn du auf subdomains Duplicate Content produzierst.
Deswegegen sollte man ja auch darauf achten, dass man die Webseite nicht auf verschiedenen Wegen zB.
http://www.domain.de
http://domain.de
und den verschiedenen Möglichkeiten mit Slashes hinten dran erreichbar ist, sondern dass alle Möglichkeiten auf eine einzige umgeleitet werden.
und welche sinnvolle lösung
am 05.01.2008 - 12:19 Uhr
und welche sinnvolle lösung gibt es dann, denn gleichen content für partner anzubieten ohne dass es seo-schädlich ist?
eine idee?
_______________________________
http://www.elternjobs.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
Multisite mit Sharing Daten-Bank und ein weiteres Problem
am 05.01.2008 - 17:09 Uhr
Hallo Zusammen,
ich habe inzwischen das Multisite mit gemeinsamer User-Datenbank ohne LDAP gelöst.
Gute Informationen dazu habe ich im englisch-sprachigen Forum gefunden:
"Sharing users in multisites problem" (http://drupal.org/node/132361)
Ich konnte mehrere Websites mit einer Benutzer-Basis realisieren. Ich habe aber festgestellt, daß sehr schnell das Installations-Script verwirrt sein kann.
Dafür ein Tipp, wie man etwas "per Hand" nachhelfen kann:
Eine frische Default-Site anlegen mit der Standard-Settings.php und ohne Tabellen-Sharing-Einstellungen (siehe auch Kommentare in der settings.php. Die alte Default-Site kann man z.B. auch umbenennen. Dann bei der Installation (die beim Aufruf der Website dann eingeileitet wird, so tun, als würde man eine Website z.B. site3.tld installieren. Dabei verwendet man aber die Zugangsdaten der einen Sharing-Datenbank und definiert für alle Tabellen das Site-spezifische Prefix z.B. "site3_".
Danach per Hand einen die neue Site (in eigenem Ordner oder als default) mit entsprechenden settings.php einrichten, in der die Tabellen für das Sharing das entsprechende Prefix erhalten und das default-Prefix aber auf "site3_" gesetzt wird. Dort kann dann auch schon die Site-Domain auf "site3.tld" gesetzt werden.
Ich weiß zwar nicht, ob das nötig ist, aber ich habe bei diesem Weg per Hand mit PhpMyadmin die unnötigen Tabellen gelöscht. In meinem Fall für die User-Verwaltung ('users', 'sessions', 'authmap' 'sequences') und dem Profil-Modul ('profile_fields' und 'profile_values') jeweils mit dem Prefix "site3_". In einem Fall könnte man so auch per Hand einmal in der Datenbank die Sharing-Variante selbst erzeugen, in dem man z.B. das Prefix "shared_" einbringt, sofern der Installer es nicht machen will.
Als ich auf diesem Weg meine Multisite aufgebaut habe, stellte ich weiteres Problem fest. Dies vermute ich aber weniger bei Drupal, sondern vielmehr in der Server-Konfiguration:
Außer meine Domain in der Default-Site kann zur Zeit Der W3C-Validator nicht auf die anderen Domains zugreifen. Die lässt mich befürchten, daß auch der ein oder andere Browser Probleme haben könnte.
Zu diesem Problem fiel mir sofort ein Work-Around ein: Ich verzichte zur Not auf die Bequemlichkeit bei meinen Modulen eine Neu-Installation oder ein Upgrade durch einen Upload zu bekommen und nutze verschiedene Drupal-Installation in unterschiedlichen virtuellen Webservern, die trotzdem alle auf die selbe Datenbank zugreifen mit den gewünschten gemeinsam genutzten Tabellen.
Diese Lösung ist zugegeben für viele Anwender mit Extra-Kosten verbunden. Aber viele Provider (wie auch ich) bieten dafür sicherlich ein Lösung an (Rabatt etc.). Falls jemand allerdings das Problem eleganter lösen kann, dann wäre auch ich für einen Tipp dankbar.
Bis dann,
Carsten Logemann
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
erreichbarkeit
am 12.03.2008 - 19:58 Uhr
Hallo!
Ich habe meine Multisitestruktur wie oben beschrieben angelegt. jetzt zu meiner Frage wie kann ich mir die verschiedenen sites (ordner) ansehen ohne eine domain drauf zu pointen?
danke im Voraus
lg
Phipo13
auch noch Multisite
am 30.03.2008 - 16:17 Uhr
Ich habe dieselbe Frage wie Phipo13.
Zwar läuft die Multisite auf meinem lokalen Rechner, aber da einige Einstellungen auf dem Server (shared hosting) anders sind, würde ich gerne das Funktionieren der Multisite austesten, bevor ich die schon vorhandene, gefüllte und laufende Domain vom Provider umstellen lasse.
Einige Anmerkungen noch zum Thema "multisite":
Ich habe vor 2 Wochen komplett neu mit Drupal 5.7 (mit postgres und Yaml-Template) angefangen. Das zu meinem Wissensstand ;)
Um eine Multisite einzurichten, habe ich mich durch alles gekämpft, was ich hier auf drupalcenter so gefunden habe. Inzwischen bin ich soweit durchgestiegen, dass es klappt, aber ich musste in den Forumsbeiträgen feststellen, dass immer wieder Unsicherheiten auftraten, wenn es darum ging, WIE ist WANN WO etwas wichtig und notwendig oder gerade nicht.
Zwar gibt es oft die Links auf die englischsprachige/n Seite/n. Aber ich denke, es geht vielen so wie mir: ich kann einigermaßen Englisch, aber wenn es um komplett neues Vokabular geht, bin ich mir viel zu unsicher, ob ich das alles richtig verstehe. (Nachdem ich multisites jetzt besser kenne, habe ich nochmal die englischen Links angesehen - und siehe da, JETZT verstehe ich alles ;)).
Deshalb finde ich die dt Seite sehr wichtig!!
Den Knoten durchschlagen hat bei mir der Kommentar von Carsten Logemann.
Es wäre schön, wenn etwas davon den lakonischen Satz
Desweiteren braucht jede Domain eine eigene Datenbank-Struktur. Diese ist vor der Installation anzulegen und dann einzugeben.
ersetzen würde.
Was ich jetzt über multisites gelernt habe:
Jede Datenbank muss existieren, d.h., sie kann NICHT während einer Drupal-Installation angelegt werden;
der Verbindungs-String zur Datenbank befindet sich in der Datei "settings.php" (und nirgendwo sonst noch)
Beim ersten Aufruf der Domain (auf dem Server) oder des Drupal-Installationsordners (zB WinXP localhost) liest Drupal die Datei /sites/default/settings.php
Ist dort KEIN brauchbarer Datenbank-Verbindungs-String angegeben, beginnt die Installation: das heißt, es werden 1) die Verbindungsdaten der gewünschten Datenbank abgefragt, dann 2) alle nötigen Tabellen in dieser Datenbank angelegt und 3) die Einstellungen in der Datei "settings.php" geändert: der korrekte DB-Verbindungs-String wird eingetragen und evtl der Präfix für die DB-Tabellen, falls man einen bei der Installation angegeben hat.
In manchen Forumsbeiträgen gab es die Aufforderung, die DB-Struktur selber anzulegen. Das habe ich so verstanden, dass man Teil 2) der automatischen Installation auch manuell erledigen kann (oder früher vielleicht auch musste?); ich habe aber nicht rausgefunden, wo die notwendigen SQL-Anweisungen für die Grundstruktur zu finden wären...
also tut man jetzt so, als wäre noch gar keine "Basis-"Seite eingerichtet und fängt für die Einrichtung der 2. Seite von vorne an:
Umbenennen des Ordners "default" zB in "_default"; Kopieren des Original-default-Ordners der Drupal-Distribution; Erneutes Aufrufen der Domain (auf dem Server) oder des Drupal-Installationsordners (zB WinXP localhost) wie oben:
man gibt die Verbindungsparameter für die DB an, die für die 2. Seite (im weiteren "Multi1" genannt) genutzt werden soll: es gibt mehrere Möglichkeiten: eine andere DB oder die DB, in der schon die Tabellen der "Basis" liegen.
Wenn man eine DB benutzt, in der schon (irgendwelche) Tabellen einer Drupal-Installation liegen, muss ein Präfix angegeben werden, damit klar ist, welche DB-Tabellen zu welcher Site gehören; zB könnte man als Präfix hier "multi1_" angeben
$db_prefix = array(
'default' => 'multi_',
'users' => 'basis_',
'role' => 'basis_',
)
Ich nehme mal an, dass Drupal immer die "Basis"-Tabellen nehmen wird, wenn es in der "settings.php" so angegeben ist.
Und für eine spätere Aufteilung/Export in getrennte Datenbanken ist es besser, wenn man nicht nachträglich wieder die fehlenden Tabellen anlegen muss.
$base_url muss auskommentiert und gesetzt werden (dazu ist ja genug geschrieben worden)
1) den momentanen Ordner "default" (das soll ja der Ordner der "Multi1"-Seite werden) umbenennen in den Namen der $base_url, wobei "/" durch"." ersetzt werden (ist auch schon gut beschrieben)
2) den Ordner "_default" wieder zurückbenennen in "default"
Jetzt sollte es funktionieren!
Vielleicht hilft das dem einen oder anderen?
Oder habe ich was falsch verstanden?
Bin immer dankbar für neue Erkenntnisse...
Gruß, anki-web