DataFirefly Staging Pro — Guida completa
Clonare, testare e inviare in produzione: installazione, creazione di uno staging, opzioni di protezione, push selettivo e rollback per PrestaShop 8 e 9.
Staging Pro crea una copia completa del tuo negozio (file + database) in una sottocartella protetta del tuo hosting attuale, senza alcun timeout grazie al suo motore di copia a lotti. Testi moduli, temi e aggiornamenti in totale sicurezza, poi riporti le tue modifiche in produzione tabella per tabella, con backup automatico e rollback con un clic. Questa guida copre l’installazione, la creazione di uno staging, le opzioni di protezione, il push in produzione e il rollback.
Installazione
- Scarica l’archivio
dfstagingpro.zipdal tuo account DataFirefly. - Back office PrestaShop → Moduli → Carica un modulo → invia lo ZIP.
- All’installazione, il modulo crea le sue tabelle
df_staging_envedf_staging_log, registra i suoi hook e aggiunge la scheda Parametri avanzati → Staging Pro.
Compatibile con PrestaShop 8.0 a 9.x. PHP deve poter scrivere nella radice del negozio (creazione della sottocartella di staging) e l’utente MySQL deve poter eseguire CREATE, DROP e RENAME TABLE — cosa abituale in un’installazione PrestaShop standard. Nessuna dipendenza Composer.
Come funziona lo staging
Un ambiente di staging viene creato in una sottocartella nella radice del tuo negozio (ad esempio /staging-v2/) e usa un prefisso di tabelle dedicato (ad esempio dfs1_) nello stesso database della produzione. Non hai quindi bisogno né di un secondo server, né di un nuovo accesso MySQL, né di una configurazione DNS.
Il motore di copia lavora a lotti di pochi secondi e poi restituisce il controllo, riprendendo esattamente da dove si era fermato: copia dei file tramite una coda persistente, clonazione del database a pacchetti di righe. Un negozio di diversi gigabyte si clona senza errori, anche su hosting condiviso con un max_execution_time basso.
Creare uno staging
Vai su Parametri avanzati → Staging Pro e, nel pannello di creazione:
- Inserisci un nome (solo minuscole, cifre e trattini, ad esempio
v2). L’URL dello staging saràtuo-negozio.com/staging-v2/. - Scegli le tue opzioni di protezione e copia (vedi sotto).
- Fai clic su Crea. L’avanzamento è mostrato in tempo reale con una barra di avanzamento.
Al termine del processo, l’URL dello staging e, se applicabile, le credenziali htpasswd appaiono sulla riga dell’ambiente.
Opzioni di protezione e copia
- Proteggi con .htpasswd: aggiunge un’autenticazione HTTP (utente
staging). La password può essere inserita o generata automaticamente, poi mostrata sul pannello. - Disattiva le e-mail: blocca le e-mail in uscita dello staging (PS_MAIL_METHOD = 3). Nessun rischio di scrivere a un cliente reale.
- Disattiva i pagamenti: disattiva e sgancia dagli hook i moduli di pagamento noti sullo staging.
- Salta le statistiche: esclude dalla copia le tabelle grandi e non essenziali (connessioni, log, carrelli abbandonati…) per una copia molto più rapida.
- Symlink della cartella img/: crea un collegamento simbolico alle immagini invece di copiarle, per un enorme risparmio di spazio su disco.
- Modalità manutenzione: mette lo staging in manutenzione con il tuo IP di amministrazione in whitelist.
Fin dalla creazione, ogni staging riceve automaticamente un header X-Robots-Tag: noindex, un meta noindex e un robots.txt che blocca, oltre a un banner arancione STAGING sul front office e nel back office. I tuoi ambienti di test non rischiano di essere indicizzati da Google.
L’opzione symlink di img/ condivide la cartella delle immagini con la produzione: modificare o eliminare un’immagine sullo staging influisce anche sul negozio online. Riservala ai test che non toccano le immagini.
Il motore di copia a lotti
La creazione di uno staging concatena diverse fasi, ciascuna con budget di tempo e ripresa automatica: preparazione, copia dei file, clonazione del database, riscrittura degli URL, configurazione e protezione, e finalizzazione. La riscrittura degli URL copre shop_url, la configurazione (inclusi i valori serializzati e JSON, gestiti senza corruzione), oltre ai contenuti CMS, prodotti, categorie, marche, fornitori e negozi.
Se la pagina viene chiusa durante la creazione, l’ambiente resta in corso e riprende automaticamente la copia alla riapertura del pannello, esattamente da dove si era fermato.
Refresh, multi-ambiente ed eliminazione
- Refresh: ricostruisce uno staging esistente dallo stato attuale della produzione (elimina e poi ricrea la cartella e il prefisso), con un clic.
- Multi-ambiente: crea tutti gli staging di cui hai bisogno (v2, hotfix, test di moduli…), ognuno indipendente.
- Eliminazione: elimina la cartella e le tabelle di un ambiente in modo budgetizzato, senza timeout.
Push in produzione
Una volta validati i test, il pulsante Push permette di riportare le tue modifiche in produzione, tabella per tabella:
- Fai clic su Push sulla riga dell’ambiente: appare l’elenco delle tabelle, con il numero di righe di ciascuna.
- Seleziona esattamente le tabelle da trasferire.
- Conferma. Prima di ogni sostituzione, la tabella di produzione corrispondente viene salvata automaticamente tramite una rinomina con timestamp verso un prefisso
dfbak{timestamp}_.
Gli URL vengono riscritti nel verso staging → produzione durante il trasferimento. Le tabelle critiche (shop_url, configuration, shop, sessioni e tabelle del modulo) sono protette e non possono mai essere inviate.
Il push modifica il tuo negozio in produzione. Il backup automatico protegge le tabelle sostituite, ma verifica sempre la tua selezione. Evita di inviare tabelle di ordini o di clienti se la produzione ha continuato a registrare vendite dalla creazione dello staging.
Rollback
Il pulsante Rollback ripristina la produzione dall’ultimo backup del push, con un clic. Il modulo rinomina le tabelle di backup dfbak…_ per riportarle al loro posto originale.
Una volta validato e stabile un push, elimina le vecchie tabelle dfbak* (tramite phpMyAdmin o qualsiasi client SQL) per liberare spazio nel tuo database.
Protezioni e registro
- Tutte le azioni sono bloccate se il negozio attuale è esso stesso uno staging, per evitare operazioni a cascata.
- Un registro dettagliato è disponibile per ambiente tramite il pulsante Logs.
- Poiché un
robots.txtin una sottocartella non viene rispettato dai motori, la vera protezione anti-indicizzazione si basa sull’headerX-Robots-Tage sul metanoindex; l’opzione.htpasswdresta la protezione più sicura.
Compatibilità e note tecniche
- PrestaShop 8.0 a 9.x, compatibile con hosting condiviso e multilingua.
- Controller di amministrazione legacy (nessun controller Symfony) per la compatibilità PS8/PS9.
- Endpoint AJAX del back office tramite il 4° argomento di
getAdminLink(); rendering JSON tramite un metodo dedicato. - Staging = sottocartella nella radice + prefisso di tabelle
dfs{id}_nello stesso database MySQL. - Backup del push con timestamp sotto il prefisso
dfbak{YmdHis}_, da eliminare dopo la validazione.
FAQ e risoluzione dei problemi
Il modulo funziona su un hosting condiviso? Sì. Il motore di copia a lotti con ripresa automatica evita qualsiasi timeout, qualunque sia il max_execution_time del server.
La creazione si è interrotta, cosa faccio? Riapri il pannello di Staging Pro: l’ambiente riprende automaticamente la copia da dove si era fermato.
Lo staging può inviare e-mail ai miei clienti? No se l’opzione «Disattiva le e-mail» è attiva (consigliato): le e-mail in uscita sono bloccate sullo staging.
Dopo un push, come lo annullo? Usa il pulsante Rollback, che ripristina l’ultimo backup automatico. Poi ricordati di eliminare le tabelle dfbak* obsolete.
Posso creare più staging contemporaneamente? Sì, il numero di ambienti è illimitato e ognuno è totalmente indipendente.