In diesem Beitrag erklären wir dir, warum du unserer Ansicht nach unbedingt eine Testumgebung für deinen Onlineshop brauchst und wie du sie in Shopware 5 ganz einfach einrichten kannst.
Tipp: Besonders nützlich ist eine Staging auf für das Testen von einem Shopware Update!
Staging bedeutet z.B. einen Onlineshop in ein Unterverzeichnis zu kopieren um dort Veränderungen und Tests durchzuführen.
Also ein Staging Bereich in dem man alles sicher und in Ruhe testen kann.
Anschließend wird daraus der neue bessere Onlineshop!
Weil eine live Demo einfach realer und für viele einfacher zu testen ist.
UPDATE:
Das ganze kann auch als Plugin im Shopware Store gekauft werden:
Staging Umgebung Plugin
Zuerst stellen wir uns die Frage: Was brauchen wir eigentlich?
Zugang zu:
Der erste Schritt:
ssh username@server
Bsp. ssh root@192.168.1.1
Die Frage "Are you sure you want to continue connecting (yes/no)?"
Beantworten wir mit yes.
Dann wollen wir einen neuen Unterordner erstellen.
mkdir staging
Jetzt noch den aktuellen Shop in unseren neuen Staging Ordner kopieren. (Mit diesem Befehl kopieren wir alles in den Staging Ordner)
cp -r * staging/
Schon aufgefallen? Wir haben den Ordner "staging" in den neuen Ordner "staging" kopiert. Der kann aber weg, also:
rm -r staging/staging
Das ist erledigt. Nun wollen wir in den Ordner rein.
cd staging
cd var
cd cache
Der alte Shop hat einen Cache gespeichert, den wir noch löschen müssen. Den finden wir im Pfad /var/cache.
Alle Ordner die mit "production_" anfangen müssen wir löschen.
rm -r production_*
Ein weiterer Schritt ist unsere Daten aus der Datenbank ebenfalls mitzukopieren. Hier nutzen wir eine MySQL Datenbank.
Der erste Schritt hierbei ist die Datenbank aus unserem Shop zu exportieren mit dem Befehl:
mysqldump -u username -h host_address -p database_name > Name_des_Exports.sql
Bsp.: mysqldump -u root -h localhost -p shopwaredb526 > Exportsw526.sql
Die neue Datenbank (mit dem neuen Namen für das Staging) muss jetzt wieder gefüllt werden und zwar so:
mysql -u username -h host_address -p database_name < Name_des_Imports.sql
Bsp.: mysql -u root -h localhost -p shopwaredb526_staging < Exportsw526.sql
Hat das alles geklappt? Wir überprüfen sicherheitshalber ob alles erstellt wurde.
mysql -u username - p
MySQL Passwort eingeben
mysql> SHOW DATABASES;
mysql> USE shopwaredb526_staging;
mysql> SHOW TABLES;
Jetzt sollten uns die Tabellen der Datenbank angezeigt werden (Bei Shopware 5.2.6 sind es 233 Tabellen).
Damit können wir MySQL schließen.
mysql> exit
Dann ist der Shop doch schon fertig kopiert? JA!, aber das ist nicht alles... denn der neue Shop muss noch auf die erstellte Datenbank konfiguriert werden, denn sonst würde der neue Staging-Shop die Datenbank unseres Hauptshops nutzen.
Hier nutzen wir einfachen FTP Zugang über Cyberduck (Man kann natürlich auch das Terminal nutzen).
Dort sollte im Hauptpfad die config.php sichtbar sein.
Diese öffnen wir und gucken die Daten für die Datenbank an. Da müssen die Zugangsdaten der neuen Datenbank rein.
Die Datenbank muss aber noch ein wenig angepasst werden.
Man kann hier wieder das Terminal nutzen oder Tools wie phpMyAdmin nutzen.
Jetzt muss unsere Staging Datenbank ausgewählt werden und nach der Tabelle "s_core_shops" gesucht werden.
Nun sieht man den aktuellen Shop, sowie Subshops... wir suchen die Spalte "base_path" und tragen dort den Wert "/staging" ein.
Damit wird der Hauptpfad des Shops mit "/staging" ergänzt.
Danke nochmal ein Danke an Thorsten Greiner für die Information.
Da es ein Staging Shop ist, soll nicht jeder darauf zugreifen können.
Es gibt mehrere Möglichkeiten den Shop für unbefugte zu sperren, das einfachste ist wahrscheinlich im Backend den Shop unter den Grundeinstellungen in den Wartungsmodus zu setzen.
Wer möchte, dass die ganze Webseite nicht sichtbar ist kann ein .htaccess Schutz anlegen.
Nur noch die Staging Webseite öffnen und die Tests sicher im Staging Shop durchführen und bei Erfolg auf dem Hauptshop bearbeiten.
Hinweis von Travis Botello:
Wenn du nginx als Webserver verwendest musst du in der Konfiguration den Unterordner für die Staging angeben:
# Block muss for dem Block für location / kommen
location /staging {
index shopware.php index.php;
try_files $uri $uri/ /staging/shopware.php$is_args$args;
}
Vielen Dank für den Hinweis!
Unsere Standorte
Zentrale
Technologiepark 23
33100 Paderborn
Leipzig
Bernhardstraße 34
04315 Leipzig
Kontakt
E-Mail: support@8mylez.com
Telefon: +49 (0) 5251 284 710
Shopware Dienstleistungen
Über 8mylez
✓ 38 Mitarbeiter
✓ Shopware Gold Partner
✓ 40.000+ Plugin Downloads
✓ 160+ betreute Shops
✓ Full-Service Shopware Agentur
✓ 70 Shopware Videos auf Youtube
✓ Alle Shopware Zertifizierungen
Social
Travis Botello
# Block muss for dem Block für location / kommen
location /staging {
index shopware.php index.php;
try_files $uri $uri/ /staging/shopware.php$is_args$args;
}
Alexander Wolf
vielen Dank für den Hinweis! Ich werde den Blogpost updaten, damit dies auch den anderen weiterhelfen kann!
Gruß
Alexander
Anca
Wo genau muss man den Nginx Schnippsel reinkopieren?
Vielen Dank,
Anca
Travis Botello
Alexander Wolf
der Schnipsel gehört in die Konfiguration des Webservers. Wo genau diese zu finden ist unterscheidet sich bei jedem Hoster. Am besten fragst du kurz bei deinem Hoster nach!
Gruß
Alexander
Alexander Wolf
Johannes
muss mich auch nochmal melden. Ich hatte kürzlich einen großen Shop, bei dem der Kopiervorgang nach /staging in der Konsole abgebrochen wurde, "Killed".
Gibt es eine Möglichkeit das zu umgehen?
Evtl. mit rsync? Oder bleibt da nur der weg über den Hoster?
Danke.
Ewald Gering
du kannst den Kopiervorgang auch über rsync machen.
Der ganz einfache Befehl wäre folgender:
rsync -avz --exclude 'staging' . staging/'
Viele Grüße
Ewald
Werner Hermann
Ich bin im übrigen über denselben "Fehler" mit dem Backend gestolpert !
Und falls hier nich so ein Newbie wie ich rumstolpert:
Bei mit wurde die .htaccess nicht mit kopiert!
Also drauf achten, das auch die .htaccess ins staging-Verzeichnis mit kopiert wird
und in *dieser* Kopie die Zeile anpassen
#RewriteBase /shopware/ --> #RewriteBase /shopware/staging/
Ewald Gering
eventuell ist das Systemabhängig ob die Dateien mit . am Anfang kopiert werden. Der Eintrag in der .htaccess bei dir ist allerdings durch die # auskommentiert und dürfte keine Auswirkung haben.
Viele Grüße
Ewald
Sel4
Danke für das Tutorial! Nur eine Anmerkung: ACHTUNG: Zumindest bei Shopware 5.4.6 funktioniert das für mich nur, wenn NICHT DER ORDNER, sondern NUR DER INHALT des Ordners "production" geleert wird!
Liebe Grüße aus Wien
Sel4
Ewald Gering
vielen Dank für die Info. Wir prüfen das ganze mal auch bei uns nach.
Viele Grüße
Ewald
Ewald Gering
leider konnte ich da kein Problem nachvollziehen. Eventuell liegt es an irgendwelchen Plugins die im Cache sind.
Viele Grüße
Ewald
Johannes
vielen Dank für das gute Tutorial. Wie würde man denn vorgehen, wenn man den Shop aus der Stagingumgebung in die Liveumgebung einspielen möchte?
Nehmen wir an ich entwickle ein neues Design in der Stagingumgebung inkl. EK-Welten und möchte das dann auf das Live-System kopieren? EK-Welten werden ja in der DB gespeichert.
Vielen Dank
Ewald Gering
automatisiert ist das ganze sehr Aufwändig. Du kannst das Theme herunterladen und auf Live hochladen. Die Einkaufswelten kann man ab ich glaube der Version 5.3 exportieren und importieren. Anders gestaltet sich das schwierig.
Ich hoffe das hilft dir :)
Viele Grüße
Ewald
Mario
Ups! Ein Fehler ist aufgetreten!
Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.
Controller "staging" not found in engine/Library/Enlight/Controller/Dispatcher/Default.php on line 488
Ewald Gering
falls du einen Nginx Server hast, musst die diesem Verzeichnis eine Konfiguration für Shopware zuweisen. Bei Apache Servern kann es sein, dass die RewriteBase in der .htaccess Datei gesetzt ist. Dieser müsste dann mit einem /staging angepasst werden.
Viele Grüße
Ewald
Mario
kannst du mir auch sagen was in die .htacces eingetragen gehört, damit der Ordner /staging funktioniert?
Ewald Gering
die RewriteBase muss mit einem /staging ergänzt werden z.B. RewriteBase /shopware/staging oder RewriteBase /staging/
sven
erst mal danke für das tolle tutorial. Hab aber ein problem und zwar geht das staging aber das aufrufen von .de/staging/backend/ bringt mich immer wieder zur normalen installation. Jemand das gleiche Problem? :/
viele grüße
sven
Ewald Gering
falls du einen Nginx Server hast, musst die diesem Verzeichnis eine Konfiguration für Shopware zuweisen. Bei Apache Servern kann es sein, dass die RewriteBase in der .htaccess Datei gesetzt ist. Dieser müsste dann mit einem /staging angepasst werden.
Viele Grüße
Ewald
Justus
Woran könnte das liegen?
Ewald Gering
hast du einen nginx Webserver? Dort musst du die Konfiguration fuer das Unterverzeichnis angeben, bzw. hinzufuegen.
Viele Grueße
Ewald
ES
danke zunächst für diese Anleitung. Leider habe ich denselben Fehler wie Justus und den fehlerhaften Verweisen. Wir nutzen keinen NGINX Server. Irgendwelche Ideen woran das liegen könnte?
Ewald Gering
wurden Anpassungen an der .htaccess Datei vorgenommen? Eventuell stimmen durch diese die Pfade nicht mehr.
Viele Grüße
Ewald
Dennis Bouten
wir nutzen bereits Euer Plugin zum Betrieb eines Staging-Systems.
Ich bin mir nur nicht ganz sicher, wie ich Plugins sicher und isoliert im Staging installiere.
Reicht es, dass die Installation im Backend des Stagingsystems ausgeführt wird?
Zur Durchführung der Installation muss man sich ja mit derShopware-ID anmelden und ich bin mir nicht sicher ob das Plugin da nicht doch im Livesystem landet.
Hatte gehofft die Auflösung unter Punkt 6 Deines Beitrags zu finden :-)
Viele Grüße,
Dennis
Ewald Gering
du kannst das Plugin ganz normal kaufen und dann im Staging im Plugin Manager unter Mein Einkäufe herunterladen und installieren, testen etc.
Die Staging ist ja praktisch ein eigenständiger Shop ist somit unabhängig vom Live Shop.
Viele Grüße
Ewald
tducc
cp -r !(staging|production_*) staging/
ist keine gute Idee da es andere Files mit dem Muster production_* gibt.
Ewald Gering
vielen Dank für deinen Input! Wäre zwar ein Befehl weniger, aber den Cache zu leeren ist ja zum Glück nicht ganz so schwer :)
Viele Grüße
Ewald
tducc
cp -r !(_staging) _staging/
oder wenn man ganz mutig ist auch
cp -r !(staging|production_*) staging/
Fabian Knorr
Ich habe versucht die ganzen Schritte so durchzuführen. Leider bricht er bei mir während des Kopiervorgangs ab und gibt die Fehlermeldung, dass er den Ordner staging nicht in staging kopieren kann. Hast du hierzu einen Hinweis?
Danke und Gruß
Ewald Gering
eigentlich sollte er beim kopieren trotz der Warnung fortfahren.
Ansonsten kannst du das Kopieren über rsync probieren: 'rsync -avz --exclude 'staging' . staging/'
Viele Grüße
Ewald
Shopware 5 lokal mit MAMP installieren
Eine neue Version von Shopware ist verfügbar! - 8mylez.com
Was du über deine Shopware Zugangsdaten wissen musst - 8mylez.com
Dirk Eichenberg
Ewald Gering
alles was nicht unter der Domain des Shops läuft, wird als anderer Shop gewertet. Deswegen erstellen wir die Staging Umgebung in einem Unterordner, da hier die gleiche Domain genutzt wird.
Eine Subdomain ist somit wieder ein eigener Shop.
Den Staging Shop muss man also auf dem selben Server wie den Hauptshop laufen lassen.
Viele Grüße,
Ewald
Dirk Eichenberg
Ich habe immer Daten vom Server kopiert, neues Verzeichnis angelegt. Daten wieder hochgeladen. Datenbank exportiert. Neue Datenbank erstellt, Daten importiert. Konfiguration geändert.
Das mit dem Terminal hört sich jedenfalls eleganter an. Danke für die Anregung.
Ändert Ihr dann auch über das Terminal die Dateien auf dem Server? Habe ich auch immer über Download/Upload gemacht.
Ewald Gering
zum bearbeiten von größeren Dateien nutze ich den Atom Editor. Wenn man eine kleine Datei ändern möchte ist ein Editor wie https://de.wikipedia.org/wiki/Vim über das Terminal sehr praktisch.
Das kopieren über ssh ist vor allem nützlich wenn man eine nicht so gute Verbindung hat und der Download bzw. Upload sehr lange dauern kann.
Viele Grüße,
Ewald
Was denkst du?