Multi-Mandanten und Ihre Domains
Multi-Mandanten und Ihre Domains
Hallo, bis jetzt hatte ich für jeden Kunden eine CMS-Installation. Wie funktioniert das eigentlich, wenn ich mehrere Mandanten mit jeweils unterschiedlichen Domain, mit nur einem CMS verwalten möchte?
Wie funktioniert das mit den Domain-Weiterleitungen, so das die Mandanten nur ihre eigene Domain sehen?
Gibt es eine Anleitung online?
Wie funktioniert das mit den Domain-Weiterleitungen, so das die Mandanten nur ihre eigene Domain sehen?
Gibt es eine Anleitung online?
Re: Multi-Mandanten und Ihre Domains
Bei Contenido ist ein Mandant auf dem Webserver sogar physikalisch vorhanden und vom anderen Mandanten parallel getrennt.
Daher ist es äußerst einfach, in der Hosterverwaltung eine Domain auf das Mandantenveerzeichnis zu legen.
Der erste Mandant heißt automatisch /cms, er kann aber auch anders genannt werden, z.B. /fipsi und der zweite dann /fopsi
In den Mandanteneinstellungen steht dann die Domain und der Serverpfad.
Und in der config.php im Mandantenverzeichnis weiß ich jetzt nicht auswendig, ob da auch nochmal die Domain auftaucht.
Tatsächlich braucht aber das Kern-System (/contenido, /data, /setup) irgendeine Domain oder Subdomain, worunter dieser Verzeichnisse erreichbar sind. Meistens nimmt man da die erste Domain, womit das System eingerichtet wird, aber ich hatte letztens auch einen Fall, wo die erste Domain weg gefallen ist und nur noch die zweite übrig blieb. Ging dann auch umzubauen.
Daher ist es äußerst einfach, in der Hosterverwaltung eine Domain auf das Mandantenveerzeichnis zu legen.
Der erste Mandant heißt automatisch /cms, er kann aber auch anders genannt werden, z.B. /fipsi und der zweite dann /fopsi
In den Mandanteneinstellungen steht dann die Domain und der Serverpfad.
Und in der config.php im Mandantenverzeichnis weiß ich jetzt nicht auswendig, ob da auch nochmal die Domain auftaucht.
Tatsächlich braucht aber das Kern-System (/contenido, /data, /setup) irgendeine Domain oder Subdomain, worunter dieser Verzeichnisse erreichbar sind. Meistens nimmt man da die erste Domain, womit das System eingerichtet wird, aber ich hatte letztens auch einen Fall, wo die erste Domain weg gefallen ist und nur noch die zweite übrig blieb. Ging dann auch umzubauen.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
Re: Multi-Mandanten und Ihre Domains
Hallo shi,
Faar hat beschrieben, wie man das in CONTENIDO einfach realisieren kann. Damit hast du eine CONTENIDO Installation mit vielen Mandanten und einer Datenbank.
Willst du aber für jeden Mandanten eine eigene Datenbank haben, gibt es auch die Möglichkeit mit Symlinks zu arbeiten.
Jede CONTENIDO Installation hat folgende Ordnerstruktur:
CONTENIDO:
Für das Backend und das Setup legst du einen Ordner "contenido_admin" an
Darin kopierst du die Ordner "contenido" und "setup" aus einem CONTENIDO Package. Inhalt von /var/htdocs/www/contenido_admin sieht dann so aus:
Mandant 1:
Für Mandant 1 legst du einen Ordner "mandant1" an
Darin kopierst du die Ordner "cms" und "data" aus einem CONTENIDO Package. Inhalt von /var/htdocs/www/mandant1 sieht dann so aus:
Im Document-Root des Mandanten 1 (/var/htdocs/www/mandant1) braucht man nun zwei Symlinks. Symlinks sind "Verknüpfungen", die auf eine andere Stelle verweisen. Jeweils einen Symlink zum "contenido" Ordner und zum "setup" Ordner erstellen.
Symlinks kann man auch mit relativen Pfadangaben setzen, ich habe hier der Einfachheit halber vollständige Pfade verwendet.
Wichtig: Symlinks kann man nicht mit einem FTP-Programm setzen, man braucht eine SSH-Verbindung zum Server.
Nun sollte der Inhalt des Document-Root des Mandanten 1 so aussehen:
Mandant 2:
Ist die gleiche Vorgehensweise wie bei Mandant 1, nur dass hier die Domain (mandant2.de) und der Document-Root des Mandanten 2 (/var/htdocs/www/mandant1) unterscheidet.
Vorteile
Nachteile
Andere Lösungen
Es gibt auch andere Lösungen mit Sub-Domains und Mandanten, die sich eine Datenbank teilen. Ich würde die Trennung der Datenbank für jeden Mandanten bevorzugen, da die Datenbank im Laufe der Zeit größer wird und man sehr schwer daraus einen Mandanten extrahieren kann, sollte man z. B. den einen Mandanten aus einem Multimandanten-System herauslösen wollen.
Tipp: Ein Modul-Verzeichnis für alle Mandanten
Will man sich ein Modulverzeichnis erstellen, aus der alle Mandanten sich bedienen können, kann man wie folgt vorgehen:
Für das Modulverzeichnis legst du einen Ordner "client_modules" unter /var/htdocs/www/contenido_admin an
Darin kopierst du alle Module, die du haben möchtest.
Für die Mandanten müssen nun Symlinks erstellt werden, die auf das zentrale Modulverzeichnis zeigen
Bei Mandant 1:
Bei Mandant 2:
Nachteile gibt es auch:
Da sich alle Mandanten ein Modulverzeichnis teilen, muss man aufpassen, wenn man Module ändert oder löscht. CONTENIDO erkennt dann nicht, bei welchem Mandanten man ein Modul verwendet.
Gruß
xmurrix
Faar hat beschrieben, wie man das in CONTENIDO einfach realisieren kann. Damit hast du eine CONTENIDO Installation mit vielen Mandanten und einer Datenbank.
Willst du aber für jeden Mandanten eine eigene Datenbank haben, gibt es auch die Möglichkeit mit Symlinks zu arbeiten.
Jede CONTENIDO Installation hat folgende Ordnerstruktur:
- cms
- contenido
- data
- docs
- setup
- test
- cms
- contenido
- data
- setup
- cms
- contenido (symlink)
- data
- setup (symlink)
Code: Alles auswählen
/var/htdocs/www
CONTENIDO:
Für das Backend und das Setup legst du einen Ordner "contenido_admin" an
Code: Alles auswählen
/var/htdocs/www/contenido_admin
- contenido
- setup
Mandant 1:
Für Mandant 1 legst du einen Ordner "mandant1" an
Code: Alles auswählen
/var/htdocs/www/mandant1
- cms
- data
Im Document-Root des Mandanten 1 (/var/htdocs/www/mandant1) braucht man nun zwei Symlinks. Symlinks sind "Verknüpfungen", die auf eine andere Stelle verweisen. Jeweils einen Symlink zum "contenido" Ordner und zum "setup" Ordner erstellen.
Code: Alles auswählen
ln -s /var/htdocs/www/contenido_admin/contenido /var/htdocs/www/mandant1/contenido
ln -s /var/htdocs/www/contenido_admin/setup /var/htdocs/www/mandant1/setup
Wichtig: Symlinks kann man nicht mit einem FTP-Programm setzen, man braucht eine SSH-Verbindung zum Server.
Nun sollte der Inhalt des Document-Root des Mandanten 1 so aussehen:
- cms
- contenido (symlink)
- data
- setup (symlink)
Mandant 2:
Ist die gleiche Vorgehensweise wie bei Mandant 1, nur dass hier die Domain (mandant2.de) und der Document-Root des Mandanten 2 (/var/htdocs/www/mandant1) unterscheidet.
Vorteile
- CONTENIDO Backend und Setup sind an einer Stelle
- Jeder Mandant verwendet das CONTENIDO Backend und Setup
- Jeder Mandant hat dadurch eine eigene Datenbank
- Keine weiteren Änderungen/Anpassungen nötig, da es sich wie eine normale CONTENIDO Installation verhält
Nachteile
- Bei einem Update muss man das Setup für jeden Mandanten einzeln ausführen
- Im Backend installierte und aktivierte Plugins können sich vermutlich auf alle Mandanten auswirken?
- Ändert man ein Modul, dann ist dies nur für den jeweiligen Mandanten gültig, da Mandanten sich nicht die Module teilen
- Für das Backend ist jeweils immer nur ein Mandant bekannt
Andere Lösungen
Es gibt auch andere Lösungen mit Sub-Domains und Mandanten, die sich eine Datenbank teilen. Ich würde die Trennung der Datenbank für jeden Mandanten bevorzugen, da die Datenbank im Laufe der Zeit größer wird und man sehr schwer daraus einen Mandanten extrahieren kann, sollte man z. B. den einen Mandanten aus einem Multimandanten-System herauslösen wollen.
Tipp: Ein Modul-Verzeichnis für alle Mandanten
Will man sich ein Modulverzeichnis erstellen, aus der alle Mandanten sich bedienen können, kann man wie folgt vorgehen:
Für das Modulverzeichnis legst du einen Ordner "client_modules" unter /var/htdocs/www/contenido_admin an
Code: Alles auswählen
/var/htdocs/www/contenido_admin/client_modules
Für die Mandanten müssen nun Symlinks erstellt werden, die auf das zentrale Modulverzeichnis zeigen
Bei Mandant 1:
Code: Alles auswählen
ln -s /var/htdocs/www/contenido_admin/client_modules /var/htdocs/www/mandant1/cms/data/modules
Code: Alles auswählen
ln -s /var/htdocs/www/contenido_admin/client_modules /var/htdocs/www/mandant2/cms/data/modules
Da sich alle Mandanten ein Modulverzeichnis teilen, muss man aufpassen, wenn man Module ändert oder löscht. CONTENIDO erkennt dann nicht, bei welchem Mandanten man ein Modul verwendet.
Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
-
- Beiträge: 4250
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Multi-Mandanten und Ihre Domains
Servus,
warum kompliziert wenn es einfach geht?
Für Multi-Datenbanksysteme mit Contenido 4.10 bietet sich die ENVIROMENT-Umschaltung der Konfiguration an. Indem ich für jede Domain eine eigene Umgebung definiere, kann ich sehr einfach unterschiedliche Datenbanken, ja sogar unterschiedliche Datenbank-Server für jeden Mandanten nutzen.
Gruß aus Franken
Ortwin
warum kompliziert wenn es einfach geht?
Für Multi-Datenbanksysteme mit Contenido 4.10 bietet sich die ENVIROMENT-Umschaltung der Konfiguration an. Indem ich für jede Domain eine eigene Umgebung definiere, kann ich sehr einfach unterschiedliche Datenbanken, ja sogar unterschiedliche Datenbank-Server für jeden Mandanten nutzen.
Gruß aus Franken
Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Multi-Mandanten und Ihre Domains
Verwendest du dafür Conditional Settings in der .htaccess?
Code: Alles auswählen
SetEnvIf Host ^(www\.)?mandant1\.de$ CON_ENVIRONMENT=mandant1
SetEnvIf Host ^(www\.)?mandant2\.de$ CON_ENVIRONMENT=mandant2
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Re: Multi-Mandanten und Ihre Domains
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
-
- Beiträge: 4250
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Multi-Mandanten und Ihre Domains
Servus,
Gruß aus Franken
Ortwin
Kann man, einfacher geht es gleich in der vhost-Datei der Domain, insofern man da ran kommt.xmurrix hat geschrieben: ↑Di 3. Dez 2019, 22:45Verwendest du dafür Conditional Settings in der .htaccess?Code: Alles auswählen
SetEnvIf Host ^(www\.)?mandant1\.de$ CON_ENVIRONMENT=mandant1 SetEnvIf Host ^(www\.)?mandant2\.de$ CON_ENVIRONMENT=mandant2
Gell, da schaust...
Gruß aus Franken
Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Multi-Mandanten und Ihre Domains
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.