StageWare - Testumgebung auf Knopfdruck

Testumgebungen auf Knopfdruck

Mit StageWare lassen sich mit wenigen Klicks sogenannte Testumgebung (Staging Environments) erstellen. Testumgebungen sind 1:1 Kopien Ihres Online Shops die Sie dafür nutzen können um Shopware Updates durchzuführen, neue Plugins auszuprobieren oder Änderungen an Ihrem Shop durchzuführen, ohne dabei Ihren Live Shop in Gefahr zu bringen.

Testumgebung synchronisieren

Der StageWare Manager kann mehrere Profile (Testumgebungen) verwalten. Nachdem ein neues Profil angelegt wurde, müssen alle Dateien und Datenbanktabellen in die Testumgebung kopiert und die Testumgebung anschließend vorbereitet werden. All diese Schritte erledigt die Synchronisation.

Performance Optimierung

Der Synchronisationsprozess kann je nach Datenmenge bis zu einer Stunde dauern. Aus diesem Grund empfiehlt es sich die folgenden Performance Optimierungen für StageWare Profile durchzuführen.

Nicht benötigte Verzeichnisse & Datenbank-Tabellen ausschließen

Benötigen Sie in Ihrer Testumgebung tatsächlich alle Produktbilder, generierte Rechnungen und Lieferscheine, oder Log-Tabellen mit mehreren millionen Datensätzen? Wenn nicht, tragen Sie die Ordner und Datenbanktabellen in den dafür vorgesehenen Feldern im StageWare Profil ein damit diese beim Kopieren übersprungen werden.

Häufig ausgeschlossen werden die folgenden Ordner:

  1. public/media
  2. public/thumbnail
  3. files/backup
  4. files/export
  5. files/media

Wie kann ich die Testumgebung vorkonfigurieren?

Testumgebung in den Wartungsmodus versetzen

Testumgebungen lassen sich automatisch in den Wartungsmodus versetzen. Damit wird sichergestellt, dass die Testumgebung nicht durch Suchmaschinen indexiert wird oder neue Produkte, Updates usw. versehentlich veröffentlicht werden.

Damit der Shop später aufgerufen werden kann ist es notwendig, dass an den Verkaufskanälen in der Testumgebung die eigene IP Adresse freigegeben wird.

E-Mail Adressen der Kunden ändern

Damit Kunden bei Tests nicht ausversehen E-Mails aus der Testumgebung erhalten, können mit dieser Option die Mail Adressen der Kunden abgeändert werden. Hinter die Kunden-Adresse wird der Postfix @stageware.zwei.gmbh gesetzt.

Symfony APP_ENV auf dev setzen

Wenn die Testumgebung genutzt werden soll um Fehler zu finden, dann kann es sinnvoll sein die Umgebungsvariable APP_ENV auf den Wert dev setzen zu lassen. Dadurch werden Fehlermeldungen im Shop angezeigt (statt nur geloggt) und der Symfony Profiler wird angezeigt (der z.B. beim debugging von AJAX Requests behilflich ist).

CLI Befehl für die Synchronisation

Wenn Sie eine große Shopware 6 Installation besitzen (viele Produkte, Medien, Logeinträge etc.), oder Sie immer eine aktuelle Testumgebung besitzen möchten die 1:1 den Stand Ihres Shopware Live-Systems wiederspiegelt, dann können Sie jetzt die CLI Befehle für StageWare verwenden!

Über ein Terminal lassen sich so Dateien und Datenbanken aus dem Live-System in eine bereits eingerichtete Testumgebung kopieren. Den Befehl zum Starten des Synchronisationsvorgangs finden Sie unter der Konfiguration der Testumgebung im StageWare Manager.

Beispiel Befehl: bin/console stageware:sync --stage XXXXXXXXXXXXXXXXX

Eigene Domains für die Testumgebung

StageWare kopiert die Dateien und Datenbanken Ihres Live-Shops und bearbeitet die Verkaufskanäle der Testumgebung damit diese über einen Unterordner der Hauptdomain aufgerufen werden können. Wenn die Testumgebung stattdessen über eine eigene (Sub-) Domain erreichbar sein soll, können Sie nun auch eine Stage-Domain am Verkaufskanal festlegen. Bei der Synchronisation wird die Domain des Verkaufskanals durch die Stage-Domain ersetzt.

Beispielwert: stage.shop-domain.com

Damit die Testumgebung über die Stage-Domain erreichbar ist, muss die Stage-Domain bei Ihrem Webhoster auf das public-Verzeichnis der Testumgebung gelegt werden. 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.

Vorgehen:

  1. Verkaufskanal bearbeiten und Stage-Domain festlegen
  2. StageWare Manager öffnen
  3. StageWare Profil öffnen
  4. Testumgebung Synchronisieren

Fehlermeldungen

403 oder 404 Meldung

Sonder-Einstellung für nginx Server bei Timme Hosting

Haben Sie beim Laden des Profils einen 403 oder 404 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. Gehen Sie hier in die Liste Ihrer Webseiten und klicken Sie auf die Domain, auf der Sie den Shop installiert haben und auf dem StageWare eingerichtet werden soll. Wenn Sie ein wenig herunterscrollen, finden Sie die erweiterten Einstellungen.

Klappen Sie diese auf, so sehen Sie folgende Optionen:

Hier muss nun der Unterordner eingetragen werden, in dem die Shopware 6 Testumgebung(en) angelegt werden sollen. Und dann muss unbedingt auch für jeden Unterordner die gewünschte Konfiguration in dem Dropdown Menü ausgewählt werden. Nach dem Speichern kann es 5-10 Minuten dauern, bis die neuen Einstellungen vom Server übernommen worden sind.

Max execution time of X seconds exceeded

Der StageWare Prozess wird vom Server unterbrochen, weil er zu lange läuft. Hier kann es helfen die max_execution_time in der PHP Konfiguration zu erhöhen. Je nach Webhoster kann StageWare versuchen diesen Wert anzupassen. Dafür muss in der Plugin Konfiguration im Feld Maximale Laufzeit ein höherer Wert eingetragen werden (Standard: 30). Wenn StageWare via CLI verwendet wird, kann der Aufruf um einen Parameter erweitert werden der PHP mitteilt wie viele Sekunden der Prozess laufen darf. Ihr Webhoster kann diesen Wert jedoch überschreiben! Beispiel Aufruf:

Wenn Sie die Fehlermeldung in der Shop Administration erhalten, müssen Sie ggf

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

Fatal Error Allowed Memory Size Exhausted

Der StageWare Prozess wird vom Server unterbrochen, weil er zu viel Arbeitsspeicher benötigt. Wenn StageWare via CLI verwendet wird, kann der Aufruf um einen Parameter erweitert werden der PHP mitteilt wie viele RAM der Prozess verwenden darf. Beispiel:

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

Fehlerhafte Berechtigungen

Je nach Serverkonfiguration laufen Ihre Webserver PHP-Prozesse eventuell unter einem anderen Linux-Benutzer als CLI PHP-Prozesse. Das bedeutet, dass die Dateien die von unserem CLI Befehl kopiert werden ggfs nicht vom Webserver gelesen werden können.

Beispiel:

CLI Prozesse laufen unter dem Benutzer user1, Webserver Prozesse unter dem Benutzer www-data. Die von StageWare erstellten (kopierten) Daten gehören demnach dem Benutzer user1 und Ihr Webserver hat ggfs. keine Zugriffsberechtigung. Die aktuellen Berechtigungen können Sie mit dem Befehl ls -la prüfen. Wenn die Datei dem falschen Benutzer oder der falschen Gruppe gehören, können die Berechtigungen mit dem folgenden Befehl korrigieren (dafür werden ggfs. sudo Privilegien benötigt): chown -R www-data:www-data /pfad/zum/stage/order

Der Prozess bricht ab weil das Terminal Fenster geschlossen wird

Im Terminal lassen sich Prozesse durch ein & hinter dem Befehl in den Hintergrund versetzen. Dadurch läuft der Befehl auch dann weiter, wenn das Terminal Fenster geschlossen wird.

Beispiel Befehl: bin/console stageware:sync --stage XXXXXXXXXXXXXXXXX &

Wie kann ich prüfen ob die Synchronisation noch läuft?

Kunden mit großen Shopware Installationen fragen häufig wie sich feststellen lässt, ob der Synchronisationsprozess von StageWare tatsächlich Dateien und Datenbankeinträge kopiert oder vielleicht unbemerkt abgebrochen ist.

Terminal: Dateien zählen im Stage Ordner zählen

Mit dem folgenden Befehl können Dateien im Ordner der Testumgebung gezählt werden: find ./ -type f | wc -l. Führen Sie den Befehl mit einer Wartezeit von 10 Sekunden zwei mal aus. Ändert sich die Anzahl der Dateien zwischen den Ausführungen nicht, ist der Datei-Kopiervorgang entweder abgeschlossen, oder fehlerhaft.

SQL: Anzahl kopierter Datensätze zählen

Die Anzahl der kopierten Datensätze lassen sich in der Ziel-Datenbank mit dem folgenden Query zählen. Die Ausgabe ist bei InnoDB Tabellen eine ungefähre Schätzung und kann von der tatsächlichen Menge abweichen.

    SELECT SUM(TABLE_ROWS)
      FROM INFORMATION_SCHEMA.TABLES
     WHERE TABLE_SCHEMA = '{shopware_database_name}';

Fehler: There is no successful sync: An exception occurred while executing a query: SQLSTATE[HY001]: Memory allocation error: 1038 Out of sort memory, consider increasing server sort buffer size

Diese Fehlermeldung entsteht, weil der im MySQL Server zugelassende RAM Verbrauch beim Kopieren der Daten überschritten wurde. Neben einer Anpassung der Serverkonfiguration können Sie so vorgehen:

Option 1: SQL Server Einstellung bearbeiten

Wählen Sie im StageWare Manager Profil die Option Zeige eigene Datenbank Abfragen und Bash Scripte

Tragen Sie in das Feld Vor dem Synchronisationsprozess ausführen das Datenbank-Query SET GLOBAL sort_buffer_size = 256000000; ein und speichern Sie das StageWare Profil. Führen Sie den Kopiervorgang der Testumgebung danach erneut durch.

Option 2: Stapelverarbeitung reduzieren

Kommt es immernoch zu Problemen, so können Sie die Datenmengen reduzieren die Stageware bei der Stapelverarbeitung kopiert. Gehen Sie dafür in die StageWare Plugin Konfiguration und setzen Sie die folgenden Einstellungen:

  1. DB Zeilenlimit: 50
  2. Nur einen Kopiervorgang je Request: aktiv

Fragen

Ist StageWare auch mit den Shopware Editionen Rise, Evolve und Beyond kompatibel?

Die Shopware 6 Funktionen der Rise, Evolve und Beyond Editionen sind in selbst gehosteten Shopware Instanzen auch in den StageWare Testumgebungen nutzbar.