Shopware 6 Testumgebung mit StageWare® – heute geht es mal wieder um das gute alte StageWare®, das aus unserer Sicht beste Plugin um Staging Umgebungen mit Shopware zu erstellen.

Inhaltsübersicht:

  1. Staging Umgebung für Shopware 6
  2. StageWare® Plugin für Shopware 6 mieten oder kaufen
  3. StageWare® installieren
  4. Zusätzliche Datenbanken für Staging Umgebungen
  5. Die erste Test-Umgebung einrichten
  6. Testumgebung über die Shopware CLI Konsole synchronisieren
  7. Sonder-Einstellung für nginx Server bei Timme Hosting.
  8. Shopware 6 Testumgebung aufrufen
  9. Staging Umgebung auf eigener Subdomain
  10. Warum StageWare® für Shopware 6 Testumgebungen?
  11. Mögliche Fehler und Lösungen
  12. Weiterführende Links

Seit einiger Zeit steht es auch für Shopware 6 zur Verfügung und wir waren tatsächlich die allerersten die das Plugin Minuten nach Veröffentlichung im Store heruntergeladen haben.

Es dauerte anschließend auch nicht lange bis wir mit dem netten Support von zweipunkt, die das Plugin entwickeln und vertreiben, reden und uns Tipps aus erster Hand geben lassen konnten. Beispielsweise waren einige Besonderheiten bei der Verwendung auf Nginx Servern von unseren Partnern bei Timme Hosting zu beachten.

Falls du noch Shopware 5 verwendest und dich verirrt hast, findest du hier den passenden Blog-Beitrag: Staging Umgebungen für Shopware 5

1. Staging Umgebung für Shopware 6

Staging Umgebung haben viele Vorteile: Sie sparen Zeit, Geld und vor allem Nerven sowie die damit einhergehenden grauen Haare. Ich habe sie relativ spät zu schätzen gelernt, weshalb ich auch verhältnismäßig viele graue Haare habe. In einem Satz ist die Staging Umgebung einfach eine Kopie deines Live Shopware 6 Shops in einem Unterordner. Diese dient dazu, Dinge auszuprobieren, die du nicht auf deiner Live-Umgebung ausprobieren solltest.

Hierzu gehören:

• Shopware Updates
• Plugin Updates
• Installation neuer Plugins
• Theme Anpassungen

Seit Shopware 5 bin ich schon begeistert von StageWare® und habe mir damit bis heute schon unzählige Male Ärger erspart. Bis auf letztens: Es war die Nacht vom 29. auf den 30.07.2022 als ich dem Shop eines Kunden werkelte. Es waren einige Punkte in trello offen und ich versuchte zügig so viel abzuhaken wie es ging. Dann kam ich zur Aufgabe Shopware Update.

Bevor ich jedoch das System updaten konnte, waren zunächst einmal die Plugins an der Reihe, denn die müssen ja auch kompatibel mit der neusten Version sein. Ich lud ein Plugin hoch und bums! Der größte Admin Albtraum wurde wahr: Das Plugin zerschoss den Shop. Nichts ging mehr! Frontend weg, Backend weg. Alles weg. Und das Schlimmste daran? Es war das live System. Der Shop machte täglich über 10k Umsatz bzw. grob 500 € / Stunde. Genau genommen waren es sogar 3 Shops, die jetzt offline waren.

Es ist schon eine Weile her, dass mir so etwas das letzte Mal passiert ist. Aufmerksame Leser unseres Blogs werden sich vielleicht an diesen Beitrag erinnern.

Damals war mir ein ähnliches Malheur passiert. Mit dem Unterschied, dass ich an dem Tag schon längst reif für eine riesige Mütze Schlaf war und mich wirklich extrem durch das Debugging gequält hatte. Dieses Mal war ich also entsprechend „entspannter“, wenn man diesen Begriff überhaupt in dem Kontext verwenden kann. Zumindest war ich ausgeschlafen, aber der Zeiger auf der Uhr zeigte mir an, dass es schwer sein würde jemanden zu finden, der mit ein paar zusätzlichen Augen beim Finden des Fehlers helfen könnte.

Ein Profi in der Not

Aber auf einen kann man sich immer verlassen: Unsere Hosting Partner von Profihost. Dort gibt es eine Notfall-Hotline, wo man rund um die Uhr kompetentesten Support bekommt. Es hat seinen Preis, aber dann auch nur knapp 5 Minuten gedauert, bis der adleräugige Support das Problem erspäht und eliminiert hat. Ich war überglücklich und dachte mir zur gleichen Zeit – „Warum habe ich das nicht erst auf der Staging Umgebung getestet?!“.

Mit dieser Vorgeschichte möchte ich den Leser und vor allem mich selber noch einmal ermahnen. Egal wie klein das Plugin ist, egal wie eilig du es gerade hast, egal wie ungefährlich diese niedliche Zip-Datei aussieht – teste alles immer zuerst auf der Staging Umgebung! Lasse dich auch nicht davon täuschen, dass auf der Staging Umgebung die letzten 20x nie etwas passiert ist. Wann und ob etwas schiefgeht merkst du immer erst danach.

2. StageWare® Plugin für Shopware 6 mieten oder kaufen

StageWare® kann wie die meisten anderen Plugins aus dem Shopware Store entweder gemietet oder gekauft werden. Entscheidet man sich für die Mietversion, ist ein kostenloser Probemonat inkludiert und die Abmeldung des Abos ist jederzeit möglich. Was auch geht, ist das Plugin im ersten Monat als Mietversion kostenlos zu testen um dann gegen Ende des Monats auf die Kaufversion umzusteigen.

Das ist, was wir unseren Kunden grundsätzlich auch immer empfehlen, einfach um auch zu testen, ob das Plugin auch problemlos in dem Shop oder auf dem Server, wo es zum Einsatz kommt, auch fehlerfrei funktioniert.

Stage Ware - Shopware 6 Staging Plugin mieten

Je nachdem für wie lange man nach dem ersten Jahr seine Subscription verlängert, sinken damit die monatlichen Kosten weit unter die der monatlichen Mietkosten.

Subscription Kosten

Schauen wir uns einmal genauer an, wie viel wir sparen können, wenn wir uns für die Kaufversion entscheiden und das erste Jahr abgelaufen ist.

  • 6 Monate StageWare® Subscription: 24,95 € / Monat
  • 12 Monate StageWare® Subscription: 19,96 € / Monat
  • 24 Monate StageWare® Subscription: 16,63 € / Monat

Egal wie wir uns entscheiden – wir sparen auf diesem Weg langfristig mindestens 50 % der Kosten im Vergleich zur Mietvariante. Mich würde jetzt zum Beispiel am ehesten die goldene Mitte reizen. Aber da hat jeder seine eigenen Vorlieben.

3. StageWare® installieren

Die Installation von StageWare® ist je nachdem wie man es sieht spektakulär oder unspektakulär einfach. Man lädt das Plugin in seinem Shopware Account runter und kann es dann im Plugin Bereich seines Shops hochladen. Worauf man aber achten sollte ist, dass man die richtige Version nimmt, bzw. darauf acht gibt, dass die ZIP Datei mit der von dir verwendeten Shopware Version kompatibel ist. Sonst kann es sein, dass du dir mit der Installation den Shop kaputt machst – und genau das wollen wir ja hier vermeiden.

Sobald es hochgeladen ist, erscheint es in der Liste und wartet darauf, installiert zu werden. Hier sehen wir das Plugin in guter Gesellschaft mit einem unserer eigenen Plugins, wie es darauf wartet installiert zu werden.

Plugin installieren

Mit einem Klick auf App installieren ist die Sache so weit geritzt und das Plugin ist bereit eine oder auch mehrere Kopien des Live-Systems abzubilden. Obwohl, ein Schritt fehlt noch. Das Plugin muss zusätzlich auch noch aktiviert werden, indem man den Schieberegler links neben dem ZweiPunkt Logo klickt. Also: hochladen > installieren > aktivieren > fertig.

Nach der Aktivierung können wir auf die Grundkonfiguration des Plugins zugreifen. Hierfür bedarf es eines Klicks auf die 3 Punkte und dann auf Konfiguration.

Plugin Bearbeiten

Da kann man die Nutzung bei Bedarf noch auf einen Verkaufskanal eingrenzen, was aber in den meisten Fällen nicht notwendig sein wird. Die zweite und letzte Einstellungen, die man vornehmen kann, ist die Dauer der maximalen Scriptlaufzeit zu erhöhen. Das kann sinnvoll sein, wenn das Erstellen der Testumgebung nach langer Zeit abbricht.

StageWare® Experten-Einstellungen

4. Zusätzliche Datenbanken für Staging Umgebungen

Jede Shopware 6 Staging Umgebung benötigt ihre eigene leere Datenbank, um den Live-Shop als Kopie abbilden zu können. Neue Datenbanken legen wir in der Regel über unseren phpmyadmin Bereich oder Admin Bereich unseres Shopware Hosting Anbieters an. Ich würde für den Start 3 zusätzliche Datenbanken empfehlen. So kann man 3 unterschiedliche Staging Umgebungen für unterschiedliche Tester und / oder Testzwecke anlegen. Das ist besonders praktisch, wenn man in einem größeren Team arbeitet.

Natürlich muss man nicht gleich alle 3 Staging Umgebungen auf einmal anlegen, sondern kann erst einmal eine aufsetzen und die anderen Datenbanken schonmal bereithalten für den Moment wo die nächste(n) benötigt wird.

Am besten sollten die Datenbanken dann auch einen Namen haben, der uns schon auf den ersten Blick verrät, für welche Staging Umgebung sie verwendet werden soll. Am besten:

  • stageware1
  • stageware2
  • stageware3
  • stageware4
  • stageware5

Anschließend notieren wir uns die Zugangsdaten in unserem Projekt-Merkzettel, damit wir es später während der Einrichtung unserer Shopware 6 Staging Umgebung verwenden können.

5. Die erste Test-Umgebung einrichten

Das Plugin ist installiert, wir haben uns Datenbanken und die Zugangsdaten vorbereitet – dann kann’s losgehen. Wenn wir in der Sidebar auf Einstellungen klicken, erscheint an unterster Stelle ein neuer Link, wo StageWare® Manager steht. Zu Beginn finden wir dort eine leere Liste und den einladend klingenden Neue Testumgebung erstellen Button.

Testumgebung Liste

Also lasset uns alle gemeinsam draufklicken – bei drei. Drei! Was sehen wir da? Richtig: Ein Formular mit insgesamt 4 Boxen, die sehnsüchtig darauf warten, mit den passenden Inhalten bestückt zu werden.

a) Profil

Shopware 6 - Staging - Einstellung - Profil

Name der Testumgebung: Trage einen Namen ein
Kommentare und Notizen: Kann man, muss man aber nicht eintragen.

b) Dateien

Ordner ausschließen

Ziel Ordner: Trage hier den Namen des Ordners ein, in dem die Dateien der Shopware 6 Testumgebung angelegt werden. Timme Hosting Kunden benutzen bitte nur die folgenden Namen, da es andernfalls nicht klappt: stageware1, stageware2, stageware3, stageware4 und stageware5 – mehr als 5 Testumgebungen auf Timme Hosting Servern sind aktuell noch nicht möglich.
Ausgeschlossene Ordner: Neben ganzen Ordnern können auch Dateien, wie zum Beispiel größere ZIP-Archive, einzeln ausgeschlossen werden. Folgende Ordner kann man in den meisten Fällen mit gutem Gewissen ausschließen:

Kopieren und Einfügen:

stageware1
stageware2
stageware3
stageware4
stageware5
var/cache
public/media
public/thumbnail
files/backup
files/export
files/media

Erläuterung:

stageware1 – Ordner für Stageware. bei Bedarf auch stageware2 usw.
var/cache – Ordner für den Cache
public/media – Produkt-Bilder und gegebenenfalls Videos
public/thumbnail – Vorschaubilder in unterschiedlichen Größen
files/backup – Hier könnten sich Backups verstecken
files/export – Wie der Name schon sagt
files/media – PDF Dateien wie Rechnungen, Lieferscheine etc.

Achtung: Hier wird es tricky, wenn wir mehrere Testumgebungen anlegen. Hier darf dann nicht vergessen werden, alle Ordner der Testumgebungen in der Liste der auszuschließenden Verzeichnisse zu ergänzen. Also nicht nur stageware1 sondern auch stageware2, stageware3, stageware4 und stageware5.

c) Datenbank

Datenbank

Server: ist meistens localhost, notfalls beim Hoster nachsehen. Timme Hosting Kunden geben hier die 127.0.0.1 ein – so wird auch die Synchronisierung per Shopware Console möglich, was sehr praktisch ist, da es um einiges schneller geht.
Datenbank: Hier gehört der Name der Datenbank rein
Benutzer: Trage den Namen des Datenbankbenutzers hier ein
Kennwort: Dann das dazugehörige Passwort
Port: ist meistens 3306, notfalls beim Hoster nachsehen
Ausgeschlossene Tabellen: Hier kannst du z.B. verhindern, dass Kunden- oder Produkt-Daten importiert werden. Welche Tabellen das sind, wird weiter unten erklärt.

d) Stage Konfiguration

Wartungsmodus

Wartungsmodus aktivieren: Sollte unbedingt aktiviert werden. Falls nicht, sollte auf den Ordner ein Passwortschutz gesetzt werden. Andernfalls kann es sein, dass die Testumgebung von Google gecrawlt wird. Das führt zu Duplicate Content und einer Abwertung auf Google.
E-Mail-Adressen der Kunden abändern: Sollte man auch aktivieren, falls die Kunden-Daten kopiert werden (müssen). Andernfalls sollte man die Kundendaten schon von Anfang an ausschließen.
Setze APP_ENV auf DEV: Ist auch gut. Damit wird der Shop von Produktiv- auf Entwicklungsumgebung gestellt und man kann besser testen.

Jetzt kann unsere Shopware 6 Testumgebung in dem angegebenen Ordner in Kombination mit der eingetragenen Datenbank final erstellt werden.

Zu diesem Zweck bemühen wir einmal den Testumgebung synchronisieren Button und warten bis wir das kleine grüne Popup mit der Erfolgsmeldung angezeigt bekommen.

Hat’s geklappt? Super – herzlichen Glückwunsch!

Gab es einen 403 Fehler? Schau mal bei Punkt 7 rein!

Ganz unten in den Einstellungen der jeweiligen Testumgebungen haben wir übrigens noch einmal zwei Buttons in denen wir einmal die Datenbank leeren können und mit dem anderen Button die Dateien löschen können. Das bietet sich an, wenn wir eine bestimmte Sache fertig getestet haben und ein frisches System benötigen. Sinn ergibt das aber nur Sinn, wenn wir es im Live-Shop machen. Denn: Auch in der Shopware 6 Testumgebung wird uns der gleiche Inhalt beim Profil angezeigt.

6. Testumgebung über die Shopware CLI Konsole synchronisieren

Dein Shop hat sehr viele Daten und braucht sehr lange zum synchronisieren? Du bist ein Nerd? In beiden Fällen kannst du die Synchronisierung auch über die Konsole anstoßen. Weiter unten findest du die benötigte Zeile Code, um den schnellen Weg zu wählen.

Bei mir sieht die Zeile so aus:
bin/console stageware:sync --profile af5b82d762244d5abe2674845be03078

Wer so etwas noch nie gemacht hat, dem soll an dieser Stelle erklärt werden, wie der ganze Spaß funktioniert.

a) Du benötigst den SSH Zugang zu Deinem Server. Schau in Deinem gut sortierten Merkzettel nach. Hast Du noch keinen, ist jetzt ein guter Zeitpunkt diesen anzulegen und Deine Zugangsdaten darin einzutragen. Logge Dich dafür bei Deinem Hosting Anbieter ein und schau, ob es bereits einen User gibt. Wenn nein, muss einer angelegt werden und das Passwort + der Nutzername sowie der Server notiert werden.

Am Ende sollten wir dann eine Zeile wie die folgenden zur Hand haben, uns damit über die Konsole auf dem Server anzumelden:

ssh www.deinshop.de -l deinsshusername

Die Zeichen zwischen der Domain und dem Usernamen sind ein Bindestrich und eine kleines L wie Ludwig.

Shopware 6 Testumgebung über CLI Console

Anschließend werden wir nach dem Passwort abgefragt. Sobald wir es eingegeben und auf Return gedrückt haben, sollten wir auf dem Server eingeloggt sein. Beim ersten Mal werden wir jedoch wahrscheinlich vorher noch folgende Aufforderung angezeigt bekommen:

The authenticity of host 'www.deinshop.de (138.115.115.126)' can't be established.
ED25519 key fingerprint is SHA256:oRMsHvJMaalcZDYqsgfdgC0Merae2P/s8JHDEFVOg.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Was ist zu tun? Wir geben das Wort yes ein und drücken auf Return.

Jetzt heißt es:

Warning: Permanently added 'www.deinshop.de ' (ED11519) to the list of known hosts.Connection closed by 138.115.115.126 port 22

Jetzt können wir von vorn anfangen und noch einmal diese Zeile eingeben:
ssh www.deinshop.de -l deinsshusername

Jetzt wird das Passwort abgefragt. Dieses geben wir per Copy-and-paste ein und drücken, ohne das Passwort irgendwo sehen zu können, Return.

Als Nächstes müssen wir in unseren Shopware Ordner navigieren. Dieser liegt meist in einem Unterordner namens web oder www oder deinshop. Um den Ordner zu finden, können wir uns mit diesem Befehl den Inhalt des aktuellen Ordners anzeigen lassen:

ls -a

und dann mit dem Befehl:

cd ordnername

hineingehen

mit cd .. hingegen bewegen wir uns eine Ebene weiter nach oben.

Bei uns, bzw. bei Timme Hosting, ist es in der Regel so, dass man 2x cd .. eingeben muss um auf der obersten Ebene zu sein. Das erkennen wir auch daran, dass am Anfang der Zeile keine zusätzlichen Verzeichnisse mehr angezeigt werden.

Geben wir nun wieder ls-a ein sehen wir in der Liste auch den Ordner web und geben als nächstes also das hier ein:

cd web

und dann noch einmal ls-a um sicher zu gehen, dass wir in dem Ordner auch unsere Shopware 6 Dateien angezeigt bekommen.

Jetzt können wir auch schon den die Zeile Code für unsere Testumgebung eingeben. In meinem Fall also:

bin/console stageware:sync --profile af5b82d762244d5a845be03078

Klappt nicht? Hab ich mir gedacht ;) Wenn wir beim Mac über das Terminal arbeiten muss die Zeile noch um 3 Buchstaben und ein Leerzeichen erweitert werden:

php bin/console stageware:sync --profile af5b82d762244d5a4845be03078

Also – das php am Anfang der Zeile bitte nicht vergessen!

Wenn alles klappt wie es soll bekommen wir folgende Zeilen zur Belohnung:

Synchronize profile: 2206a40d0644451e9962eea0606db0ef
Start file syncronization
File syncronization successfull
Start database syncronization
Database syncronization successfull
Update synchronization timestamp
Syncronization finished

Es können aber auch Fehler kommen. Im Terminal steht dann entweder:

01:12:18 ERROR [app] ZweiPunkt GmbH StageWare: Database connection failed: An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'c1w222db1'@'bla.timmeserver.de' (using password: YES)

oder:

01:07:03 ERROR [app] ZweiPunkt GmbH StageWare: Database connection failed: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory

Was tun? Im Profil muss der Host der Datenbank geändert. So zumindest bei Timme Hosting. Dort wird empfohlen: „Bitte nutzen Sie Host 127.0.0.1 und Port 3306 für lokale Verbindungen.“

Wir hatten bei den ersten Tests noch localhost eingetragen. Das funktioniert über den Admin Bereich auch wunderbar. Über die Console jedoch nicht mehr – mit 127.0.0.1 geht es mit beiden Methoden einwandfrei.

7. Sonder-Einstellung für nginx Server bei Timme Hosting

Hast du beim Speichern des Profils einen 403 Fehler angezeigt bekommen? StageWare® ist im Standard auf allen Apache Servern ohne diese Anpassung sofort einsetzbar, auf den Servern von Timme Hosting bedarf es einer kleinen Anpassung.

Hier gehen wir in die Liste unserer Webseiten und klicken auf die Domain, wo wir den Shop installiert haben, auf dem StageWare® eingerichtet werden soll. Wenn wir da ein wenig herunter scrollen, sehen wir Erweiterte Einstellungen. Klappen wir sie auf sehen wir das hier:

Shopware 6 - Staging - Einstellung - Timme Ordner

Hier muss jetzt der Unterordner eingetragen werden, in dem die Shopware 6 Testumgebung(en) angelegt werden sollen. Und dann muss unbedingt eben auch noch zu jedem Unterordner auch noch einmal die gewünschte Konfiguration in dem Dropdown Menü ausgewählt werden. In Zukunft wird dies evtl. nicht mehr nötig sein, dann muss nur einmal für die Haupt-Seite eine Konfiguration für Shopware 6 inkl. StageWare® ausgewählt werden. Damit entfallen dann die aktuell noch notwendigen Einstellungen der Unterordner.

Jetzt solltest du auch ein Profil anlegen können, ohne dass der 403 Fehler angezeigt wird. Falls die Seite länger lädt, ist ein Fehler passiert. Probiere es noch einmal. Wenn das Profil erfolgreich angelegt wurde, kann die Testumgebung synchronisiert, bzw. erst einmal eingerichtet werden.

8. Shopware 6 Testumgebung aufrufen

Gleich neben dem Testumgebung synchronisieren Button finden wir den Administration-Button, der uns ohne Umwege zum Admin Bereich der Testumgebung führt. Die Zugangsdaten sind natürlich derselben wie im Live-Shop.

Was bei den StageWare®-Testumgebungen immer sehr hilfreich ist und vermeidet, dass man das die Test- mit der Live-Umgebung verwechselt, ist die Markierung mit dem roten Widget, das sich durch Front und Backend zeiht. Möchte man das Frontend aufrufen, löscht man alles hinter dem stageware1 Verzeichnis.

Ist der Admin-Bereich unter:
https://testshop.de/stageware1/admin#/login

ist das Frontend also unter:
https://testshop.de/stageware1/

Ab jetzt können wir alles testen, was wir möchten. Wenn die Anpassung, die Erweiterung oder das Update problemlos funktioniert haben, können wir es bedenkenlos auch auf der Live-Umgebung umsetzen. Aber: Ein Backup sollten wir für den seltenen Fall der Fälle auch noch einmal anlegen. Man weiß ja nie.

9. Staging Umgebung auf eigener Subdomain

In den Einstellungen des Verkaufskanals erhält man ein zusätzliches Feld in dem die URL für eine Sub-Domain eingegeben werden kann. Gebe hier zum Beispiel stage.deinshop.de ein um deine Testumgebung auf der angegeben Sub-Domain aufrufen zu können.

Das Feld für die Subdomain der Testumgebung findest gleich im Allgemein Reiter des Verkaufskanals ganz unten in der Box mit der Überschrift Zusatzfelder.

Shopware 6 - Testumgebung - Einstellung - Sub-Domain

Ist die gewünschte Sub-Domain deiner Shopware 6 Testumgebung eingetragen musst du noch den blauen Speichern Button klicken um die Anpassung zu besiegeln.

Die Subdomain musst du auch bei deinem Hosting Anbieter anlegen. Dabei ist zu beachten, dass die Subdomains auf das public Verzeichnis der Testumgebung (!) verweisen muss.

In den FAQs zum Plugin heißt es hierzu: „Wenn Sie in Ihrem StageWare Profil z.B. den Ordnernamen stage verwenden, dann muss die Stage-Domain auf das Verzeichnis /shopware-root/stage/public gelegt werden.“

In unserem Fall sieht es jedoch ein wenig anders aus, da wir bei Timme Hosting sind. Wenn wir dort eine Subdomain für unsere Staging Umgebung anlegen wollen, dann gehen wir so vor, hier einmal am Beispiel einer Test-Domain unter sharelando.com

Shopware 6 - Testumgebung - Einstellung - Subdomain Ordner

Beim ersten Mal musste ich es schon einige Mal testen, bis es funktioniert hat.

Host (ohne Domain): stage
Domain: deinshop.de
Weiterleitungstyp: Kein Flag (Umleitung ohne Änderung der URL)
Weiterleitungspfad: /stageware1/

Jetzt gehen wir wieder in die Liste unserer Profile und synchronisieren das stageware1 Profil. Bestenfalls sehen wir den Shop jetzt unter der angegebenen Subdomain. Schlimmstenfalls sehen wir aber zumindest, dass sich die URL des Verkaufskanals geändert hat und dort nun die Subdomain drinsteht. Der Shop ist also eigentlich schon bereit, die Inhalte unter der Subdomain anzuzeigen, irgendetwas stimmt aber anscheinend mit den Einstellungen beim Hosting Anbieter noch nicht.

So funktioniert das ganze natürlich nur, wenn man mit einer einzigen Staging Umgebung arbeitet. Es funktioniert aber auch anders. Erstelle dafür einfach eine Shopware 6 Testumgebung so wie immer. Jetzt logge dich im Admin Bereich der Staging Umgebung ein und lege dort einfach die zusätzliche Subdomain im Verkaufskanal des Frontends an.

Shopware 6 - Testumgebung - Verkaufskanal

Achtung: in einzelnen Fällen kann die Nutzung der Subdomain Funktion zu Problemen führen, daher empfehlen wir vor dem Anlegen ein Backup des Live-Shops zu erstellen und bei Interesse die FAQS des Plugins eingehend zu studieren.

10. Warum StageWare® für Shopware 6 Testumgebungen?

Zum einen weil die zweipunkt GmbH perfekt da angeknüpft hat, wo TC-Innovations (die das Plugin mit Veröffentlichung für Shopware 6 an zweipunkt verkauft haben) mit dem 5-Sterne Support aufgehört haben. Man wird bei der Integration freundlich und fachkundig begleitet, kann sich telefonisch melden oder bekommt sein Ticket sehr schnell beantwortet.

Zum anderen wird hier auch technisch wieder alles an Möglichkeiten ausgeschöpft, die bei der Shopware 5 Version schon für höher schlagende Herzen bei Shopware Admins gesorgt hat.

Hier noch einmal die wichtigsten Features:

• Man kann eine unlimitierte Anzahl an Testumgebungen anlegen.
• Man kann aus dem Admin Bereich des Live Shops auf alle Stages zugreifen
• Kunden E-Mail Adressen können maskiert werden
• Man kann bestimmte Datenbank-Tabellen vom Import ausschließen
• Man kann bestimmte Shop-Ordner vom Import ausschließen
• Sensible persönliche Daten können vom Import ausgeschlossen werden
• Kompatibel mit Plugins die Datenbank Views einsetzen, z.B. Pickware
• Ständige Weiterentwicklung
• Konfigurations-Service mit Festpreis
• Datenbank „Kindersicherung“
• Staging Umgebung auf eigener Subdomain

Und dazu ein paar Worte:

Man kann eine unlimitierte Anzahl an Testumgebungen anlegen:
Heißt: gerade in heißen Phasen können unterschiedliche Teams unterschiedliche Dinge auf unterschiedlichen Shopware 6 Staging Umgebungen testen und kommen sich dabei nicht in die Quere. Hierfür muss dann natürlich auch ein entsprechend großer Server mit genug Leistung im Einsatz sein. Gerade wenn die unterschiedlichen Teams gleichzeitig ressourcenhungrige Arbeiten ausführen.

Man kann aus dem Admin Bereich des Live Shops auf alle Stages zugreifen:
Kein technisches Weltwunder, aber einfach praktisch. Man kann ja im Standard noch nicht einmal aus dem Backend auf das Frontend zugreifen. Gut, bei mehreren Verkaufskanälen mit eigenem Frontend und eigenen Domains wird es da eh schwierig – im Normalfall hat man aber nur ein Frontend.

Kunden E-Mail Adressen können maskiert werden:
Wenn das nicht passiert, kann es passieren, dass die Kunden bei Tests ungewollt E-Mails mit falschen Informationen erhalten. Wie zum Beispiel, dass die Zahlung für den Diamantring eingegangen ist und die Ware versendet wurde. In der Praxis sieht es dann so aus, dass die eigentliche E-Mail-Adresse dann von test@example.com in test-example.com@stageware.zwei.gmbh geändert wird. Eine Adresse, die es so nicht gibt und somit auch bei keinem für Verwirrung sorgen kann.

Man kann bestimmte Datenbank-Tabellen vom Import ausschließen:
Einige Tabellen können schnell sehr riesig werden und werden auf der Kopie auch nicht wirklich benötigt. So ist es sinnvoll, einige Tabellen gleich von Beginn an vom Import auszuschließen, um so schneller ans Ergebnis zu kommen und keinen Ballast mitzuschleppen.

Folgende Tabellen lassen wir beim Import immer gerne weg um Kundendaten auszuschließen:

customer
customer_address
customer_group
customer_recovery
customer_tag
customer_wishlist
customer_wishlist_product

Auch die Produkte / Kategorien werden nicht gebraucht? Dann können wir folgende Tabellen auslassen:

product
product_category
product_category_tree
product_configurator_setting
product_cross_selling
product_cross_selling_assigned_products
product_cross_selling_translation
product_custom_field_set
product_media
product_option
product_price
product_property
product_review
product_search_keyword
product_tag
product_translation
product_visibility

Die Logs kann man auch sehr gerne weglassen:

Tabelle webhook_event_log 1,2GB
Tabelle log_entry 1,1 GB

Man kann bestimmte Shop-Ordner vom Import ausschließen:
Wenn wir etwas Technisches, wie die Integration eines neuen Zahlung-Plugins testen wollen, brauchen wir in den meisten Fällen nicht alle Produkt-Bilder des Shops. Der Media Ordner ist gerade bei großen Shops ein Gigabyte-schweres Monstrum, was sich nur mühsam und langwierig kopieren lässt. Zu den Must-haves in der Liste der auszuschließenden Shop-Ordner ist übrigens auch der Cache Ordner. Den sollten wir grundsätzlich immer vom Import in unsere Staging Umgebung ausschließen.

Sensible persönliche Daten können vom Import ausgeschlossen werden:
So, wer hat beim DSGVO Unterricht in der Schule aufgepasst? Was könnte hier bezüglich der Verarbeitung personenbezogener Daten schiefgehen? Ein oft gesehenes Szenario ist, dass wir als Shop-Betreiber mal jemanden über den Shop sehen lassen. Einfachstes Beispiel: Wir haben ein Plugin im Store gekauft, es funktioniert nicht, wo wirklich und schwups schicken wir im Shopware Account über ein Ticket die Zugangsdaten zu einer Staging Umgebung raus. Und das, ohne vorher einen AV-Vertrag mit der Agentur des Plugins abzuschließen.

Diese Agentur hat in dem Moment die Möglichkeit, auf personenbezogene Daten der Kunden des Shop-Betreibers zuzugreifen und diese zu verarbeiten. Das ist schon Grund genug, einen Vertrag zur Auftragsdatenverarbeitung abschließen zu müssen. Das kann nervig sein, auf Dauer die Wahrscheinlichkeiten potenzieller Abmahnungen erhöhen, und dauert einfach länger als wenn die Agentur sofort an den Braten kann.

Schließen wir aber nun die entsprechenden Tabellen mit den Kundendaten vom Import aus (s. Man kann bestimmte Datenbank-Tabellen vom Import ausschließen) können wir sichergehen, dass wir – egal wem wir den Link zur Staging Umgebung schicken, dass wir im Hinblick auf Einhaltung DSGVO alles richtig gemacht haben.

Vollständigkeitshalber soll am Rande erwähnt werden, dass das unsere Meinung aus unserer Erfahrung ist. Andere mögen andere Lösungen aus anderen Gründen ebenfalls genauso sehr mögen wie wir StageWare® mögen. Beispielsweise bieten einige Hosting-Anbieter unterschiedliche Optionen an, um eine Testumgebung zu erstellen, bisher ist mir aber noch keine wirklich brauchbare in die Finger gekommen.

Kompatibel mit Plugins die Datenbank Views einsetzen, z.B. Pickware: Pickware ist ein bei Shopware oft genutztes ERP System. Einige andere Staging Plugins sind aufgrund der von Pickware genutzten Datenbank-Views nicht kompatibel. StageWare® funktioniert auch hier mit der gewohnten Zuverlässigkeit eines Schweizer Uhrwerks.

Ständige Weiterentwicklung: Neben den aktuellen Funktionen besteht auch eine Roadmap für weitere Funktionen, die in Kürze folgen sollen. Hierbei wird insbesondere auch auf die Wünsche der Nutzer eingegangen. Selbstverständlich werden auch immer die aktuellen Updates für die neusten Shopware Versionen angeboten, sodass Shopware Updates nichts im Wege steht. Natürlich immer erst auf der Staging Umgebung!

Konfigurations-Service zum Festpreis: StageWare® kann man sich wahlweise von zweipunkt oder aber auch von uns zum Festpreis von 99.- einmalig konfigurieren lassen. So entfällt der Aufwand für das Einlesen und ausprobieren und man bekommt ein schlüsselfertiges Plugin und kann sofort eine Staging Umgebung mit einem Klick anlegen.

Datenbank Kindersicherung: Wer bei der Konfiguration der Datenbank für die Testumgebung aus Versehen die Daten des live Shops eingibt, kann nichts kaputt machen. Das System erkennt das Versehen und macht nichts.

Zum Abschluss noch eine der ausschließlich mit 5 Sternen versehenen Bewertungen aus dem Shopware Store: „Wir hatten heute einen Servercrash und ich habe einfach mal angerufen. Keine langen Fragen, sondern sofort verständnisvolle Hilfe! Das Plugin ist eh unverzichtbar und Top, den Support hab ich jetzt wirklich ins Herz geschlossen! Danke!

11. Mögliche Fehler und Lösungen

Das Profil läßt sich nicht speichern:
Du bist bei Timme Hosting und hast vergessen die Sondereinstellung zu machen. Siehe oben beim Punkt Sonder-Einstellung für nginx Server bei Timme Hosting.

Die Synchronisierung über per Shopware Console will nicht so wirklich:
Du bist per SSH auf deinem Server eingeloggt und gibst die Zeile zur Synchronisation in deinem Terminal ein.

Du bekommst diesen Fehler:

Fehler: „Warning: Failed to load plugins. Message: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory“

Lösung: Wir konnten diesen Fehler beheben, indem wir in der .env Datei beim Host statt localhost 127.0.0.1 eingetragen haben. Den Tipp dazu konnten wir im Forum finden.

Du bekommst diesen Fehler:

01:12:18 ERROR [app] ZweiPunkt GmbH StageWare: Database connection failed: An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'c1w12edb1‘@‚bla.timmeserver.de' (using password: YES)

oder:

01:07:03 ERROR [app] ZweiPunkt GmbH StageWare: Database connection failed: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory

Lösung: Bei uns hat es geholfen, beim Host der Datenbank 127.0.0.1 statt localhost einzutragen.

Die Synchronisierung bricht ab: Beim Abbruch der Synchronisation kannst du diesen Fehler bekommen, dann kann es sein, dass der StageWare Prozess vom Server unterbrochen wurde, weil er zu lange läuft.

Max execution time of X seconds exceeded

Lösung: In diesem Fall kann es helfen, die max_execution_time in der PHP Konfiguration zu erhöhen. Abhängig von deinem Webhoster kann StageWare versuchen, diesen Wert anzupassen. Du kannst jedoch auch manuell einen höheren Wert in der Plugin Konfiguration im Feld Maximale Laufzeit eintragen (Standard: 30).

Wenn du StageWare über die CLI benutzt, kannst du den Aufruf um einen Parameter erweitern, um PHP mitzuteilen, wie viele Sekunden der Prozess maximal laufen darf. Beachte aber, dass dein Webhoster diesen Wert überschreiben kann. Hier ist ein Beispiel Aufruf:

php -d max_execution_time=600 bin/console stageware:sync --profile XXXXXXXXXXXXXXXXX

ein weiterer Fehler der kommen kann, ist wenn den Shop an Arbeitsspeicher-Knappheit leidet. Wenn der StageWare Prozess zu viel Arbeitsspeicher verbraucht, kann der Server ihn unterbrechen. Das ist der Fehler:

Fatal Error Allowed Memory Size Exhausted

Lösung: In diesem Fall kannst du den Aufruf um einen Parameter erweitern, um PHP mitzuteilen, wie viel RAM der Prozess maximal verwenden darf. Hier ist ein Beispiel Aufruf:

php -d memory_limit=8G bin/console stageware:sync --profile XXXXXXXXXXXXXXXXX

Ein letzter bekannter Grund, warum die Synchronisierung abbrechen kann, ist wenn das Terminal Fenster geschlossen wurde. Um diesen Fehler zu vermeiden verwenden wir hinter der üblichen Zeile noch das hier: &

bin/console stageware:sync --profile XXXXXXXXXXXXXXXXX &

Ein Fehler der passieren kann, falls du eine MySQl Datenbank nutzt ist:

The name of the destination folder can not be used

Orientiere dich bei diesem Fehler an folgenden Einstellungen:

Shopware 6 Testumgebung mit StageWare®

12. Weiterführende Links

zweipunkt GmbH:
https://zwei.gmbh/

zweipunkt FAQs – StageWare® für Shopware 6:
https://zwei.gmbh/faq/shopware-6/stageware-testumgebung-auf-knopfdruck/

zweipunkt Service Portal – Erste Schritte mit StageWare®:
https://zwei.gmbh/service/ZweiPunktStageWare/sw6/erste-schritte/

zweipunkt Wissensdatenbank – StageWare® Staging | Testumgebungen auf Shopware 6
https://zwei.gmbh/service/ZweiPunktStageWare/sw6/knowledge-base/

zweipunkt Support Formular:
https://zwei.gmbh/ticket/neu/

Shopware Docs – Testumgebung manuell erstellen
https://docs.shopware.com/de/shopware-6-de/tutorials-und-faq/testumgebung-anlegen

Shopware Blog – Testing and staging environments with Shopware 6
https://www.shopware.com/en/news/testing-and-staging-environments-with-shopware-6/

Shopware Forum – 127.0.0.1 statt localhost:
https://forum.shopware.com/t/kein-admin-nach-update-seite-weiss/91970/4

Timme Hosting – Anleitung: Subdomains
https://timmehosting.de/anlegen-verwalten-von-rewrite-rules-fuer-nginx-mit-ispconfig