Laravel Multidomain fähig machen

Werner S

Mitglied
Grüß euch,

ich habe eine kleine Homepage in Laravel geschrieben mit MySQL Anbindung.

Bekomme ich dies jetzt im Nachhinein noch Multidomainfähig?
Ich kenne das noch aus den alten phpBB2 Foren. Man füllt ein Formular aus, die Tabellen werden mit Präfix angelegt der gleich der Subdomain ist.
Das Formular würde ich evtl. noch selber hinbekommen, auch das anlegen der Tabellen mit dem Präfix wäre auch kein Problem.
Wie geht es dann aber weiter?

Wie kann ich nach dem Aufrufen der Subdomain die Daten aus den richtigen Tabellen holen?
Ohne Laravel sondern reinen Self PHP würde ich in der Regel die Subdomain abfangen, und in einer Klasse einbinden die immer verfügbar, anhand der gesetzten globalen Variable (subdomain, erster Teil vor dem Punkt) die Entsprechenden Werte aus der Tabelle holen und verarbeiten

Wie verhält sich das in Laravel?
Gibt es da was ich nutzen kann oder muss ich das selber irgendwie umsetzen?
 

JR Cologne

Administrator
Teammitglied
Hallo @Werner S,

ich bin gerade auf folgende Erweiterung für Laravel gestoßen:
https://github.com/gecche/laravel-multidomain

Ich denke, das hört sich für deinen Anwendungsfall recht passend an.

Grundsätzlich ist sowas in Laravel aber nicht eingebaut.
Wenn dir diese Erweiterung nicht weiterhilft bzw. nicht ganz deinen Vorstellungen entspricht, wirst du wohl deine eigene Lösung umsetzen müssen.

Viele Grüße
JR Cologne
 

Werner S

Mitglied
Hallo @Werner S,

ich bin gerade auf folgende Erweiterung für Laravel gestoßen:
https://github.com/gecche/laravel-multidomain

Ich denke, das hört sich für deinen Anwendungsfall recht passend an.

Grundsätzlich ist sowas in Laravel aber nicht eingebaut.
Wenn dir diese Erweiterung nicht weiterhilft bzw. nicht ganz deinen Vorstellungen entspricht, wirst du wohl deine eigene Lösung umsetzen müssen.

Viele Grüße
JR Cologne
Hallo,

ich lag jetzt etwas über 1 1/2 im Krankenhaus, sry, das ich mich jetzt erst melde.

Ich habe mir dies angeschaut, jedoch scheint es nicht das passende zu sein.
Über den Befehlt php artisan domain:add site1.com wird zwar die neue Seite angelegt und wenn ich die Subdomain aufrufe lande ich auch auf der entsprechenden Seite, so weit so gut und gewollt.
Das Problem ist aber, es werden keine DB Einträge vorgenommen. Er kopiert die .env und speichert diese unter .env.site1.com inkl. der DB Daten aus der Originalen env. Jede Subdomain nutzt also die gleichen DB Einträge. Da wird bei dem oben genannten leider eine gemeinsame Datenbank bzw. Tabellen genutzt.

Nach meinem Wissen macht es also nicht das was ich brauche.
Er muss ja nicht mal für jede Domain eine Neue Datenbank anlegen, das wäre das Optimale. Es reicht ja schon wenn ich eine neue Subdomain anlege, vor jeder Tabelle auch der Subdomainname eingetragen wird.
Für jede angelegte Subdomain, soll es also eigene DB Einträge geben die er sich aus dem migrations Ordner holt.
 

JR Cologne

Administrator
Teammitglied
Oh je, hoffe, dir geht es wieder besser. Gute Besserung weiterhin.

Jede Subdomain nutzt standardmäßig die gleiche DB-Konfiguration, aber das kannst du ja in den entsprechenden .env-Files anpassen.

Ich verstehe dich nicht ganz: sind separate Datenbanken für die Subdomains ok für dich oder nicht?
Wenn ja, sollte das doch eigentlich damit machbar sein, oder nicht?

Habe aber leider auch keine Erfahrung mit der Erweiterung, weswegen ich dir da nur schlecht helfen kann.

Edit:
Hier noch was zum Thema Migrations und mehrere Datenbanken: https://stackoverflow.com/questions/26654846/use-one-laravel-migrations-table-per-database

Aus meiner Sicht wäre die Lösung also, für jede Domain eine eigene DB anzulegen, in den .env-Files entsprechend zu hinterlegen und dann müsste es möglich sein, die Migrations auf alle DBs anzuwenden bzw. auch separate Migrations zu pflegen.
 
Zuletzt bearbeitet:

Werner S

Mitglied
Oh je, hoffe, dir geht es wieder besser. Gute Besserung weiterhin.

Jede Subdomain nutzt standardmäßig die gleiche DB-Konfiguration, aber das kannst du ja in den entsprechenden .env-Files anpassen.

Ich verstehe dich nicht ganz: sind separate Datenbanken für die Subdomains ok für dich oder nicht?
Wenn ja, sollte das doch eigentlich damit machbar sein, oder nicht?

Habe aber leider auch keine Erfahrung mit der Erweiterung, weswegen ich dir da nur schlecht helfen kann.

Edit:
Hier noch was zum Thema Migrations und mehrere Datenbanken: https://stackoverflow.com/questions/26654846/use-one-laravel-migrations-table-per-database

Aus meiner Sicht wäre die Lösung also, für jede Domain eine eigene DB anzulegen, in den .env-Files entsprechend zu hinterlegen und dann müsste es möglich sein, die Migrations auf alle DBs anzuwenden bzw. auch separate Migrations zu pflegen.
Danke, langsam aber sicher geht es aufwärts, auch wenn es noch Jahre dauert.

Ja das war auch mein Gedanke. Ich passe in den angelegten .env Files die Datenbank an, führe ein php artisan migrate durch und hätte für jede Subdomain Ihre eigenen Tabellen/Datenbank. Dem ist aber nicht so. Die Erweiterung nutzt nur die Originale .env File.

Ich schaue mir das mal an was du verlinkt hat.

EDIT: Durch Zufall endeckt, ein Schritt der nicht in der Erweiterung erwähnt wird.

php artisan migrate --domain=site2.com
Legt die Tabellen für die Subdomain an.

Jetzt muss ich das ganze nur noch mal auf einem Lifesystem testen, auch wie ich den Apache oder nginx dazu bekommen mit Subdomains zu Arbeiten. Derzeit unter Windows MAMP. Ich weiss, nicht die Optimale Lösung, muss mir da noch was anderes einfallen lassen da ich davon noch keine Ahnung habe.
 
Zuletzt bearbeitet:
Oben Unten