Jak stworzyć stronę staging PrestaShop
Kompletny przewodnik po konfiguracji środowiska testowego PrestaShop — Docker, hosting współdzielony i lokalne opcje. Testuj aktualizacje bezpiecznie.
Dlaczego potrzebujesz strony staging
Każdy właściciel sklepu PrestaShop prędzej czy później staje przed tym samym dylematem: musisz zaktualizować moduł, zmienić motyw lub przetestować nową funkcjonalność — ale wykonanie tego na działającym sklepie grozi uszkodzeniem czegoś, na czym polegają Twoi klienci. Strona staging rozwiązuje ten problem, dając Ci identyczną kopię sklepu, na której możesz swobodnie testować bez żadnych konsekwencji.
Jeśli kiedykolwiek zaktualizowałeś moduł i patrzyłeś, jak Twoja strona główna się psuje, albo zainstalowałeś nowy motyw tylko po to, by odkryć, że checkout przestał działać — środowisko staging wychwytywałoby to, zanim jakikolwiek klient to zobaczył.
Strona staging to nie luksus — to absolutne minimum dla prowadzenia profesjonalnego sklepu e-commerce. Koszt jednej godziny przestoju w szczycie ruchu znacznie przewyższa wysiłek utrzymania środowiska testowego.
Czym dokładnie jest strona staging?
Strona staging to kompletny klon Twojego sklepu produkcyjnego — ta sama baza danych, te same pliki, ta sama konfiguracja — działający pod osobnym adresem URL, do którego dostęp masz tylko Ty (i Twój zespół). Wygląda i zachowuje się dokładnie jak Twój prawdziwy sklep, ale klienci nigdy go nie widzą.
Pomyśl o tym jak o próbie generalnej. Najpierw testujesz wszystko na staging, potwierdzasz, że działa, a następnie wprowadzasz te same zmiany na sklepie produkcyjnym.
Czym strona staging JEST
- Dokładną kopią plików i bazy danych Twojego sklepu produkcyjnego
- Działającą pod osobną domeną lub subdomeną (np.
staging.yourshop.com) - Zabezpieczoną hasłem lub ograniczoną adresami IP, aby dostęp miał tylko Twój zespół
- Bezpiecznym miejscem do testowania aktualizacji, nowych modułów, zmian motywu i aktualizacji PHP
Czym strona staging NIE JEST
- Środowiskiem deweloperskim do tworzenia własnego kodu od zera (to jest środowisko dev)
- Rozwiązaniem do tworzenia kopii zapasowych (backupy to osobna kwestia — nigdy nie polegaj na staging jako jedynym backupie)
- Czymś, co konfigurujesz raz i zapominasz — musi być regularnie odświeżana danymi z produkcji
Opcja 1: Staging oparty na Docker (zalecane)
Docker to zdecydowanie najczystszy sposób na uruchomienie środowiska staging PrestaShop. Daje Ci izolowane, powtarzalne środowiska, które możesz uruchomić i usunąć w kilka minut. Właśnie tego używamy wewnętrznie do rozwoju i testowania wszystkich naszych modułów.
Wymagania wstępne
- Serwer Linux lub VPS z co najmniej 2GB RAM (zalecane 4GB)
- Zainstalowane Docker i Docker Compose
- Dostęp SSH zarówno do serwera produkcyjnego, jak i serwera staging
- Podstawowa znajomość wiersza poleceń
Krok 1: Przygotuj środowisko Docker
Utwórz katalog dla projektu staging oraz plik docker-compose.yml:
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
Ważne: Dopasuj wersję obrazu PrestaShop do wersji produkcyjnej. Jeśli korzystasz z PS 1.7.8, użyj prestashop/prestashop:1.7.8. Jeśli z PS 8.1, użyj prestashop/prestashop:8.1.
Krok 2: Wyeksportuj bazę danych produkcyjną
Połącz się przez SSH z serwerem produkcyjnym i zrób zrzut bazy danych:
# 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 ./
Krok 3: Zaimportuj do staging
# 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
Krok 4: Skopiuj pliki produkcyjne
# 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'
Krok 5: Zaktualizuj konfigurację
Po imporcie zaktualizuj adres URL sklepu w bazie danych, aby wskazywał na Twoją domenę staging:
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');
"
Następnie zaktualizuj plik html/app/config/parameters.php, wpisując dane dostępu do bazy danych staging (zgodne z docker-compose.yml).
Na koniec wyczyść cache:
docker exec staging-shop rm -rf /var/www/html/var/cache/*
Opcja 2: Subdomena na hostingu współdzielonym
Jeśli korzystasz z hostingu współdzielonego (cPanel, Plesk, DirectAdmin), Docker nie jest dostępny. Zamiast tego utworzysz subdomenę z własnym katalogiem głównym i bazą danych.
Krok 1: Utwórz subdomenę
W panelu hostingowym:
- Przejdź do sekcji Subdomeny lub Domeny
- Utwórz
staging.yourshop.com - Skieruj ją do nowego katalogu, np.
/home/user/staging.yourshop.com
Krok 2: Utwórz nową bazę danych
W panelu hostingowym:
- Przejdź do sekcji Bazy danych MySQL
- Utwórz nową bazę danych (np.
user_staging) - Utwórz lub przypisz użytkownika z pełnymi uprawnieniami do tej bazy danych
Krok 3: Skopiuj pliki
Użyj SSH lub Menedżera plików, aby skopiować całą instalację PrestaShop do katalogu staging. Jeśli masz SSH:
cp -r /home/user/public_html/* /home/user/staging.yourshop.com/
Krok 4: Wyeksportuj i zaimportuj bazę danych
# Export production
mysqldump -u user -p production_db > ~/staging_import.sql
# Import to staging
mysql -u user -p staging_db < ~/staging_import.sql
Krok 5: Zaktualizuj konfigurację
Edytuj plik app/config/parameters.php (lub config/settings.inc.php w PS 1.6), aby wskazywał na bazę danych staging. Zaktualizuj adresy URL sklepu w bazie danych, jak pokazano w Opcji 1, Kroku 5.
Opcja 3: Lokalne środowisko z XAMPP/MAMP
Do szybkiego testowania lokalnego XAMPP (Windows/Linux) lub MAMP (macOS) sprawdzają się dobrze. Proces jest podobny do hostingu współdzielonego — utwórz bazę danych, skopiuj pliki, zaimportuj zrzut, zaktualizuj konfigurację. To najszybsze rozwiązanie dla programistów pracujących samodzielnie, którzy muszą szybko przetestować moduł.
Wadą jest to, że lokalne środowisko może różnić się od produkcyjnego (inna wersja PHP, inna wersja MySQL, brakujące rozszerzenia), więc zawsze wykonaj końcowy test na serwerowym staging przed wdrożeniem na produkcję.
Niezbędne kroki po konfiguracji
Wyłącz wysyłanie e-maili
To kluczowe. Twoja strona staging zawiera kopię bazy danych produkcyjnej, co oznacza, że zawiera prawdziwe adresy e-mail klientów. Jeśli uruchomisz potwierdzenie zamówienia lub reset hasła na staging, te wiadomości trafią do prawdziwych klientów.
Przejdź do Zaawansowane parametry → E-mail i:
- Ustaw metodę wysyłania na „Nigdy nie wysyłaj e-maili” (najbezpieczniejsze), lub
- Przekieruj wszystkie wychodzące wiadomości na adres testowy za pomocą narzędzia takiego jak Mailtrap
Wyłącz bramki płatności
Jeśli Twoja strona staging jest połączona z działającymi procesorami płatności (Stripe, PayPal), natychmiast je wyłącz. Nie chcesz przypadkowych obciążeń na prawdziwych kartach. Możesz:
- Wyłączyć wszystkie moduły płatności na staging, lub
- Przełączyć je w tryb sandbox/testowy
Zablokuj wyszukiwarki
Zapobiegnij indeksowaniu strony staging przez wyszukiwarki — zduplikowana treść to koszmar dla SEO:
- Przejdź do Parametry sklepu → Ruch i SEO i wyłącz mapę witryny
- Dodaj plik
robots.txtblokujący wszystkie roboty:User-agent: * / Disallow: / - Jeszcze lepiej — ogranicz dostęp całkowicie (patrz niżej)
Ogranicz dostęp
Twoja strona staging nie powinna być publicznie dostępna. Możliwości:
- Biała lista IP w .htaccess: Zezwól tylko na IP Twojego biura/domu
- HTTP Basic Auth: Dodaj monit o hasło przez
.htaccess - Tryb konserwacji PrestaShop: Włącz go i dodaj swoje IP do białej listy w Back Office → Parametry sklepu → Ogólne → Konserwacja
Zalecamy białą listę IP w .htaccess jako najbardziej niezawodną metodę — tryb konserwacji można ominąć, a basic auth czasami koliduje z modułami intensywnie korzystającymi z Ajax.
Utrzymywanie staging w synchronizacji
Strona staging jest przydatna tylko wtedy, gdy odzwierciedla aktualne środowisko produkcyjne. Odświeżaj ją regularnie:
Kiedy odświeżać
- Przed każdą ważną aktualizacją (aktualizacja rdzenia PrestaShop, duża aktualizacja modułu)
- Co najmniej raz w miesiącu, jeśli aktywnie rozwijasz sklep
- Po istotnych zmianach w katalogu (nowe kategorie, zmieniona struktura produktów)
Szybki skrypt odświeżania (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."
Najczęstsze błędy, których należy unikać
Używanie produkcyjnych kluczy API na staging
Jeśli Twój sklep produkcyjny łączy się ze Stripe, PayPal, API przewoźników lub jakimikolwiek usługami zewnętrznymi — te klucze API są teraz również na Twojej stronie staging. Zawsze przełącz się na klucze sandbox/testowe na staging, aby uniknąć:
- Obciążania prawdziwych klientów z zamówień testowych
- Wysyłania prawdziwych zleceń wysyłkowych do przewoźników
- Przekraczania limitów zapytań API, co wpływa na Twój sklep produkcyjny
Zapominanie o wyłączeniu zadań cron
Jeśli Twój sklep produkcyjny ma zadania cron (przypomnienia o koszyku, synchronizacja stanów magazynowych, generowanie feedów), te crony mogą też uruchamiać się na staging, jeśli adresy URL są podobne. Wyłącz lub zakomentuj wszelkie wpisy cron związane ze staging.
Testowanie z otwartym sklepem produkcyjnym w innej karcie
Jeśli jesteś zalogowany zarówno w panelu administracyjnym staging, jak i produkcji w tej samej przeglądarce, pliki cookie mogą kolidować. Użyj osobnej przeglądarki lub trybu incognito dla staging.
Kiedy testować na staging, a kiedy na produkcji
| Zawsze najpierw na staging | Bezpieczne do wykonania na produkcji |
|---|---|
| Aktualizacje rdzenia PrestaShop | Zmiany treści (strony CMS, opisy produktów) |
| Instalacja modułów lub ich większe aktualizacje | Korekty cen |
| Zmiany lub aktualizacje motywu | Włączanie/wyłączanie istniejących modułów (jeśli wcześniej przetestowane) |
| Aktualizacje wersji PHP | Dodawanie produktów lub kategorii |
| Zmiany w kodzie własnym lub nadpisania | Zmiana stawek wysyłki lub reguł podatkowych |
| Migracje bazy danych | Aktualizacje tłumaczeń |
Podsumowanie
Konfiguracja strony staging zajmuje około godziny za pierwszym razem. Odświeżenie jej zajmuje 5 minut, gdy masz gotowy skrypt. Zainwestowany czas zwraca się już przy pierwszym przypadku, gdy wychwycisz błąd, zanim dotrze on do klientów.
Docker to najlepsze podejście, jeśli masz VPS lub serwer dedykowany. Klonowanie subdomeny sprawdza się na hostingu współdzielonym. Tak czy inaczej — ważne jest to, żebyś miał coś pomiędzy swoimi zmianami w kodzie a klientami.
Jeśli potrzebujesz pomocy w konfiguracji środowiska staging do testowania naszych modułów, sprawdź nasz program Wypróbuj przed zakupem — każdy moduł zawiera w pełni funkcjonalne 30-dniowe demo, które możesz zainstalować na swojej stronie staging i przetestować przed zakupem.
More guides available
Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.