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 --profile 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

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 --profile 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 --profile 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 --profile 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}';

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.