Knowledge Base Guide

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:

  1. Przejdź do sekcji Subdomeny lub Domeny
  2. Utwórz staging.yourshop.com
  3. Skieruj ją do nowego katalogu, np. /home/user/staging.yourshop.com

Krok 2: Utwórz nową bazę danych

W panelu hostingowym:

  1. Przejdź do sekcji Bazy danych MySQL
  2. Utwórz nową bazę danych (np. user_staging)
  3. 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.txt blokują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 stagingBezpieczne do wykonania na produkcji
Aktualizacje rdzenia PrestaShopZmiany treści (strony CMS, opisy produktów)
Instalacja modułów lub ich większe aktualizacjeKorekty cen
Zmiany lub aktualizacje motywuWłączanie/wyłączanie istniejących modułów (jeśli wcześniej przetestowane)
Aktualizacje wersji PHPDodawanie produktów lub kategorii
Zmiany w kodzie własnym lub nadpisaniaZmiana stawek wysyłki lub reguł podatkowych
Migracje bazy danychAktualizacje 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.

Ładowanie...
Powrót do góry