Come creare un sito di staging PrestaShop
Guida completa per configurare un ambiente staging PrestaShop — Docker, hosting condiviso e sviluppo locale. Testa gli aggiornamenti prima del deploy.
Perché avete bisogno di un sito di staging
Ogni proprietario di un negozio PrestaShop prima o poi si trova di fronte allo stesso dilemma: dovete aggiornare un modulo, cambiare il tema o testare una nuova funzionalità — ma farlo sul negozio live rischia di compromettere qualcosa da cui i vostri clienti dipendono. Un sito di staging risolve questo problema fornendovi una copia identica del vostro negozio dove potete effettuare test liberamente senza conseguenze.
Se vi è mai capitato di aggiornare un modulo e vedere la homepage bloccarsi, o di installare un nuovo tema scoprendo che il checkout ha smesso di funzionare — un ambiente di staging avrebbe intercettato il problema prima che qualsiasi cliente lo vedesse.
Un sito di staging non è un lusso — è il minimo indispensabile per gestire un negozio e-commerce professionale. Il costo di un’ora di inattività durante il picco di traffico supera di gran lunga lo sforzo di mantenere un ambiente di test.
Che cos’è esattamente un sito di staging?
Un sito di staging è un clone completo del vostro negozio di produzione — stesso database, stessi file, stessa configurazione — in esecuzione su un URL separato a cui solo voi (e il vostro team) potete accedere. Ha lo stesso aspetto e si comporta esattamente come il vostro negozio reale, ma i clienti non lo vedono mai.
Pensatelo come una prova generale. Testate tutto prima sullo staging, confermate che funziona, poi applicate le stesse modifiche al vostro negozio live.
Cosa È un sito di staging
- Una copia esatta dei file e del database del vostro negozio di produzione
- In esecuzione su un dominio o sottodominio separato (ad es.
staging.yourshop.com) - Protetto da password o con restrizione IP, così solo il vostro team può accedervi
- Un luogo sicuro per testare aggiornamenti, nuovi moduli, modifiche al tema e upgrade PHP
Cosa NON È un sito di staging
- Un ambiente di sviluppo per scrivere codice personalizzato da zero (quello è un ambiente dev)
- Una soluzione di backup (i backup sono separati — non fate mai affidamento sullo staging come unico backup)
- Qualcosa che configurate una volta e dimenticate — deve essere aggiornato regolarmente dalla produzione
Opzione 1: Staging basato su Docker (Consigliato)
Docker è di gran lunga il modo più pulito per eseguire un ambiente di staging PrestaShop. Offre ambienti isolati e riproducibili che potete avviare e smontare in pochi minuti. È ciò che utilizziamo internamente per tutto lo sviluppo e il testing dei nostri moduli.
Prerequisiti
- Un server Linux o VPS con almeno 2GB di RAM (4GB consigliati)
- Docker e Docker Compose installati
- Accesso SSH sia al server di produzione che a quello di staging
- Familiarità di base con la riga di comando
Passo 1: Configurare l’ambiente Docker
Create una directory per il vostro progetto di staging e un file 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
Importante: Fate corrispondere la versione dell’immagine PrestaShop a quella di produzione. Se state eseguendo PS 1.7.8, usate prestashop/prestashop:1.7.8. Se PS 8.1, usate prestashop/prestashop:8.1.
Passo 2: Esportare il database di produzione
Collegatevi via SSH al vostro server di produzione ed eseguite il dump del database:
# 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 ./
Passo 3: Importare nello 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
Passo 4: Copiare i file di produzione
# 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'
Passo 5: Aggiornare la configurazione
Dopo l’importazione, aggiornate l’URL del negozio nel database per puntare al vostro dominio di 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');
"
Quindi aggiornate html/app/config/parameters.php con le credenziali del database di staging (corrispondenti al vostro docker-compose.yml).
Infine, svuotate la cache:
docker exec staging-shop rm -rf /var/www/html/var/cache/*
Opzione 2: Sottodominio su hosting condiviso
Se vi trovate su un hosting condiviso (cPanel, Plesk, DirectAdmin), Docker non è disponibile. Dovrete invece creare un sottodominio con la propria document root e il proprio database.
Passo 1: Creare il sottodominio
Nel vostro pannello di hosting:
- Andate su Sottodomini o Domini
- Create
staging.yourshop.com - Puntatelo a una nuova directory, ad es.
/home/user/staging.yourshop.com
Passo 2: Creare un nuovo database
Nel vostro pannello di hosting:
- Andate su Database MySQL
- Create un nuovo database (ad es.
user_staging) - Create o assegnate un utente con tutti i privilegi su quel database
Passo 3: Copiare i file
Usate SSH o il File Manager per copiare l’intera installazione PrestaShop nella directory di staging. Se avete accesso SSH:
cp -r /home/user/public_html/* /home/user/staging.yourshop.com/
Passo 4: Esportare e importare il database
# Export production
mysqldump -u user -p production_db > ~/staging_import.sql
# Import to staging
mysql -u user -p staging_db < ~/staging_import.sql
Passo 5: Aggiornare la configurazione
Modificate app/config/parameters.php (oppure config/settings.inc.php su PS 1.6) per puntare al database di staging. Aggiornate gli URL del negozio nel database come mostrato nell’Opzione 1, Passo 5.
Opzione 3: Sviluppo locale con XAMPP/MAMP
Per test locali rapidi, XAMPP (Windows/Linux) o MAMP (macOS) funzionano bene. Il processo è simile all’hosting condiviso — create un database, copiate i file, importate il dump, aggiornate la configurazione. È il metodo più veloce per sviluppatori singoli che devono semplicemente testare un modulo rapidamente.
Lo svantaggio è che il vostro ambiente locale potrebbe differire dalla produzione (versione PHP diversa, versione MySQL diversa, estensioni mancanti), quindi eseguite sempre un test finale su uno staging basato su server prima di distribuire in produzione.
Passaggi essenziali post-configurazione
Disattivare le email in uscita
Questo è fondamentale. Il vostro sito di staging contiene una copia del database di produzione, il che significa che include gli indirizzi email reali dei clienti. Se attivate una conferma d’ordine o un reset password sullo staging, quelle email verranno inviate ai clienti reali.
Andate su Parametri avanzati → Email e scegliete una delle seguenti opzioni:
- Impostate il metodo di invio email su “Non inviare mai email” (il più sicuro), oppure
- Reindirizzate tutte le email in uscita a un indirizzo di test utilizzando uno strumento come Mailtrap
Disattivare i gateway di pagamento
Se il vostro sito di staging è collegato a processori di pagamento live (Stripe, PayPal), disattivateli immediatamente. Non volete addebiti accidentali su carte reali. Potete:
- Disattivare tutti i moduli di pagamento sullo staging, oppure
- Impostarli in modalità sandbox/test
Bloccare i motori di ricerca
Impedite che il vostro sito di staging venga indicizzato dai motori di ricerca — i contenuti duplicati sono un incubo per la SEO:
- Andate su Parametri del negozio → Traffico e SEO e disattivate la sitemap
- Aggiungete un file
robots.txtche blocchi tutti i crawler:User-agent: * / Disallow: / - Ancora meglio, limitate completamente l’accesso (vedi sotto)
Limitare l’accesso
Il vostro sito di staging non dovrebbe essere accessibile pubblicamente. Le opzioni sono:
- Whitelist IP tramite .htaccess: Consentite solo l’IP del vostro ufficio/casa
- HTTP Basic Auth: Aggiungete un prompt di password tramite
.htaccess - Modalità manutenzione PrestaShop: Attivatela e inserite il vostro IP nella whitelist in Back Office → Parametri del negozio → Generale → Manutenzione
Consigliamo la whitelist IP tramite .htaccess come metodo più affidabile — la modalità manutenzione può essere aggirata e l’autenticazione basic a volte entra in conflitto con i moduli che fanno uso intensivo di Ajax.
Mantenere lo staging sincronizzato
Un sito di staging è utile solo se riflette il vostro ambiente di produzione attuale. Aggiornatelo regolarmente:
Quando aggiornare
- Prima di qualsiasi aggiornamento importante (upgrade del core PrestaShop, aggiornamento di un modulo rilevante)
- Almeno mensilmente se state sviluppando attivamente
- Dopo modifiche significative al catalogo (nuove categorie, struttura dei prodotti modificata)
Script di aggiornamento rapido (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."
Errori comuni da evitare
Utilizzare le chiavi API di produzione sullo staging
Se il vostro negozio di produzione si connette a Stripe, PayPal, API di spedizione o qualsiasi servizio esterno — quelle chiavi API ora si trovano anche sul vostro sito di staging. Passate sempre alle chiavi sandbox/test sullo staging per evitare:
- Addebiti a clienti reali da ordini di test
- Invio di richieste di spedizione reali ai corrieri
- Raggiungimento dei limiti di frequenza delle API che influenzano il vostro negozio live
Dimenticare di disattivare i cron job
Se il vostro negozio di produzione ha dei cron job (promemoria carrello, sincronizzazione stock, generazione feed), quei cron potrebbero essere eseguiti anche sullo staging se gli URL sono simili. Disattivate o commentate tutte le voci cron relative allo staging.
Testare con il negozio live aperto in un’altra scheda
Se siete connessi sia al back office dello staging che a quello di produzione nello stesso browser, i cookie possono entrare in conflitto. Utilizzate un browser separato o una finestra in navigazione privata per lo staging.
Quando testare sullo staging e quando in produzione
| Sempre prima sullo staging | Sicuro da fare in produzione |
|---|---|
| Aggiornamenti del core PrestaShop | Modifiche ai contenuti (pagine CMS, descrizioni prodotto) |
| Installazione di moduli o aggiornamenti importanti | Variazioni di prezzo |
| Modifiche o upgrade del tema | Attivazione/disattivazione di moduli esistenti (se già testati) |
| Upgrade della versione PHP | Aggiunta di prodotti o categorie |
| Modifiche al codice personalizzato o override | Modifica delle tariffe di spedizione o delle regole fiscali |
| Migrazioni del database | Aggiornamenti delle traduzioni |
Riepilogo
Configurare un sito di staging richiede circa un’ora la prima volta. Aggiornarlo richiede 5 minuti una volta che avete uno script. L’investimento di tempo si ripaga la prima volta che intercettate una modifica critica prima che raggiunga i vostri clienti.
Docker è l’approccio migliore se disponete di un VPS o di un server dedicato. La clonazione tramite sottodominio funziona sull’hosting condiviso. In ogni caso — l’importante è che abbiate qualcosa tra le vostre modifiche al codice e i vostri clienti.
Se avete bisogno di aiuto per configurare un ambiente di staging specificamente per testare i nostri moduli, consultate il nostro programma Prova prima di acquistare — ogni modulo include una demo completamente funzionante di 30 giorni che potete installare sul vostro sito di staging per testarlo prima dell’acquisto.
More guides available
Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.