Das Unterverzeichnis ist nun aufrufbar, allerdings ist das Ganze noch etwas verbuggt.
Wenn ich über das Admin-Panel etwas z.B in den SalesChannels ändere hat das Auswirkungen auf den Staging-Shop und umgekehrt.
Beispiel:
Ich gehe auf das Admin-Panel meines Staging-Shops über meinshop.de/staging/admin und ändere den Namen des SalesChannels.
Nachdem ich das gemacht habe, kann ich in meinem Hauptshop nicht mehr aufs Frontend. Er sagt, dass er keinen SalesChannel mit der angegebenen Domain finden kann.
Jetzt gehe ich auf das Admin-Panel meines Hauptshops und klicke auf den SalesChannel und mir wird nun der geänderte Name aus dem Staging-Shop angezeigt.
Sogar die Domain-URLs sind die aus dem Staging-Shop.
Der Screenshot zeigt den Zustand im Admin-Panel des Hauptshops nach Anpassung des SalesChannel-Namens im Staging.
Wenn ich im Admin-Panel nun wieder den Namen ändere, speichere und die Seite aktualisiere, werden auch für die SalesChannels wieder die URLs aus dem Hauptshop verwendet und angezeigt (obwohl ich die nicht angepasst habe, ich habe nur den Namen des SalesChannels geändert und auf speichern geklickt).
Danach kann ich zwar wieder aufs Frontend im Hauptshop, aber wenn ich nun aufs Admin-Panel im Staging-Shop gehe, wird mir nun für den SalesChannel die Konfiguration für den Hauptshop angezeigt.
Die Datenbank bleibt hierbei komischerweise unberührt. Da bleiben die ganze Zeit die richtigen URLs für die jeweiligen Shops, egal, ob ich die Anpassung im Hauptshop, oder Staging-Shop mache.
Scheint also ein Bug der index.php zu sein?
Wenn ich das Vorgehen richtig verstanden habe, verwendest du einfach die Standard SW6 index.php und passt dort nur die Pfade für das Staging-Verzeichnis an, oder?
gibt es eigentlich auch eine „offizielle“ Lösung wie man eine zweite Test-Installation von SW6 unter der gleichen Domain (wegen Lizenz) komplett getrennt also Dateien und Datenbank einrichten kann ?
Bei der hier vorgestellten Lösung sind ja nur die Datenbanken getrennt so wie ich das gelesen habe…
das hatte ich schon mal ausprobiert da hab ich aber Fehler bekommen…
hab dann erst mal mit einer Subdomain gearbeitet aber über kurz oder Lang nicht so optimal wegen der Lizenzen.
Was sollte man den in der .env anpassen nur die DB Verbindung oder gibts noch andere Sachen die angepasst werden sollten ?
In der /public/.htaccess muss doch auch die “RewriteBase” angepasst werden oder ?
Gibt’s ggf. ne kleine Liste was man alles anpassen muss damit die 2. Installation im Unterverzeichnis funktioniert ?
das hatte ich schon mal ausprobiert da hab ich aber Fehler bekommen…
hab dann erst mal mit einer Subdomain gearbeitet aber über kurz oder Lang nicht so optimal wegen der Lizenzen.
Was sollte man den in der .env anpassen nur die DB Verbindung oder gibts noch andere Sachen die angepasst werden sollten ?
In der /public/.htaccess muss doch auch die „RewriteBase“ angepasst werden oder ?
Gibt’s ggf. ne kleine Liste was man alles anpassen muss damit die 2. Installation im Unterverzeichnis funktioniert ?
Danke für den Link. Habe ich da auch schon dran versucht. Habe einen Symlink “stage” innerhalb von /public angelegt. Dieser verweist auf die Testinstanz mit separaten DB und Filesystem. Ich habe den Symlink einmal auf das Root-Dir sowie einmal auf /public der Testinstanz gesetzt. Beides funktioniert leider nicht. Ich erhalte beim Aufruf von LIVEURL.de/stage immer einen 404. Komme einfach nicht dahinter wo es schief läuft. Am Symlink wird es ja nicht liegen…?! Hattet ihr oder jemand hier im Verlauf ähnliche Probleme und konnte das Problem lösen? Wäre über den entscheidenden Tipp sehr dankbar.
was hast du bei deiner Verkaufskanal-Domain in den URL Feldern eingetragen? Bei uns hat es geklappt, als wir dort die URL mit public eingetragen haben, also Beispiel Domain (also das Gleiche, was wir in der .env Datei bei APP_URL eingetragen haben). Hast du das schon versucht? Wir haben keinen Symlink angelegt, sondern sind nur wie in der Anleitung vorgegangen.
Ich bin auch nach dieser Anleitung vorgegangen. Beim Kopieren der Dateien in den Unterordner wurden aber auf wundersame Weise die Permissions der .htaccess geändert und folgedessen konnte sie nicht mehr gelesen werden. Nach dem Anpassen der Permissions auf 755 klappt jetzt der Aufruf.
ich habe im Unterverzeichnis nach der offiziellen Shopware 6 Doku (https://docs.shopware.com/de/shopware-6-de/tutorials-und-faq/testumgebung-anlegen) den Shop im Unterverzeichnis dupliziert, allerdings bekomme ich Routen-Fehler. Der Webserver ist ein Nginx, kann es sein das in der Nginx Config für den Shop noch etwas für die Stagingumgebung angepasst werden muss?
Ich habe mich nun einige Stunden damit auseinandergesetzt und bin für mich auf eine Lösung gestossen (für 0815 Apache Hostings).
Die Dokumentation von Shopware ist bereits wegweisend, doch ein paar Tipps & Tricks auf den Weg.
Ausgangslage
Shopware 6.3.0.2 | Apache 2.4 | MySQL 5.7.26 | 0815 Hoster
Shopwareinstallation unter ~/foo/shop/
Domainmapping: ~/foo/shop/public/
Domain: www.foobar.ch
Anleitung
Datenbank (z.B. foobar ) Dump erstellen und in neuer Datenbank (z.B. foobar_stage ) importieren
Via rsync / cp / FTP die Dateien aus ~/foo/shop/ in den Ordner ~/foo/shop/ public/stage kopieren
Prüfen ob versteckte Dateien (z.B. .htaccess) ebenfalls mitkopiert wurde (ansonsten Googlen, welchen Parameter / welche Option ihr bei eurem Tool nutzen müsst)
Die Datei ~/foo/shop/ public/stage/.env anpassen ( DATABASE_URL für Stage Datenbank anpassen)
Die Datei ~/foo/shop/ public/stage/.env anpassen** (neue APP_SECRET für Stage Umgebung erstellen und hinterlegen)**
bin/console system:generate-app-secret
Die beiden Dateien private.pem und public.pem im Ordner ~/foo/shop/ public/stage/config/jwt löschen und frisch erstellen
bin/console system:generate-jwt-secret
Nun in der Stage Datenbank in der Tabelle sales_channel_domain die URL ergänzen mit eurem Ordnerpfad. In unserem Beispiel: www.foobar.ch /stage/public
In der Kommandozeile nun innerhalb des Ordners ~/foo/shop/ public/stage/ den folgenden Befehl ausführen um den Cache zu leeren.
bin/console cache:clear
Nun die URL eures Shops aufrufen (in unserem Beispiel: www.foobar.ch/ stage/public")
ich habe im Unterverzeichnis nach der offiziellen Shopware 6 Doku (https://docs.shopware.com/de/shopware-6-de/tutorials-und-faq/testumgebung-anlegen) den Shop im Unterverzeichnis dupliziert, allerdings bekomme ich Routen-Fehler. Der Webserver ist ein Nginx, kann es sein das in der Nginx Config für den Shop noch etwas für die Stagingumgebung angepasst werden muss?
Ja, dies kann sehr gut sein.
In der nginx.conf sagst du dem Webserver, auf welche Domain er hört und wohin (in welchen Ordner) der Server dich leiten soll. Auf einem Apache Server gibt es für zusätzliche (aber nicht alle) Konfigurationen die .htaccess, wobei die Anpassungen bei einem Nginx Server (meist) direkt in der nginx.conf gemacht werden.
Darin würdest du auch festlegen, dass bei einer Anfrage auf „www.foobar.ch/stage“ der ganze Traffic in den Ordner „projekt-foobar/public/stage/public“ geleitet werden würde.
danke für den Input. Ich sitze gerade an einem ähnlichen Problem (Shop lokal fertig gemacht und dann auf einen Server kopierern, also genau die Konfiguration inkl. Datenbank). Dein beschriebenes Vorgehen funktioniert dafür natürlich genauso. Eine Frage hätte ich dazu noch: Warum müssen wir das APP_SECRET und die JWT-Secrets ändern? Könntest du das kurz erläutern?
Gerne
Es spielt keine Rolle wenn du lokal etwas entwickelst und danach auf dem Server in der Liveumgebung veröffentlichst.
Ich gehe jedoch davon aus, dass die zwei Shopware 6 Instanzen sich mit gleichen Secrets in die Quere kommen, wenn du in einem Unterordner (einer laufenden Instanz) eine eine Testumgebung laufen lassen möchtest.
Warum das so ist, kann ich dir leider gerade nicht verständlich erklären.
bin ebenfalls nachnder Anleitung von Shopware 6 - Testumgebung anlegen vorgegangen. Die Sales Channel Domains habe ich direkt über die Datenbank angepasst.