Fertiges Drupal-Projekt in Multidomain-Projekt umwandeln
Eingetragen von DrupalFan (1646)
am 02.08.2009 - 13:40 Uhr in
am 02.08.2009 - 13:40 Uhr in
Hallo,
ich habe hier
http://www.drupalcenter.de/handbuch/6083
schon die wichtigste Information gefunden, trotzdem ist es riskant, eine laufende Durpal-Seite so umzubauen, dass eine Multi-Domain Lösung daraus wird.
Derzeit wird ja nur das Verzeichnis
sites/all
genutzt, dort befindet sich das ganze Projekt drin.
Nun soll aber ein Multi-Domain-Projekt, zuerst mit 2 Domains, dann mit 3 Domains daraus werden.
Wie stellt man hier auf Multi-Domain um?
Gibt es dafür eine Anleitung? Oder worauf muss man speziell achten? Danke.
Edit Andreas Emer: Das Wort "Multi" im Threadnamen und im Text war falsch geschrieben
- Anmelden oder Registrieren um Kommentare zu schreiben
Re: Fertiges Drupal-Projekt in Mulidomain-Projekt umwandeln
am 02.08.2009 - 15:35 Uhr
... trotzdem ist es riskant, ...
... an Einstellungen rumzufummeln, ohne sie vorher auf einer Testumgebung zu testen.
Derzeit wird ja nur das Verzeichnis
sites/all
genutzt, dort befindet sich das ganze Projekt drin.
Das glaube ich dir nicht. Wo ist deine
settings.php
? Welches Verzeichnis wird für hochgeladene Dateien verwendet?Nun soll aber ein Mulit-Domain-Projekt, zuerst mit 2 Domains, dann mit 3 Domains daraus werden.
Wie stellt man hier auf Multi-Domain um?
Indem du weitere Installationen zu deiner Installation hinzufügst:
sites/example.com
anlegen.sites/default/default.settings.php
nachsites/example.com/settings.php
kopieren.http://example.com
aufrufen um die Datenbanktabellen und sonstige Einträge für die neue Site anzulegen.--
Mulitdomain-Projekt, 2 gleichwertige Domains
am 02.08.2009 - 21:58 Uhr
Es wird danach 2 ganz gleichwertige Projekte in der einen Installation geben (später 3).
Du meinst also, man kann das erste Projekt in
sites/all
belassen und das zweite Projekt in
sites/domain2.de
anlegen?
Jedenfalls schreibst Du nichts davon, das bestehende Projekt von
sites/all
nach
sites/domain1.de
zu migrieren. Muss man das nun oder nicht?
Re: Mulitdomain-Projekt, 2 gleichwertige Domains
am 03.08.2009 - 08:08 Uhr
Jedenfalls schreibst Du nichts davon, das bestehende Projekt von
sites/all
nach
sites/domain1.de
zu migrieren. Muss man das nun oder nicht?
Brauchst du nicht, solange du meine obigen Fragen unbeantwortet lässt.
--
Mischlösung?
am 03.08.2009 - 11:19 Uhr
Zu den obigen Fragen:
Die settings.php ist in
sites/default
Und die wird dann einfach kopiert und in
sites/domain1.de
für diese Domain und dazugehörige Datenbank angepasst. Richtig?
Alle hochgeladenen Files (sehr viele) befinden sich in
sites/default/files
und diese zu verschieben ist fast unmöglich, weil die Pfade ja auch in der Datenbank gespeichert sind.
Daher ist die Frage, ob man nun das erste, bereits bestehende Projekt in
sites/default/files
und
sites/all
belassen kann und die 2 weiteren Projekte mit je eigener zusätzlicher Domain in
sites/domain1.de
sites/domain2.de
anlegen kann und ob das so zusammenspielt.
Danke.
Re: Mischlösung?
am 03.08.2009 - 11:46 Uhr
Die settings.php ist in
sites/default
Und dieses Verzeichnis ist es auch, das du am ehesten als Verzeichnis des Projektes bezeichnen kannst. Löse dich von dem Gedanken, das
sites/all
alleine der jetzigen Website gehört,sites/all
gehört allen Websites, die du mit der Codebase anbietest.Alle hochgeladenen Files (sehr viele) befinden sich in
sites/default/files
Das ist sehr schön. Dann kommen sich die Dateien der alten Site und die Dateien der neuen Site nicht in die Quere.
... und diese zu verschieben ist fast unmöglich, weil die Pfade ja auch in der Datenbank gespeichert sind.
Richtig. Deshalb auch der Warnhinweise auf der Seite zur Konfiguration der Dateisystemeintelllungen.
Jetzt musst du nur noch wie in meiner ersten Antwort beschrieben vorgehen und dabei darauf achten, das die Konfiguration deiner bestehenden Site immer noch gefunden wird. Hierzu ein Auszug aus der INSTALL.txt:
When searching for a site configuration (for example www.sub.example.com/site3), Drupal will search for configuration files in the following order, using the first configuration it finds:
sites/www.sub.example.com.site3/settings.php
sites/sub.example.com.site3/settings.php
sites/example.com.site3/settings.php
sites/www.sub.example.com/settings.php
sites/sub.example.com/settings.php
sites/example.com/settings.php
sites/default/settings.php
--
sites/default als Verzeichnis des 1. Projekts bei Multi-Domain
am 03.08.2009 - 15:29 Uhr
Danke, das klingt irgendwie logisch und ich werde es so versuchen.
Noch eine Detailfrage: Wenn man es ganz genau machen will, müssten eigentlich Module, welche nicht von allen Projekten, sondern nur vom ersten (bereits bestehenden) Projekt genutzt werden, von
sites/all
nach
sites/default
verschoben werden, weil jetzt sites/default das Verzeichnis für das 1. Projekt ist, oder?
Eine Multisite-Installation
am 03.08.2009 - 16:08 Uhr
Eine Multisite-Installation wird ja deshalb verwendet, damit sich mehrere Sites den Quellcode teilen können. Diesen Vorteil verspielst du wenn du die Module von
sites/all/modules
nachsites/default/modules
verschiebst. Ich würde es ersteinmal so lassen wie es ist. Performance kostet das lediglich aufindex.php?q=admin/build/modules
.Der einzige Grund, das gleiche Modul
foo
sowohl insites/site1/modules
als auch insites/site2/modules
zu haben, ist folgendes Szenario:sites/all/modules
istfoo-6.x-1.0
installiert.site1
verwendetbar-6.x-1.0
, welchesfoo-6.x-1.0
verwendet.site2
verwendetbaz-6.x-1.0
, welches ebenfallsfoo-6.x-1.0
verwendet.bar-6.x-1.1
veröffentlicht. Diese läuft aber nur mitfoo-6.x-1.1
.foo-6.x-1.1
ist inkompatibel mitbaz-6.x-1.0
, es gibt aber keine Version vonbaz
, die kompatibel mitfoo-6.x-1.1
ist.Erst in so einem Falls würde es Sinn machen,
foo-6.x-1.0
nachsites/sites2/modules
zu verschieben undfoo-6.x-1.1
nachsites/sites1/modules
zu installieren. Das kannst du aber machen wenn es aktut wird (falls es überhaupt irgendwann akut wird).--
Wenn ein Modul nur von einem Projekt genutzt wird
am 03.08.2009 - 16:55 Uhr
Ja, danke, deine Erklärung betrifft einen Sonderfall.
Aber ich nehme an, Du hast meinen Text nicht genau gelesen, denn ich schrieb:
... müssten eigentlich Module, welche nicht von allen Projekten, sondern nur vom ersten (bereits bestehenden) Projekt genutzt werden ...
Domainkonfiguration
am 03.08.2009 - 16:57 Uhr
Eine anderer Punkt:
Was ist eigentlich bei der Konfiguration des Webservers zu beachten, wenn die 2. Domain und dann die 3. Domain draufgeschaltet wird, um diese beim Multidomain-Projekt zu aktivieren?
Müssen nicht, können aber, sollen aber nicht
am 03.08.2009 - 17:12 Uhr
... müssten eigentlich Module, welche nicht von allen Projekten, sondern nur vom ersten (bereits bestehenden) Projekt genutzt werden ...
Was ist eigentlich bei der Konfiguration des Webservers zu beachten, wenn die 2. Domain und dann die 3. Domain draufgeschaltet wird, ... ?
Du kannst in der
.htaccess
nur einen Wert fürRewriteBase
angeben. Wenn das aufgrund deines Setups nicht ausreicht, dann musst duRewriteBase
stattdessen in der Konfiguration des Virtual Hosts angeben.--
Re: Domainkonfiguration
am 03.08.2009 - 17:17 Uhr
Mal von vorne:
Derzeit existiert ein normales Drupal-Projekt mit deiner Domain.
Nun soll eine zweite Domain draufgeschaltet werden. Einfach die DNS-Konfiguration so machen, dass das jetzige Projekt über beide Domains erreichbar ist? Sonst noch was?
Dann wird Drupal um das 2. Projekt erweitert in
sites/domain2.de
Und was muss nun noch alles sowohl bei der Serverkonfiguration/Domainkonfiguration als auch bei Drupal gemacht werden, damit www.domain2.de das 2. Projekt zeigt und www.domain.de wie bisher das 1. Projekt zeigt?
DrupalFan schrieb Einfach
am 03.08.2009 - 18:06 Uhr
Einfach die DNS-Konfiguration so machen, dass das jetzige Projekt über beide Domains erreichbar ist?
Ja, klar.
Sonst noch was?
Kommt auf die Konfiguration des Webservers an.
Wenn die neue Site die gleiche IP-Adresse wie die alte Site hat, dann musst du die neue Site als namensbasierten VirtualHost einrichten. Wenn du für die alte Site bereits einen namensbasierten Virtual Host verwendest, dann reicht dazu ein ServerAlias in der Konfiguration des Virtual Host. Wenn du im Moment keinen namensbasierten Virtual Host einsetzt, dann musst du einen namensbasierten Virtual Host anlegen. Das DocumentRoot muss dann gleich dem der existierenden Site sein.
Wenn die neue Site eine andere IP-Adresse als die alte Site hat, dann musst du einen IP-basierten Virtual Host anlegen.
Dann wird Drupal um das 2. Projekt erweitert in
sites/domain2.de
Ja. Wenn du aber an der Konfiguration des Webservers etwas geändert hast, dann musst den Webserver dazu veranlassen, die Konfiguration neu einzulesen (z.B. durch einen Neustart des Webservers).
... damit www.domain2.de das 2. Projekt zeigt ...
Eben hast du noch von
domain2.de
gesprochen. Du solltest dich entscheiden, ob du nunwww.domain2.de
oderdomain2.de
haben willst. Den anderen Hostnamen solltest du dann auf die von dir präferierte Site weiterleiten lassen.--
immer mit www
am 03.08.2009 - 18:30 Uhr
Eben hast du noch von
domain2.de
gesprochen. Du solltest dich entscheiden, ob du nunwww.domain2.de
oderdomain2.de
haben willst. Den anderen Hostnamen solltest du dann auf die von dir präferierte Site weiterleiten lassen.Ich will überall alles mit www.domainX.de ansprechen, also immer mit www. Damit keine Seiten ohne www aufrufbar sind, kann ich auch in der page.tpl.php entsprechende Umleitungen mit header() realisieren, aber darum geht es hier ja gar nicht.
MultiSite Domainkonfigration - Ist das alles?
am 03.08.2009 - 18:42 Uhr
Virtuelle Hosts werden bereits verwendet.
Also ist nichts anderes zu tun, als die Domain auf den gleichen Webspace zeigen zu lassen, entsprechend einen VirtualHost-Eintrag für die zusätzliche Domain machen und die DocumentRoot auf das gleiche Verzeichnis zeigen lassen.
Ist das wirklich alles?
DrupalFan schrieb Damit
am 03.08.2009 - 18:44 Uhr
Damit keine Seiten ohne www aufrufbar sind, kann ich auch in der page.tpl.php entsprechende Umleitungen mit header() realisieren
Brauchst du aber nicht. Es reicht wenn du sicherstellst, das sich kein Webserver angesprochen fühlt.
--
Klar, aber ich habe keinen
am 03.08.2009 - 18:46 Uhr
Klar, aber ich habe keinen Zugriff auf die Serverkonfiguration, also mache ich das lieber selbst in PHP, jedenfalls das was möglich ist und dieser Punkt ist gut machbar in PHP.
Multisite: 2. Domain "simulieren"
am 03.08.2009 - 18:51 Uhr
Wenn nun die 2. Domain (domain2.de) noch nicht verfügbar ist (kann erst später verwendet werden) und ich aber das gesamte Verhalten von Drupal schon jetzt testen und das 2. Projekt bereits anlegen und ein Theme dafür erstellen will, kann ich das ganze dann auf diese Art simulieren?
Ich erstelle vorerst das 2. Projekt als Subprojekt
sites/domain1.de/sub2
Sprich auf www.domain1.de/sub2 erscheint dann, wenn ich es richtig in den settings.php anlege, mein 2. Projekt, welches später umgestellt wird (bevor es wirklich online geht) auf www.domain2.de und
sites/domain2.de
Kann man das so testen und simulieren?
Ich möchte nämlich wissen, wie man unterschiedlie Menüs einrichtet für jedes der Projekte und wie andere Dinge getrennt oder eben nicht getrennt ablaufen (z. Bsp. Cronjob, etc).
DrupalFan schrieb Ich
am 03.08.2009 - 19:19 Uhr
Ich erstelle vorerst das 2. Projekt als Subprojekt
sites/domain1.de/sub2
Das funktioniert nicht. Drupal schaut dort nicht nach einer
settings.php
. Dazu habe ich in meiner dritten Antwort einen Ausschnitt aus der INSTALL.txt zitiert. Wenn du es so machen wolltest, dann müsstest dusites/domain1.de.sub2
als Konfigurationsverzeichnis verwenden. Außerdem müsstest du einen Alias von deinem derzeitigen DocumentRoot auf die URLhttp://www.domain1.de/sub2
anlegen, was du aber sowieso nicht kannst, da du ja keinen direkten Zugriff auf deine Webserverkonfiguration hast.Außerdem gibt es beim umschalten auf das Live-System natürlich Probleme mit dem Umstricken der URLs in der Datenbank.
Besser ist es, während der Entwicklung in der HOSTS-Datei des Clients dem beabsichtigten Hostnamen die IP-Adresse der jetzigen Site zuzuordnen. Unter MS-Windows heißt die Datei meistens
C:\Windows\system32\drivers\etc\hosts
.Ich möchte nämlich wissen, wie man unterschiedlie Menüs einrichtet für jedes der Projekte
Da bei Multisite-Installationen lediglich der Code wiederverwendet wird, sieht es (sobald die richtige
settings.php
gefunden wurde) für Drupal so aus, als ob die jeweils aktuelle Site die einzige wäre, die vberwendet wird.--
Re: Multisite: 2. Domain "simulieren"
am 03.08.2009 - 19:24 Uhr
Sorry, habe mich schon wieder mal vertippt, ich meinte natürlich
sites/domain1.de.sub2
Damit sollte ein Test doch funktionieren, ohne einen Alias im Webserver zu benötigen.
Kann ich da nicht über www.domain1.de/sub2 das 2. Projekt aufrufen?
Und ich könnte ja eventuell im Ordner /sub2 per FTP eine Art Umleitung auf / einrichten. Gibt es da eine Lösung, das allein mit FTP zu machen, ohne Serverkonfiguration ändern zu müssen?
DrupalFan schrieb Und ich
am 03.08.2009 - 19:35 Uhr
Und ich könnte ja eventuell im Ordner /sub2 per FTP eine Art Umleitung auf / einrichten.
Nein. Nach der Umleitung weiß der Webserver nicht mehr, das du ursprünglich
www.domain1.de/sub2
haben wolltest. Wenn der Webserver es nicht weiß, dann kann er diese Information auch nicht an Drupal weitergeben. Drupal behandelt die Anfrage also so als ob von vornhereinwww.domain1.de
gefragt wäre.--
Re: Multisite: 2. Domain "simulieren"
am 03.08.2009 - 19:47 Uhr
Und was ist, wenn ich in /sub2/index.php ein
include("/index.php");
einbaue?
Dann befindet man sich doch weiterhin in /sub2, genau das will doch Drupal. (Ist nur mal für Testwecke, wird natürlich später alles ordentlich gelöst)
Re: Multisite: 2. Domain "simulieren"
am 03.08.2009 - 20:55 Uhr
Das geht leider nicht, Drupal selbst verhindert das mit einer Fehlermeldung:
open_basedir restriction in effect. File(/index.php) is not within the allowed path(s):
Gibt es keine andere Möglichkeit, das zu testen/simulieren? Geht das vielleicht mit einer RewriteRule in der .htaccess?
Edit: Mit einer RewriteRule funktioniert es auch nicht, da erscheint einfach die normale /index.php, so als wäre man nicht im Unterverzeichnis.
Gute Idee falsch umgesetzt
am 03.08.2009 - 22:22 Uhr
Und was ist, wenn ich in /sub2/index.php ein
include("/index.php");
einbaue?
Gute Idee falsch umgesetzt :-)
Das geht leider nicht, Drupal selbst verhindert das mit einer Fehlermeldung:
open_basedir restriction in effect. File(/index.php) is not within the allowed path(s):
Das liegt nicht an Drupal. Das liegt an deiner PHP-Konfiguration und an deiner falschen include-Anweisung. Vielleicht würde aber folgende
index.php
funktionieren:<?php
chdir(dirname(dirname(__FILE__)));
include ('./index.php');
?>
--
Was macht eigentlich
am 03.08.2009 - 22:39 Uhr
Was macht eigentlich chdir(dirname(dirname(__FILE__))) ?
Das scheint zu funktionieren, beim Aufruf von domain1.de/sub2 erscheinen lauter Fehlermeldungen, da die Datenbank-Tabellen mit dem Prefix in der konfigurierten Form noch nicht existieren.
Jetzt muss man doch domain1.de/sub2/install.php aufrufen.
Das geht natürlich nicht.
Habe noch eine /sub2/install.php mit folgendem Inhalt erzeugt:
<?php
chdir(dirname(dirname(__FILE__)));
include ('./install.php');
?>
Dann beginnt die Drupal-Installation! Es scheint wirklich zu gehen, allerdings sind alle Pfade zu den css-Dateien falsch, die Installationsseiten werden also ohne Design angezeigt, weil die css-Dateien nicht gelesen werden können.
Funktioniert also nur so halb, an dieser Stelle habe ich mal abgebrochen.
Denn wie sollen da suchmaschinenfreundliche URLs funktionieren? Geht ja dann auch nicht, das sieht man jetzt schon.
DrupalFan schrieb Was macht
am 04.08.2009 - 01:04 Uhr
Was macht eigentlich chdir(dirname(dirname(__FILE__))) ?
Das Arbeitsverzeichnis wechseln, genau so wie
cd
auf der Kommandzeile.__FILE__
ist der Name der aktuellen Datei,dirname
liefert dir den Pfad zum Verzeichnis einer Datei, die du per Name übergibst.--