StageWare - Testumgebungen auf Knopfdruck

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 &