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.
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
.
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.
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:
public/media
public/thumbnail
files/backup
files/export
files/media
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.
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.
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).
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
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:
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.
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
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
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
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 &
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.
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.
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}';
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:
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.
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:
Die Shopware 6 Funktionen der Rise, Evolve und Beyond Editionen sind in selbst gehosteten Shopware Instanzen auch in den StageWare Testumgebungen nutzbar.