Staging Umgebung – Was ist das und warum brauchst du eine?

Staging Umgebung – Was ist das und warum brauchst du eine?

Ewald Gering 14. September 2016 41

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!

Was ist Staging und was bringt es dir?

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!

Aber warum Online und nicht Lokal?

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

Die Schritte um einen Staging Bereich einzurichten

  1. Unterordner z.B. „staging“ erstellen
  2. Shopware in den Unterordner kopieren
  3. Cache Ordner leeren
  4. Die Datenbank kopieren
  5. Konfiguration des Staging Shops
  6. Neue Plugins, Templates etc. ausprobieren

Zuerst stellen wir uns die Frage: Was brauchen wir eigentlich?

Zugang zu:

  • FTP
  • Datenbank
  • Shopware Backend
  • SSH

Der erste Schritt:

  • Über das Terminal eine SSH Verbindung zum Server aufbauen (Wir nutzen das Terminal von OS X)
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_*

shopware cache ordner löschen

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).

mysql tabellen anzeigen

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.

shopware_datenbank_config_ändern

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

41 Kommentare

  • Für alle die, die Probleme mit der Erreichbarkeit von /staging/backend haben und NGINX verwenden. Das hat bei uns zum Erfolg geführt:

    # 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;
    }
  • Hey Travis,

    vielen Dank für den Hinweis! Ich werde den Blogpost updaten, damit dies auch den anderen weiterhelfen kann!

    Gruß
    Alexander
  • Hallo!

    Wo genau muss man den Nginx Schnippsel reinkopieren?

    Vielen Dank,
    Anca
  • Das kommt immer auf dein individuelles Nginx Setup an. (Modular, Vhosts etc.) Wir haben es so eingerichtet, dass es im jeweiligen Server Block steht.
  • Hey Anca,

    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
  • Hallo zusammen,

    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.
  • Hey Johannes,

    du kannst den Kopiervorgang auch über rsync machen.
    Der ganz einfache Befehl wäre folgender:
    rsync -avz --exclude 'staging' . staging/'

    Viele Grüße
    Ewald
  • Super :) !
    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/

  • Hey Werner,

    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
  • Hallo!
    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
  • Hey Sel4,

    vielen Dank für die Info. Wir prüfen das ganze mal auch bei uns nach.

    Viele Grüße
    Ewald
  • Hey Sel4,

    leider konnte ich da kein Problem nachvollziehen. Eventuell liegt es an irgendwelchen Plugins die im Cache sind.

    Viele Grüße
    Ewald
  • Hallo Ewald,
    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
  • Hey Johannes,

    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
  • Hat alles soweit geklappt, nur kann ich mich dann nicht mehr in die Staging Seite ins Backend einloggen. Es kommt dann folgende Fehlermeldung:
    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
  • Hey Mario,

    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
  • Hallo,
    kannst du mir auch sagen was in die .htacces eingetragen gehört, damit der Ordner /staging funktioniert?
  • Hey Mario,

    die RewriteBase muss mit einem /staging ergänzt werden z.B. RewriteBase /shopware/staging oder RewriteBase /staging/
  • Hallo zusammen,

    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
  • Hey sven,

    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
  • Ich bin eure Anleitung Schritt für Schritt durchgegangen, allerdings läd beim aufruf von domain.de/staging lediglich die Startseite des Shops. Alle Verweise danach gehen auf den Live-Shop. Auch das Backend, welches über domain.de/staging/backend ja aufrufbar sein müsste, kann ich nicht aufrufen.

    Woran könnte das liegen?
  • Hey Justus,

    hast du einen nginx Webserver? Dort musst du die Konfiguration fuer das Unterverzeichnis angeben, bzw. hinzufuegen.

    Viele Grueße
    Ewald
  • Hallo,

    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?

  • Hey ES,

    wurden Anpassungen an der .htaccess Datei vorgenommen? Eventuell stimmen durch diese die Pfade nicht mehr.

    Viele Grüße
    Ewald
  • Hi Ewald,
    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
  • Hey Dennis,

    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
  • Habe nochmal geprüft:
    cp -r !(staging|production_*) staging/

    ist keine gute Idee da es andere Files mit dem Muster production_* gibt.
  • Hey tducc,

    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
  • Man kann den Kopiervorgang abkürzen in dem man direct den Staging Ordner und den Production-Cache ignoriert

    cp -r !(_staging) _staging/

    oder wenn man ganz mutig ist auch

    cp -r !(staging|production_*) staging/



  • Hi Ewald, danke für den super Eintrag!
    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ß
  • Hey Fabian,

    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
  • Wie mache ich es denn, wenn ich das Staging in einer Subdomain, oder auf einem anderen Server laufen lassen möchte. Muss ich dann bei Shopware eine neuen Shop mit der entsprechenden Domain registrieren, oder gibt es so etwas wie eine Entwicklungsdomain, die man registrieren kann?
  • Hallo Dirk,

    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
  • Hallo, mit dem Mac-Terminal Zugriff auf die Server Dateien zu bekommen ist mir bisher nicht bekannt gewesen.
    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.
  • Hallo Dirk,

    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?

Beliebt

Was du über die Shopware 5 Theme Struktur wissen musst und wie du ein eigenes Template erstellst
Social Media Icon mit Link im Footer
Shopware Theme: Eigenes Listing Layout erstellen
Logo Größe mit Less für Shopware 5 anpassen
Die größten Fehler bei der Entwicklung eines Shopware 5 Themes

Sicher Dir die besten Shopware 6
Tipps & Tricks

Trag Dich ein und Du erhältst unser Shopware 6 Whitepaper kostenlos!
Trag dich für unseren Newsletter an, im Anschluss erhältst Du das Whitepaper. 

Mit dem Abschicken Deiner Daten akzeptierst Du unsere Datenschutzerklärung.

Entdecke unsere ebooks

Unsere Standorte

Zentrale 

Technologiepark 23
33100 Paderborn


Leipzig
Bernhardstraße 34
04315 Leipzig

Kontakt

Ü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


Unsere Partner
© 2023 by 8mylez GmbH //  Impressum + Datenschutz