
Migration de serveur PrestaShop sans interruption de service : le protocole éprouvé
Découvrez le protocole complet pour migrer votre boutique PrestaShop sans perte de commande : synchronisation rsync, dump ACID, TTL DNS et recette technique.
Les prérequis fondamentaux : audit de l'infrastructure cible et abaissement du TTL DNS
La migration d'un serveur e-commerce en production représente l'un des exercices les plus critiques de l'ingénierie web. Une mauvaise anticipation de la propagation DNS ou une synchronisation approximative de la base de données conduit invariablement à deux anomalies graves : la perte sèche de commandes passées pendant le transfert et l'apparition de paniers fantômes, où le client est débité par sa passerelle de paiement sans que la commande n'existe dans le back-office. Pour garantir une transition sans aucune friction, la préparation de l'environnement d'accueil et la maîtrise du routage réseau doivent précéder toute manipulation de données.
Le premier levier opérationnel réside dans la gestion préventive de la durée de vie des enregistrements DNS (Time To Live). Par défaut, les résolveurs DNS conservent les enregistrements A et AAAA en cache pendant 24 à 48 heures (valeurs de TTL courantes de 86400 ou 172800 secondes). Si vous modifiez l'adresse IP de votre boutique sans avoir préalablement abaissé ce délai, les flux d'acheteurs continueront de se répartir de manière aléatoire entre l'ancien et le nouveau serveur pendant plusieurs jours. Voici la checklist technique des prérequis indispensables à exécuter en amont :
- Abaissement préventif du TTL DNS à 300 secondes : Cette modification doit être enregistrée chez votre registrar 48 à 72 heures avant la date de la migration. Ce délai garantit que l'ensemble des résolveurs intermédiaires d'Internet purgent leur ancien cache et interrogent désormais votre zone DNS toutes les cinq minutes.
- Parité des environnements d'exécution : Le serveur cible doit présenter une pile logicielle strictement compatible avec votre version de PrestaShop. Contrôlez la parité de PHP (version mineure exacte, directives
memory_limit = 512M,max_execution_time = 300, modulesphp-intl,php-gd,php-curl,php-zip,php-opcache) ainsi que la version de MySQL ou MariaDB. - Déploiement reproductible de la pile d'accueil : Pour éliminer les disparités de configuration système entre machines, appuyez-vous sur une configuration Docker Compose pour PrestaShop en production ou un script d'automatisation bare-metal éprouvé, garantissant la présence isolée des conteneurs Nginx, PHP-FPM et de la base de données.
- Nettoyage préventif des tables de statistiques : Sur une boutique active depuis plusieurs années, les tables de journalisation (
ps_connections,ps_connections_source,ps_connections_page,ps_guest) s'accumulent souvent jusqu'à représenter 80 % du volume total de la base. Tronquer ou purger ces tables non transactionnelles avant le transfert permet de diviser la taille du dump SQL par dix et d'accélérer l'import d'autant.
Première synchronisation des fichiers à chaud : le transfert rsync des médias sans coupure
Sur une boutique PrestaShop comptant plusieurs milliers de références, les répertoires de médias (notamment /img/p pour les produits, /img/c pour les catégories, ainsi que les dossiers /download et /upload) atteignent fréquemment des volumes de 30 à 150 Go. Tenter de transférer ce volume de fichiers pendant une fenêtre de maintenance entraînerait une interruption de service intolérable de plusieurs heures. Le protocole d'artisan-ingénieur impose donc une synchronisation différentielle en deux passes via l'utilitaire rsync.
La première passe s'effectue à chaud, en tâche de fond, pendant que la boutique continue de servir le trafic public et d'enregistrer des ventes. Cette passe transfère 99 % des données statiques sans impacter les performances de l'application hôte. La commande doit être exécutée directement depuis le serveur cible en exploitant une liaison SSH sécurisée :
rsync -avzP --numeric-ids --delete \
--exclude='var/cache/*' \
--exclude='var/logs/*' \
--exclude='app/cache/*' \
--exclude='img/tmp/*' \
root@ip_ancien_serveur:/var/www/prestashop/ /var/www/prestashop/
Chaque paramètre de cette commande répond à un impératif d'intégrité système :
-a(archive) : préserve récursivement les permissions de fichiers, les propriétaires, les groupes et les horodatages d'origine.-vet-P: fournissent un affichage verbeux de la progression et autorisent la reprise des transferts partiels en cas d'interruption réseau imprévue.-z: applique une compression des flux de données à la volée, soulageant la bande passante sur les fichiers texte et scripts.--numeric-ids: empêche rsync de tenter une résolution textuelle des utilisateurs et groupes système entre les deux systèmes d'exploitation, évitant ainsi de corrompre les droits de l'utilisateur web (généralementwww-data).--exclude: isole les répertoires temporaires et les caches applicatifs Symfony/PrestaShop qui ne doivent en aucun cas être dupliqués sur le serveur d'accueil.
Lorsque cette première synchronisation s'achève, l'écrasante majorité de vos fichiers réside déjà sur le nouveau serveur. Lors de la phase de bascule finale, une seconde commande rsync identique sera lancée : elle ne traitera que le différentiel résiduel généré depuis la première passe, s'exécutant alors en moins de soixante secondes.
Le gel strict des écritures : isoler la base de données sans perdre de commandes
Le basculement effectif d'une infrastructure e-commerce exige une synchronisation chirurgicale de la base de données. Entre l'instant où le dump SQL est initié sur le serveur source et le moment où le trafic réseau commence à atteindre le nouveau serveur, aucune écriture ne doit survenir sur la base d'origine. Si un internaute finalise un paiement ou modifie son panier pendant cet intervalle sur l'ancienne base, sa transaction deviendra orpheline et n'apparaîtra jamais sur le serveur cible. Pour rendre ce risque techniquement impossible, nous déclenchons un gel strict et délimité des écritures.
Ce gel ne consiste pas à couper brutalement les services système, ce qui afficherait des erreurs 502 ou 500 destructrices pour votre image de marque et votre référencement naturel. La méthode professionnelle combine la mise en maintenance applicative de PrestaShop et une barrière Nginx conditionnelle :
- Activation du mode maintenance natif : Dans la table
ps_configuration, le champPS_SHOP_ENABLEest basculé à0, tandis que la directivePS_MAINTENANCE_IPintègre exclusivement l'adresse IP fixe de votre poste d'ingénierie. Les acheteurs sont accueillis par une page d'attente soignée, tandis que votre session conserve un accès transparent au front-office et au back-office. - Isolement Nginx avec entête HTTP 503 : Au niveau du reverse proxy, une règle intercepte l'ensemble du trafic non autorisé et renvoie un code de statut HTTP
503 Service Temporarily Unavailableassorti de l'entêteRetry-After: 300. Ce protocole signale explicitement aux robots des moteurs de recherche que l'indisponibilité est passagère et programmée, protégeant ainsi l'indexation de vos pages. - Temporisation des webhooks bancaires : Les passerelles de paiement modernes (Stripe, Mollie, SystemPay) intègrent des boucles de réessai automatique en cas de réponse HTTP non-200. En bloquant proprement les accès externes sans rompre les connexions SSL, vous contraignez ces services à conserver leurs notifications de paiement en file d'attente pour les rejouer quelques minutes plus tard sur le nouveau serveur.
« Sur une boutique e-commerce en production, l'illusion du "zéro seconde d'interruption absolue" conduit presque toujours à des corruptions silencieuses de données. Le véritable devoir d'un ingénieur n'est pas de prétendre que la base reste vivante pendant un changement d'infrastructure, mais d'orchestrer un gel chirurgical des écritures inférieur à cent vingt secondes. Durant cet intervalle maîtrisé, aucun panier fantôme ne peut naître, aucune transaction bancaire ne peut devenir orpheline, et l'intégrité transactionnelle demeure absolue. » — Alexandre Carette
Dump SQL transactionnel et injection cohérente sur la base de données cible
Dès que le gel des écritures est actif et vérifié dans les journaux d'accès, l'exportation de la base de données relationnelle doit être exécutée immédiatement. L'utilisation d'outils graphiques d'administration web comme phpMyAdmin est rigoureusement proscrite en environnement professionnel : ils s'exposent aux plafonds de mémoire de PHP, tronquent silencieusement les tables volumineuses et ne garantissent aucun atomisme lors de l'extraction des données. Seule la ligne de commande permet de préserver l'intégrité ACID du moteur de stockage InnoDB.
Pour extraire une photographie parfaite de votre catalogue, de vos clients et de vos commandes, la commande mysqldump doit être configurée avec des paramètres précis documentés dans la documentation officielle de MySQL sur mysqldump :
mysqldump -u utilisateur_db -p --single-transaction --quick \
--hex-blob --routines --triggers --max-allowed-packet=512M \
nom_de_base | gzip -c > /tmp/prestashop_production.sql.gz
Le paramètre --single-transaction est l'élément clé de cette opération. Il initie une transaction globale au niveau du moteur InnoDB et active le contrôle de concurrence multi-version (MVCC). Cela permet de lire l'état exact des tables au moment précis du déclenchement sans poser de verrous bloquants sur la lecture des tables. Le commutateur --quick force l'écriture ligne par ligne vers la sortie standard plutôt que de saturer la mémoire vive du serveur en tentant de charger des millions de lignes en mémoire. Enfin, --hex-blob convertit les champs binaires en notation hexadécimale, écartant tout risque de corruption d'encodage lors de la migration entre deux jeux de caractères (par exemple entre latin1 et utf8mb4).
Le tableau comparatif suivant synthétise les méthodes d'exportation et leurs impacts sur l'exploitation d'une boutique PrestaShop :
| Méthode d'exportation SQL | Cohérence transactionnelle (ACID) | Impact sur la mémoire vive serveur | Risque de corruption des paniers | Verdict opérationnel |
|---|---|---|---|---|
| Interface graphique (phpMyAdmin / Adminer) | Nulle (transactions partielles non coordonnées) | Critique (dépassement fréquent de memory_limit) | Très élevé (timeouts silencieux sur grosses tables) | À proscrire formellement en production |
| mysqldump standard sans argument d'isolation | Moyenne (verrouillage lourd via LOCK TABLES) | Faible (flux de données séquentiel) | Modéré (blocage possible des sessions actives) | Insuffisant pour les catalogues à fort trafic |
| mysqldump transactionnel (--single-transaction --quick) | Absolue (snapshot MVCC cohérent pour InnoDB) | Minimale (streaming continu sans saturation RAM) | Nul (instantané figé sans altération des clés) | Protocole d'ingénierie validé et recommandé |
Une fois le fichier archive transféré sur le serveur d'accueil par un canal SSH sécurisé (scp ou rsync), son injection s'opère directement dans le moteur de base de données cible après avoir temporairement désactivé la vérification des contraintes de clés étrangères pour maximiser la vitesse d'écriture :
gunzip < /tmp/prestashop_production.sql.gz | mysql -u utilisateur_cible -p \
--init-command="SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO'; SET foreign_key_checks=0; SET unique_checks=0;" \
nom_base_cible
Recette technique et validation d'intégrité sous fichier hosts avant ouverture
L'erreur la plus fréquente des équipes inexpérimentées consiste à modifier les enregistrements DNS immédiatement après l'import de la base de données, découvrant les dysfonctionnements directement sous le regard des clients. Un protocole rigoureux impose une phase de recette exhaustive et totalement isolée sur le serveur cible. Pour inspecter la boutique sur son nouvel hébergement sans modifier la résolution publique du nom de domaine, nous configurons le fichier hosts de notre machine d'analyse locale.
Sur votre poste de travail (sous /etc/hosts sur Linux et macOS, ou sous C:\Windows\System32\drivers\etc\hosts sur Windows), ajoutez temporairement la ligne reliant l'adresse IP publique de votre nouveau serveur au nom de domaine de production :
51.83.75.70 votreboutique.com www.votreboutique.com
Dès cet enregistrement sauvegardé, votre navigateur communique exclusivement avec la nouvelle infrastructure. Vous pouvez alors dérouler le protocole de vérification pas à pas :
- Ajustement du fichier de configuration : Dans le fichier
app/config/parameters.php(ouconfig/settings.inc.phpsur les architectures PrestaShop 1.6), mettez à jour les identifiants de connexion MySQL (hôte, utilisateur, mot de passe). Vérifiez impérativement que la clécookie_key(ou_COOKIE_KEY_) demeure strictement identique à celle de l'ancien serveur : si cette chaîne est altérée, l'ensemble des mots de passe de vos clients et les sessions d'administration deviendront immédiatement invalides. - Purge intégrale des caches système : Supprimez manuellement les répertoires de compilation pour forcer PrestaShop à recalculer son conteneur d'injection de dépendances avec les chemins de la nouvelle machine :
rm -rf var/cache/prod/* var/cache/dev/*. - Contrôle du certificat SSL/TLS : Vérifiez que le serveur web Nginx ou Apache délivre un certificat HTTPS valide pour le domaine de production, sans alerte de sécurité ni erreur de chaîne de certification intermédiaire.
- Parcours de navigation sur le catalogue : Testez l'affichage des catégories dynamiques et la navigation à facettes. Par exemple, explorez le catalogue de vêtements pour hommes ainsi que le rayon de papeterie et d'accessoires afin de valider le bon fonctionnement du moteur de recherche interne, du module de filtres et de la mise en cache Redis ou Memcached.
- Simulation d'une commande complète de bout en bout : Rendez-vous sur la fiche produit du t-shirt imprimé colibri, ajoutez l'article au panier, appliquez un bon de réduction, connectez-vous avec un compte client de test, sélectionnez un transporteur pour vérifier le calcul des frais de port et franchissez chaque étape du tunnel de commande jusqu'à l'interface de paiement en mode sandbox.
- Audit du back-office et de la génération documentaire : Connectez-vous au panneau d'administration, contrôlez la bonne visibilité des dernières commandes réelles, éditez une fiche produit de test et générez une facture au format PDF afin de certifier que les bibliothèques graphiques et polices système sont correctement interprétées par le moteur PHP.
Bascule DNS finale, surveillance des requêtes résiduelles et décommissionnement
Lorsque la recette sous fichier hosts a validé l'intégralité des parcours fonctionnels et d'administration, la bascule publique peut être exécutée en toute sérénité. Ayant préalablement abaissé le TTL de votre zone DNS à 300 secondes, la propagation mondiale des nouveaux enregistrements s'effectuera de façon quasi instantanée sur l'ensemble des réseaux des fournisseurs d'accès à Internet.
L'opération de basculement suit une séquence chronologique précise qui garantit l'absence totale de rupture de continuité de service :
- Modification de la zone DNS : Connectez-vous à la console d'administration de votre registrar et modifiez les enregistrements de type A (et AAAA pour l'IPv6) de votre nom de domaine principal et de ses sous-domaines pour pointer vers l'adresse IP du nouveau serveur.
- Exécution de la seconde passe rsync : Lancez la synchronisation différentielle des fichiers médias pour transférer les quelques images de produits ou documents créés depuis la première passe. Cette commande s'exécute en quelques secondes seulement.
- Levée du mode maintenance sur le nouveau serveur : Dans la base de données du nouveau serveur, remettez
PS_SHOP_ENABLEà1pour accueillir immédiatement les internautes dont les résolveurs DNS pointent déjà sur la nouvelle IP. - Surveillance active des journaux d'accès résiduels : Sur l'ancien serveur, surveillez les journaux Nginx en temps réel (
tail -f /var/log/nginx/access.log). Vous constaterez le tarissement progressif des requêtes au fil des minutes. Si des requêtes résiduelles continuent d'arriver depuis des résolveurs FAI ne respectant pas les normes de TTL, vous pouvez configurer un proxy inverse temporaire sur l'ancien serveur qui redirige de manière transparente le trafic entrant vers l'IP du nouveau serveur via une directiveproxy_pass. - Rétablissement du TTL nominal : Après 48 heures de fonctionnement stable sur le nouveau serveur, remontez le TTL de vos enregistrements DNS à sa valeur standard (3600 ou 86400 secondes) pour soulager vos serveurs de noms et accélérer les temps de réponse de résolution DNS pour vos clients réguliers.
Le décommissionnement de l'ancien serveur ne doit intervenir qu'au terme d'une période d'observation minimale de sept à quatorze jours. Avant d'éteindre définitivement la machine source, effectuez une archive complète de son système de fichiers et une copie de sécurité de sa base de données, stockées sur un espace de stockage froid chiffré indépendant.
Synthèse du protocole et audit d'architecture de votre boutique PrestaShop
La réussite d'une migration de serveur PrestaShop sans interruption de service repose exclusivement sur l'application méthodique de principes d'architecture informatique stricts. L'absence de perte de données et l'éradication des paniers fantômes ne sont pas le fruit du hasard, mais le résultat direct d'un processus éprouvé : anticipation du TTL DNS, pré-synchronisation différentielle des gigaoctets de médias, gel chirurgical des écritures applicatives, export SQL transactionnel conforme aux exigences ACID d'InnoDB, et recette étanche sous fichier hosts.
En abordant votre boutique en ligne avec la rigueur d'un artisan-ingénieur des systèmes, vous transformez une opération réputée périlleuse en une simple routine de maintenance parfaitement maîtrisée, protégeant à la fois votre chiffre d'affaires immédiat et votre référencement organique à long terme.
Si vous exploitez une boutique PrestaShop à fort volume de transactions et que vous envisagez une migration vers un nouvel hébergement, un serveur dédié ou une infrastructure conteneurisée, l'improvisation n'a pas sa place. Pour anticiper chaque goulot d'étranglement, évaluer vos temps de réponse serveur et sécuriser votre stack technique avant toute manipulation critique, je vous invite à demander votre Note de Mesure personnalisée. Réalisée sur-mesure par Alexandre Carette (#4467), cette analyse d'ingénieur constitue un diagnostic technique complet de votre boutique : performance réelle Core Web Vitals, conformité SEO technique, niveau de sécurité de l'environnement d'exécution et robustesse de l'architecture logicielle.
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Une question ?
Contactez-nous directement.
Discussion
Nos conseils liés à DevOps
DevOpsChanger de domaine PrestaShop : checklist SEO et 301
Transférez le domaine de votre boutique PrestaShop sans perte SEO : requêtes SQL, configuration Nginx 301, Search Console et monitoring des 404 sur 90 jours.
DevOpsSauvegarde et PRA PrestaShop : reprise en moins de 30 min
Protégez votre boutique PrestaShop avec un vrai PRA : dumps chiffrés hors-site, Point-in-Time Recovery via binlogs MySQL et RTO inférieur à 30 minutes.
DevOpsVPS OVH PrestaShop : Nginx et PHP-FPM en production
Pourquoi le mutualisé sature dès 50 commandes/jour et comment dimensionner un VPS NVMe OVH : Nginx, PHP-FPM, OPcache et MariaDB expliqués par un ingénieur PrestaShop.
