DataFirefly Staging Pro: volledige handleiding
Klonen, testen en naar de productie pushen: installatie, aanmaak van een staging, beschermingsopties, selectieve push en rollback voor PrestaShop 8 en 9.
Staging Pro maakt een volledige kopie van uw winkel (bestanden en database) in een beschermde submap van uw huidige hosting, zonder enige time-out dankzij de kopieermotor die in lots werkt. U test modules, thema’s en updates in alle veiligheid en stuurt uw wijzigingen daarna tabel per tabel terug naar de productie, met een automatische back-up en een rollback met één klik. Deze handleiding behandelt de installatie, het aanmaken van een staging, de beschermingsopties, de push naar de productie en de rollback.
Installatie
- Download het archief
dfstagingpro.zipvanuit uw DataFirefly-account. - PrestaShop-backoffice → Modules → Een module uploaden → verstuur het ZIP-bestand.
- Bij de installatie maakt de module de tabellen
df_staging_envendf_staging_logaan, registreert ze haar hooks en voegt ze het tabblad Geavanceerde instellingen → Staging Pro toe.
Compatibel met PrestaShop 8.0 tot 9.x. PHP moet in de hoofdmap van de winkel kunnen schrijven (aanmaak van de stagingsubmap) en de MySQL-gebruiker moet CREATE, DROP en RENAME TABLE mogen uitvoeren, wat bij een standaard PrestaShop-installatie het geval is. Geen Composer-afhankelijkheid.
Hoe de staging werkt
Een stagingomgeving wordt aangemaakt in een submap in de hoofdmap van uw winkel (bijvoorbeeld /staging-v2/) en gebruikt een eigen tabelvoorvoegsel (bijvoorbeeld dfs1_) in dezelfde database als de productie. U hebt dus geen tweede server, geen nieuwe MySQL-toegang en geen DNS-configuratie nodig.
De kopieermotor werkt in lots van enkele seconden en geeft daarna de controle terug, om vervolgens exact te hervatten waar hij gestopt was: bestanden worden gekopieerd via een persistente wachtrij, de database wordt gekloond in pakketten regels. Een winkel van meerdere gigabytes kloont zo zonder fouten, ook op gedeelde hosting met een lage max_execution_time.
Een staging aanmaken
Ga naar Geavanceerde instellingen → Staging Pro en vervolgens naar het aanmaakpaneel:
- Voer een naam in (alleen kleine letters, cijfers en koppeltekens, bijvoorbeeld
v2). De URL van de staging wordtuw-winkel.nl/staging-v2/. - Kies uw beschermings- en kopieeropties (zie hieronder).
- Klik op Aanmaken. De voortgang wordt live getoond met een voortgangsbalk.
Aan het einde van het proces verschijnen de URL van de staging en, indien van toepassing, de htpasswd-gegevens in de rij van de omgeving.
Beschermings- en kopieeropties
- Beschermen met .htpasswd: voegt een HTTP-authenticatie toe (gebruiker
staging). Het wachtwoord kan worden ingevoerd of automatisch gegenereerd en wordt daarna op het dashboard getoond. - E-mails uitschakelen: schakelt de uitgaande e-mails van de staging uit (PS_MAIL_METHOD = 3). Geen risico om een echte klant aan te schrijven.
- Betalingen uitschakelen: schakelt de bekende betaalmodules op de staging uit en koppelt ze los van hun hooks.
- Statistieken overslaan: sluit de omvangrijke, niet-essentiële tabellen uit van de kopie (verbindingen, logboeken, verlaten winkelwagens) voor een veel snellere kopie.
- Zonder klantgegevens: maakt de tabellen voor klanten, klantadressen, bestellingen, winkelwagens, berichten, gasten, nieuwsbrief en AVG-logboeken leeg aan op de staging. De adressen van leveranciers, fabrikanten en magazijnen blijven behouden, net als de configuratietabellen van de bestellingen (statussen, berichtsjablonen, retourstatussen, winkelwagenregels). Zie de aparte sectie verderop.
- Symlink van de map img/: maakt een symbolische link naar de afbeeldingen in plaats van ze te kopiëren, wat enorm veel schijfruimte bespaart.
- Onderhoudsmodus: zet de staging in onderhoud met uw beheerders-IP op de witte lijst.
Vanaf de aanmaak krijgt elke staging automatisch een header X-Robots-Tag: noindex, een meta noindex en een blokkerende robots.txt, plus een oranje STAGING-banner in de frontend en in de backoffice. Uw testomgevingen lopen geen risico om door Google te worden geïndexeerd.
De symlinkoptie voor img/ deelt de afbeeldingenmap met de productie: een afbeelding wijzigen of verwijderen aan de stagingkant heeft ook gevolgen voor de live winkel. Voorbehouden aan tests die de afbeeldingen niet raken.
De kopieermotor in lots
Het aanmaken van een staging doorloopt meerdere stappen, elk met een tijdsbudget en automatische hervatting: voorbereiding, kopiëren van de bestanden, klonen van de database, herschrijven van de URL’s, configuratie en bescherming, en tot slot de afronding. De URL-herschrijving dekt shop_url, de configuratie (inclusief geserialiseerde en JSON-waarden, verwerkt zonder corruptie), en ook de CMS-inhoud, producten, categorieën, merken, leveranciers en winkels.
Als de pagina tijdens de aanmaak wordt gesloten, blijft de omgeving in uitvoering en hervat ze de kopie automatisch bij het heropenen van het dashboard, exact waar ze gestopt was.
Verversen, meerdere omgevingen en verwijderen
- Refresh: bouwt een bestaande staging opnieuw op vanuit de huidige staat van de productie (verwijderen en opnieuw aanmaken van de map en het voorvoegsel), met één klik.
- Meerdere omgevingen: maak zoveel stagings aan als nodig (v2, hotfix, moduletest), elk onafhankelijk.
- Verwijderen: verwijdert de map en de tabellen van een omgeving in gebudgetteerde stappen, zonder time-out.
Naar de productie pushen
Zodra uw tests zijn gevalideerd, stuurt de knop Push uw wijzigingen tabel per tabel terug naar de productie:
- Klik op Push in de rij van de omgeving: de lijst met tabellen verschijnt, met het aantal regels van elke tabel.
- Vink precies de tabellen aan die u wilt overzetten.
- Bevestig. Vóór elke vervanging wordt de overeenkomstige productietabel automatisch bewaard via een hernoeming met tijdstempel naar een voorvoegsel
dfbak{tijdstempel}_.
De URL’s worden tijdens de overdracht herschreven in de richting staging → productie. De kritieke tabellen (shop_url, configuration, shop, sessies en de tabellen van de module) zijn beschermd en kunnen nooit worden gepusht.
De push wijzigt uw productiewinkel. De automatische back-up beschermt de vervangen tabellen, maar controleer altijd uw selectie. Vermijd het pushen van bestel- of klantentabellen als de productie sinds de aanmaak van de staging verkopen is blijven registreren.
Rollback
De knop Rollback herstelt de productie vanuit de laatste push-back-up, met één klik. De module hernoemt de back-uptabellen dfbak…_ zodat ze hun oorspronkelijke plaats weer innemen.
Zodra een push gevalideerd en stabiel is, verwijdert u de oude tabellen dfbak* (via phpMyAdmin of een andere SQL-client) om ruimte in uw database vrij te maken.
Beveiligingen en logboek
- Alle acties worden geblokkeerd als de huidige winkel zelf een staging is, om cascade-bewerkingen te vermijden.
- Een gedetailleerd logboek is per omgeving beschikbaar via de knop Logs.
- Omdat een
robots.txtin een submap niet door de zoekmachines wordt gerespecteerd, berust de echte bescherming tegen indexering op de headerX-Robots-Tagen de metanoindex; de optie.htpasswdblijft de veiligste bescherming.
Compatibiliteit en technische opmerkingen
- PrestaShop 8.0 tot 9.x, compatibel met gedeelde hosting en meertalig.
- Legacy-beheercontroller (geen Symfony-controller) voor de compatibiliteit PS8/PS9.
- AJAX-endpoints in de backoffice via het vierde argument van
getAdminLink(); JSON-weergave via een eigen methode. - Staging = submap in de hoofdmap plus tabelvoorvoegsel
dfs{id}_in dezelfde MySQL-database. - Push-back-ups met tijdstempel onder het voorvoegsel
dfbak{YmdHis}_, op te ruimen na validatie.
Staging zonder klantgegevens
De optie Zonder klantgegevens, beschikbaar sinds versie 1.1.0, maakt de staging aan zonder enig persoonsgegeven. De betrokken tabellen worden met hun exacte structuur aangemaakt, maar blijven leeg. Dit is de aanbevolen keuze wanneer u een staging aan een externe dienstverlener toevertrouwt, voor een thema- of moduletest die het bestelproces niet raakt, en om de AVG-oppervlakte van uw testomgevingen te beperken.
Wat niet wordt gekopieerd
- Klanten, klantengroepen, discussies en berichten van de klantenservice, klantsessies, gasten en verbindingsstatistieken.
- Bestellingen en de hele bijbehorende familie: details, historiek, facturen, betalingen, vervoerders, toegepaste winkelwagenregels, creditnota’s en retours.
- Winkelwagens, producten in de winkelwagens, verlanglijsten, berichten, inschrijvingen op de nieuwsbrief, AVG-logboeken en maillogboeken.
- Adressen van klanten: de tabel
addresswordt met een filter gekopieerd, alleen de regels die aan een klant hangen vallen weg.
Wat behouden blijft
- Adressen van leveranciers, fabrikanten, magazijnen en winkels.
- Configuratietabellen van de bestellingen: bestelstatussen en hun vertalingen, berichtsjablonen, retourstatussen, types creditnota’s.
- Winkelwagenregels, kortingsbonnen, vervoerders, belastingen en de volledige catalogus.
- Medewerkers van de backoffice: u meldt zich op de staging aan met uw gebruikelijke gegevens.
Op een staging die met deze optie is aangemaakt, worden de klant- en besteltabellen uit de pushlijst gehaald en door de server geweigerd als het verzoek wordt vervalst. Zonder die beveiliging zou het pushen van een lege tabel de overeenkomstige productiegegevens wissen.
Om het bestelproces op zo’n staging te testen, plaatst u een bestelling als gast of maakt u een testaccount aan: de tabellen zijn leeg maar volledig functioneel.
HTTP-authenticatie en cPanel-/LiteSpeed-hostings
Sinds versie 1.0.1 wordt het bestand .htpasswd gegenereerd in het formaat APR1-MD5 (dat van het commando htpasswd -m), dat Apache, LiteSpeed en nginx alle drie lezen. Versie 1.0.0 gebruikte bcrypt, dat LiteSpeed (zeer gangbaar achter cPanel) niet kan lezen: de staging antwoordde dan 404 op al zijn pagina’s.
Het beschermingsblok voegt ook een inline 401-foutpagina toe. Op cPanel wordt de fout 401 globaal doorgestuurd naar /401.shtml, een pagina die in PrestaShop niet bestaat: het subverzoek belandt in de dispatcher van de productie en geeft diens 404-pagina terug, zodat de browser het aanmeldvenster nooit toont. De inline pagina omzeilt die doorsturing.
Tot slot wordt de regel ErrorDocument 404 van de gekopieerde .htaccess herschreven naar de stagingsubmap: een fout op de staging toont de 404-pagina van de staging, niet die van de productie.
Zelfcontrole bij de aanmaak
Aan het einde van de configuratie stuurt de module een HEAD-verzoek naar de robots.txt van de staging, met de gegevens als de bescherming actief is, en daarna zonder gegevens om te controleren of de server met 401 antwoordt. Het resultaat wordt in het logboek van de omgeving vastgelegd:
- 200 met gegevens en 401 zonder: alles in orde.
- De server weigert het authenticatieblok: de module verwijdert het blok en de
.htpasswd, schakelt de optie uit en toont “Ready with warning” in de rij van de omgeving. De staging is dan zonder wachtwoord bereikbaar; schakel de onderhoudsmodus in. - Code 0: de server kan zichzelf niet aanroepen (uitgaande verzoeken geblokkeerd). Open de URL van de staging handmatig.
Controle vanuit een terminal: curl -sI https://uw-winkel.nl/staging-v2/robots.txt moet 401 antwoorden, en hetzelfde commando met -u staging:wachtwoord moet 200 antwoorden.
FAQ en probleemoplossing
Werkt de module op gedeelde hosting? Ja. De kopieermotor in lots met automatische hervatting vermijdt elke time-out, ongeacht de max_execution_time van de server.
De aanmaak is onderbroken, wat nu? Open het dashboard van Staging Pro opnieuw: de omgeving hervat de kopie automatisch waar ze gestopt was.
Kan de staging e-mails naar mijn klanten sturen? Niet als de optie “E-mails uitschakelen” actief is (aanbevolen): de uitgaande e-mails zijn op de staging uitgeschakeld.
Hoe maak ik een push ongedaan? Gebruik de knop Rollback, die de laatste automatische back-up herstelt. Ruim daarna de verouderde tabellen dfbak* op.
Kan ik meerdere stagings tegelijk aanmaken? Ja, het aantal omgevingen is onbeperkt en elke omgeving is volledig onafhankelijk.
De staging antwoordt overal 404, of het aanmeldvenster verschijnt niet? Dat is het symptoom dat in 1.0.1 is verholpen op cPanel-/LiteSpeed-hostings. Werk de module bij en start een Refresh van de omgeving; zie de sectie “HTTP-authenticatie en cPanel-/LiteSpeed-hostings” hierboven.
Kan ik een staging aanmaken zonder de gegevens van mijn klanten? Ja, vink bij de aanmaak “Zonder klantgegevens” aan. Zie de sectie “Staging zonder klantgegevens” hierboven.
Versiegeschiedenis
1.1.0 (4 september 2026)
- Nieuwe optie “Zonder klantgegevens”: klanten, klantadressen, bestellingen, winkelwagens, berichten, gasten, nieuwsbrief en AVG-logboeken worden leeg aangemaakt op de staging.
- De adressen van leveranciers, fabrikanten en magazijnen blijven behouden, net als de configuratietabellen van de bestellingen.
- Pushbeveiliging: die tabellen worden uit de lijst gehaald en aan de serverkant geweigerd op een staging die zonder klantgegevens is aangemaakt.
1.0.1 (3 september 2026)
- htpasswd-bescherming: hash gegenereerd in APR1-MD5, compatibel met Apache en LiteSpeed (bcrypt werd op sommige cPanel-hostings geweigerd, waardoor de staging onbereikbaar was).
- HTTP-aanmeldvenster: inline 401-pagina voor hostings die 401-fouten doorsturen naar een onbestaande pagina.
- Regel
ErrorDocumentvan de.htaccessherschreven naar de stagingsubmap. - Zelfcontrole na de aanmaak: HTTP-controle van de staging, automatische verwijdering van de bescherming als de server ze weigert, en een waarschuwing in het dashboard.
1.0.0 (11 juni 2026)
Eerste publieke versie.