So erstellen Sie eine PrestaShop-Staging-Seite
Komplette Anleitung zur Einrichtung einer PrestaShop Staging-Umgebung — Docker, Shared Hosting und lokale Entwicklung. Testen Sie Updates sicher vor dem Go-Live.
Warum Sie eine Staging-Seite brauchen
Jeder PrestaShop-Shopbetreiber steht irgendwann vor demselben Dilemma: Sie müssen ein Modul aktualisieren, Ihr Theme ändern oder eine neue Funktion testen — aber wenn Sie das auf Ihrem Live-Shop machen, riskieren Sie, etwas zu beschädigen, worauf Ihre Kunden angewiesen sind. Eine Staging-Seite löst dieses Problem, indem sie Ihnen eine identische Kopie Ihres Shops zur Verfügung stellt, auf der Sie ohne Konseqünzen frei testen können.
Wenn Sie schon einmal ein Modul aktualisiert haben und dabei zugesehen haben, wie Ihre Startseite zusammenbrach, oder ein neues Theme installiert haben, nur um festzustellen, dass Ihr Checkout nicht mehr funktionierte — eine Staging-Umgebung hätte das erkannt, bevor es ein Kunde gesehen hätte.
Eine Staging-Seite ist kein Luxus — sie ist das absolute Minimum für den professionellen Betrieb eines E-Commerce-Shops. Die Kosten einer Stunde Ausfallzeit während des Spitzenverkehrs übersteigen bei Weitem den Aufwand für die Pflege einer Testumgebung.
Was genau ist eine Staging-Seite?
Eine Staging-Seite ist ein vollständiger Klon Ihres Produktiv-Shops — gleiche Datenbank, gleiche Dateien, gleiche Konfiguration — der unter einer separaten URL läuft, auf die nur Sie (und Ihr Team) zugreifen können. Sie sieht genauso aus und verhält sich genauso wie Ihr echter Shop, aber Kunden sehen sie nie.
Stellen Sie es sich wie eine Generalprobe vor. Sie testen alles zuerst auf der Staging-Seite, bestätigen, dass es funktioniert, und wenden dann dieselben Änderungen auf Ihren Live-Shop an.
Was eine Staging-Seite IST
- Eine exakte Kopie der Dateien und der Datenbank Ihres Produktiv-Shops
- Läuft auf einer separaten Domain oder Subdomain (z.B.
staging.yourshop.com) - Passwortgeschützt oder IP-beschränkt, damit nur Ihr Team darauf zugreifen kann
- Ein sicherer Ort zum Testen von Updates, neuen Modulen, Theme-Änderungen und PHP-Upgrades
Was eine Staging-Seite NICHT ist
- Eine Entwicklungsumgebung zum Erstellen von benutzerdefiniertem Code von Grund auf (das ist eine Entwicklungsumgebung)
- Eine Backup-Lösung (Backups sind separat — verlassen Sie sich nie auf Staging als einziges Backup)
- Etwas, das man einmal einrichtet und dann vergisst — sie muss regelmäßig aus der Produktivumgebung aktualisiert werden
Option 1: Docker-basiertes Staging (empfohlen)
Docker ist bei Weitem die sauberste Methode, um eine PrestaShop-Staging-Umgebung zu betreiben. Es bietet Ihnen isolierte, reproduzierbare Umgebungen, die Sie in wenigen Minuten starten und wieder entfernen können. Dies ist das Verfahren, das wir intern für unsere gesamte Modulentwicklung und -tests verwenden.
Voraussetzungen
- Ein Linux-Server oder VPS mit mindestens 2 GB RAM (4 GB empfohlen)
- Docker und Docker Compose installiert
- SSH-Zugang sowohl zu Ihrem Produktivserver als auch zu Ihrem Staging-Server
- Grundlegende Vertrautheit mit der Kommandozeile
Schritt 1: Die Docker-Umgebung einrichten
Erstellen Sie ein Verzeichnis für Ihr Staging-Projekt und eine docker-compose.yml-Datei:
mkdir ~/staging-shop && cd ~/staging-shop
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
prestashop:
image: prestashop/prestashop:8.2
container_name: staging-shop
ports:
- "8080:80"
environment:
- DB_SERVER=db
- DB_NAME=prestashop
- DB_USER=root
- DB_PASSWD=your_secure_password
volumes:
- ./html:/var/www/html
depends_on:
- db
restart: unless-stopped
db:
image: mysql:5.7
container_name: staging-shop-db
environment:
- MYSQL_ROOT_PASSWORD=your_secure_password
- MYSQL_DATABASE=prestashop
volumes:
- ./mysql:/var/lib/mysql
restart: unless-stopped
EOF
Wichtig: Passen Sie die PrestaShop-Image-Version an Ihre Produktivversion an. Wenn Sie PS 1.7.8 verwenden, nutzen Sie prestashop/prestashop:1.7.8. Bei PS 8.1 verwenden Sie prestashop/prestashop:8.1.
Schritt 2: Ihre Produktivdatenbank exportieren
Verbinden Sie sich per SSH mit Ihrem Produktivserver und erstellen Sie einen Datenbank-Dump:
# On your production server
mysqldump -u root -p prestashop > ~/prestashop_backup.sql
# Download to your local machine / staging server
scp user@production-server:~/prestashop_backup.sql ./
Schritt 3: In die Staging-Umgebung importieren
# Start the containers
docker compose up -d
# Wait ~30 seconds for MySQL to initialize, then import
docker exec -i staging-shop-db mysql -u root -pyour_secure_password prestashop < prestashop_backup.sql
Schritt 4: Produktivdateien kopieren
# Sync your production files to the staging html directory
rsync -avz --delete \
user@production-server:/var/www/html/ \
./html/ \
--exclude='var/cache/*' \
--exclude='var/logs/*' \
--exclude='app/config/parameters.php'
Schritt 5: Konfiguration aktualisieren
Aktualisieren Sie nach dem Import die Shop-URL in der Datenbank, damit sie auf Ihre Staging-Domain verweist:
docker exec -i staging-shop-db mysql -u root -pyour_secure_password prestashop -e "
UPDATE ps_shop_url SET domain='staging.yourshop.com', domain_ssl='staging.yourshop.com' WHERE id_shop=1;
UPDATE ps_configuration SET value='staging.yourshop.com' WHERE name IN ('PS_SHOP_DOMAIN','PS_SHOP_DOMAIN_SSL');
"
Aktualisieren Sie dann html/app/config/parameters.php mit den Staging-Datenbankzugangsdaten (passend zu Ihrer docker-compose.yml).
Leeren Sie abschließend den Cache:
docker exec staging-shop rm -rf /var/www/html/var/cache/*
Option 2: Subdomain auf Shared Hosting
Wenn Sie Shared Hosting nutzen (cPanel, Plesk, DirectAdmin), steht Docker nicht zur Verfügung. Stattdessen erstellen Sie eine Subdomain mit eigenem Dokumentenstammverzeichnis und eigener Datenbank.
Schritt 1: Die Subdomain erstellen
In Ihrem Hosting-Panel:
- Gehen Sie zu Subdomains oder Domains
- Erstellen Sie
staging.yourshop.com - Verweisen Sie diese auf ein neues Verzeichnis, z.B.
/home/user/staging.yourshop.com
Schritt 2: Eine neue Datenbank erstellen
In Ihrem Hosting-Panel:
- Gehen Sie zu MySQL Databases
- Erstellen Sie eine neue Datenbank (z.B.
user_staging) - Erstellen oder weisen Sie einen Benutzer mit vollen Rechten für diese Datenbank zu
Schritt 3: Dateien kopieren
Verwenden Sie SSH oder den Dateimanager, um Ihre gesamte PrestaShop-Installation in das Staging-Verzeichnis zu kopieren. Wenn Sie SSH haben:
cp -r /home/user/public_html/* /home/user/staging.yourshop.com/
Schritt 4: Datenbank exportieren und importieren
# Export production
mysqldump -u user -p production_db > ~/staging_import.sql
# Import to staging
mysql -u user -p staging_db < ~/staging_import.sql
Schritt 5: Konfiguration aktualisieren
Bearbeiten Sie app/config/parameters.php (oder config/settings.inc.php bei PS 1.6), damit die Staging-Datenbank verwendet wird. Aktualisieren Sie die Shop-URLs in der Datenbank wie in Option 1, Schritt 5 beschrieben.
Option 3: Lokale Entwicklung mit XAMPP/MAMP
Für schnelle lokale Tests funktionieren XAMPP (Windows/Linux) oder MAMP (macOS) gut. Der Ablauf ist ähnlich wie beim Shared Hosting — Datenbank erstellen, Dateien kopieren, Dump importieren, Konfiguration anpassen. Dies ist am schnellsten für Einzelentwickler, die nur ein Modul schnell testen müssen.
Der Nachteil ist, dass Ihre lokale Umgebung von der Produktivumgebung abweichen kann (andere PHP-Version, andere MySQL-Version, fehlende Erweiterungen). Führen Sie daher immer einen abschließenden Test auf einem serverbasierten Staging durch, bevor Sie in die Produktivumgebung deployen.
Wichtige Schritte nach der Einrichtung
Ausgehende E-Mails deaktivieren
Dies ist entscheidend. Ihre Staging-Seite enthält eine Kopie Ihrer Produktivdatenbank, was bedeutet, dass sie echte E-Mail-Adressen von Kunden enthält. Wenn Sie auf der Staging-Seite eine Bestellbestätigung oder ein Passwort-Zurücksetzen auslösen, gehen diese E-Mails an echte Kunden.
Gehen Sie zu Erweiterte Einstellungen → E-Mail und wählen Sie entweder:
- Setzen Sie die E-Mail-Methode auf „Niemals E-Mails senden“ (am sichersten), oder
- Leiten Sie alle ausgehenden E-Mails an eine Testadresse um, indem Sie ein Tool wie Mailtrap verwenden
Zahlungs-Gateways deaktivieren
Wenn Ihre Staging-Seite mit Live-Zahlungsanbietern (Stripe, PayPal) verbunden ist, deaktivieren Sie diese sofort. Sie möchten keine versehentlichen Belastungen auf echten Kreditkarten. Entweder:
- Deaktivieren Sie alle Zahlungsmodule auf der Staging-Seite, oder
- Schalten Sie sie in den Sandbox-/Testmodus
Suchmaschinen blockieren
Verhindern Sie, dass Ihre Staging-Seite von Suchmaschinen indexiert wird — doppelte Inhalte sind ein SEO-Albtraum:
- Gehen Sie zu Shopeinstellungen → Traffic & SEO und deaktivieren Sie die Sitemap
- Fügen Sie eine
robots.txthinzu, die alle Crawler blockiert:User-agent: * / Disallow: / - Noch besser: Beschränken Sie den Zugriff vollständig (siehe unten)
Zugriff beschränken
Ihre Staging-Seite sollte nicht öffentlich zugänglich sein. Optionen:
- IP-Whitelist über .htaccess: Erlauben Sie nur Ihre Büro-/Heim-IP
- HTTP Basic Auth: Fügen Sie eine Passwortabfrage über
.htaccesshinzu - PrestaShop-Wartungsmodus: Aktivieren Sie ihn und setzen Sie Ihre IP auf die Whitelist unter Backoffice → Shopeinstellungen → Allgemein → Wartung
Wir empfehlen IP-Whitelisting in .htaccess als zuverlässigste Methode — der Wartungsmodus kann umgangen werden, und Basic Auth kollidiert manchmal mit Ajax-lastigen Modulen.
Staging synchron halten
Eine Staging-Seite ist nur nützlich, wenn sie Ihre aktuelle Produktivumgebung widerspiegelt. Aktualisieren Sie sie regelmäßig:
Wann aktualisieren
- Vor jedem größeren Update (PrestaShop-Core-Upgrade, großes Modul-Update)
- Mindestens monatlich, wenn Sie aktiv entwickeln
- Nach wesentlichen Katalogänderungen (neue Kategorien, geänderte Produktstruktur)
Schnelles Aktualisierungsskript (Docker)
#!/bin/bash
# refresh-staging.sh — Pull latest production data into staging
# 1. Dump production DB
ssh production "mysqldump -u root -p'PASS' prestashop" > /tmp/staging_refresh.sql
# 2. Import to staging
docker exec -i staging-shop-db mysql -u root -p'your_secure_password' prestashop < /tmp/staging_refresh.sql
# 3. Fix URLs
docker exec -i staging-shop-db mysql -u root -p'your_secure_password' prestashop -e "
UPDATE ps_shop_url SET domain='staging.yourshop.com', domain_ssl='staging.yourshop.com' WHERE id_shop=1;
UPDATE ps_configuration SET value='staging.yourshop.com' WHERE name IN ('PS_SHOP_DOMAIN','PS_SHOP_DOMAIN_SSL');
"
# 4. Sync files
rsync -avz --delete production:/var/www/html/ ./html/ --exclude='var/cache/*' --exclude='app/config/parameters.php'
# 5. Clear cache
docker exec staging-shop rm -rf /var/www/html/var/cache/*
echo "Staging refreshed."
Häufige Fehler, die Sie vermeiden sollten
Produktiv-API-Schlüssel auf der Staging-Seite verwenden
Wenn Ihr Produktiv-Shop mit Stripe, PayPal, Versand-APIs oder anderen externen Diensten verbunden ist — befinden sich diese API-Schlüssel nun auch auf Ihrer Staging-Seite. Wechseln Sie auf Staging immer zu Sandbox-/Testschlüsseln, um Folgendes zu vermeiden:
- Echte Kunden durch Testbestellungen belasten
- Echte Versandaufträge an Spediteure senden
- API-Ratenlimits erreichen, die Ihren Live-Shop beeinträchtigen
Vergessen, Cron-Jobs zu deaktivieren
Wenn Ihr Produktiv-Shop Cron-Jobs hat (Warenkorb-Erinnerungen, Lagerbestandssynchronisation, Feed-Generierung), könnten diese Crons auch auf der Staging-Seite laufen, wenn die URLs ähnlich sind. Deaktivieren oder kommentieren Sie alle Staging-bezogenen Cron-Einträge aus.
Testen mit dem Live-Shop in einem anderen Tab
Wenn Sie gleichzeitig im Backoffice Ihrer Staging- und Produktivumgebung im selben Browser angemeldet sind, können Cookies kollidieren. Verwenden Sie einen separaten Browser oder ein Inkognito-Fenster für die Staging-Seite.
Wann auf Staging testen vs. direkt in der Produktivumgebung
| Immer zuerst auf Staging testen | Sicher direkt in der Produktivumgebung |
|---|---|
| PrestaShop-Core-Updates | Inhaltliche Änderungen (CMS-Seiten, Produktbeschreibungen) |
| Modulinstallationen oder größere Updates | Preisanpassungen |
| Theme-Änderungen oder -Upgrades | Aktivieren/Deaktivieren vorhandener Module (wenn zuvor getestet) |
| PHP-Versions-Upgrades | Hinzufügen von Produkten oder Kategorien |
| Benutzerdefinierte Code-Änderungen oder Overrides | Ändern von Versandkosten oder Steuerregeln |
| Datenbankmigrationen | Übersetzungs-Updates |
Zusammenfassung
Die Einrichtung einer Staging-Seite dauert beim ersten Mal etwa eine Stunde. Die Aktualisierung dauert 5 Minuten, sobald Sie ein Skript haben. Die investierte Zeit rentiert sich bereits beim ersten Mal, wenn Sie eine fehlerhafte Änderung erkennen, bevor sie Ihre Kunden erreicht.
Docker ist der beste Ansatz, wenn Sie einen VPS oder dedizierten Server haben. Subdomain-Klonen funktioniert auf Shared Hosting. In jedem Fall — das Wichtigste ist, dass Sie etwas zwischen Ihren Code-Änderungen und Ihren Kunden haben.
Wenn Sie Hilfe bei der Einrichtung einer Staging-Umgebung speziell zum Testen unserer Module benötigen, schauen Sie sich unser Vor dem Kauf testen-Programm an — jedes Modul enthält eine voll funktionsfähige 30-Tage-Demo, die Sie auf Ihrer Staging-Seite installieren können, um sie vor dem Kauf zu testen.
More guides available
Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.