D-OPEN

Comment patcher un site Drupal en production sans downtime en 7 etapes — guide DevOps complet

Sophie Marchand

Sophie Marchand

Ingenieure DevOps et infrastructure open source · 25 mai 2026 · 12 min de lecture

TL;DR

  • Methode blue/green : deployer le patch sur un environnement miroir, valider, puis basculer le trafic en moins de 30 secondes. Zero interruption visible pour les utilisateurs.
  • 7 etapes reproductibles : preparation, snapshot, Composer update, migrations DB, validation, basculement, monitoring. Chaque etape est reversible.
  • Temps total : 45 min a 2h selon la complexite du site. Applicable a Drupal 10.x et 11.x, sur hebergement classique, Docker ou Kubernetes.

Quand une vulnerabilite critique comme CVE-2026-9082 est publiee et activement exploitee, chaque heure compte. Mais patcher un site Drupal en production sous pression est risque : une mise a jour mal preparee peut casser le site, corrompre la base de donnees, ou causer un downtime plus long que l exploitation elle-meme. Ce guide detaille une methode eprouvee en 7 etapes pour appliquer un patch de securite Drupal sans aucune interruption de service visible pour vos utilisateurs. La methode repose sur le principe du blue/green deployment : preparer un second environnement identique, y appliquer la mise a jour, valider, puis basculer le trafic instantanement. En cas de probleme, le rollback est immediat.

Cette approche est applicable que vous utilisiez un hebergement classique (serveur dedie, VPS), des containers Docker, ou un cluster Kubernetes. Les commandes et exemples sont adaptes a l ecosysteme Drupal avec Composer et Drush, les outils standards de l ecosysteme. Prerequis : un acces SSH au serveur, Composer installe, et Drush disponible globalement ou via vendor/bin/drush.

PIPELINE BLUE/GREEN DEPLOYMENT — PATCH DRUPAL SANS DOWNTIMEENVIRONNEMENT BLUE (actif)Drupal 11.3.9 — version actuelleApp ServerPostgreSQLTRAFIC ACTIFENVIRONNEMENT GREEN (standby)Drupal 11.3.10 — version patcheeApp ServerPostgreSQL (replica)EN PREPARATIONLOAD BALANCER / REVERSE PROXYETAPE 1-2PreparationSnapshotClone envETAPE 3Composerupdatedrupal/coreETAPE 4MigrationsDB + cachedrush updatedbETAPE 5Validationtests + smokephpunit + curlETAPE 6Basculementtrafic< 30 secondesETAPE 7Monitoringpost-deploy24-48h

Etape 1 : Preparer l environnement green (miroir)

Le principe du blue/green deployment est simple : vous maintenez deux environnements identiques. L un (blue) recoit le trafic de production, l autre (green) est en standby et sert aux mises a jour. Quand le green est pret et valide, vous basculez le trafic. Le blue devient alors le standby pour le prochain deploiement.

Si vous n avez pas encore d infrastructure blue/green, voici comment la mettre en place rapidement :

  • Hebergement classique (VPS/dedie) : creez un second vhost sur le meme serveur ou un serveur parallele. Utilisez un reverse proxy NGINX ou HAProxy pour router le trafic vers l un ou l autre.
  • Docker : maintenez deux services (drupal-blue, drupal-green) derriere Traefik ou NGINX. Le basculement se fait via modification des labels ou de la configuration upstream.
  • Kubernetes : utilisez deux Deployments avec un Service qui pointe vers l un ou l autre via des label selectors. Le basculement est un simple kubectl patch.

Clonez l environnement blue actuel vers le green : copiez les fichiers applicatifs, synchronisez la base de donnees (pg_dump + pg_restore pour PostgreSQL), et verifiez que le green fonctionne identiquement au blue avant toute modification. Testez l acces au green via son URL interne pour confirmer que le clone est fonctionnel.

Etape 2 : Creer un snapshot et une sauvegarde verifiable

Avant toute modification, creez un point de restauration fiable. Meme avec le blue/green deployment, un snapshot base de donnees est indispensable comme filet de securite supplementaire. Executez :

# Snapshot base de donnees PostgreSQL pg_dump -Fc -f /backups/drupal_pre_patch_$(date +%Y%m%d_%H%M).dump drupal_db # Snapshot fichiers applicatifs tar -czf /backups/drupal_files_pre_patch_$(date +%Y%m%d_%H%M).tar.gz /var/www/drupal # Verifier l integrite du backup pg_restore --list /backups/drupal_pre_patch_*.dump | head -20

Point critique : ne vous contentez pas de creer le backup — verifiez qu il est restaurable. Un backup non teste n est pas un backup. Executez au minimum un pg_restore --list pour confirmer que le fichier dump est valide et lisible. Sur les environnements critiques, restaurez le backup sur un environnement de test pour validation complete.

Etape 3 : Appliquer la mise a jour Composer sur l environnement green

C est l etape technique principale. Sur l environnement green (qui ne recoit pas de trafic), executez la mise a jour du core Drupal via Composer :

# Se placer dans le repertoire du projet Drupal (env green) cd /var/www/drupal-green # Mettre a jour le core Drupal uniquement composer update drupal/core "drupal/core-*" --with-all-dependencies # Verifier la version installee ./vendor/bin/drush status --field=drupal-version # Attendu : 11.3.10 (ou votre version cible) # Si seul le patch de securite est necessaire (sans update global) composer require drupal/core-recommended:11.3.10 --update-with-all-dependencies

Si la mise a jour complete via Composer pose des problemes de compatibilite avec des modules contribues, vous pouvez appliquer uniquement le patch de securite sans changer la version mineure. Drupal publie les patches sous forme de fichiers .patch sur drupal.org. Utilisez cweagans/composer-patches dans votre composer.json pour appliquer des patches specifiques sans upgrader la version complete.

Verifiez que le composer.lock a bien ete mis a jour et commitez-le dans votre gestionnaire de version. Ce fichier est la garantie de reproductibilite du deploiement.

Etape 4 : Executer les migrations de base de donnees

Les patches de securite Drupal incluent rarement des migrations de schema de base de donnees, mais certaines mises a jour mineures en contiennent. Executez systematiquement les commandes de mise a jour de la base pour garantir la coherence :

# Executer les mises a jour de schema (hook_update_N) ./vendor/bin/drush updatedb --no-interaction # Reconstruire le cache completement ./vendor/bin/drush cache:rebuild # Verifier qu aucune mise a jour en attente ne reste ./vendor/bin/drush updatedb:status # Attendu : "No pending updates" # Importer la configuration si vous utilisez Config Management ./vendor/bin/drush config:import --no-interaction

Attention : si votre site utilise la replication PostgreSQL (read replicas), assurez-vous que les migrations sont executees sur le primary et que la replication a le temps de propager les changements de schema avant de basculer le trafic. Un delai de replication de quelques secondes peut causer des erreurs si un replica recoit des requetes pour un schema non encore mis a jour.

Etape 5 : Valider le fonctionnement sur l environnement green

Avant de basculer le trafic, validez rigoureusement que le site fonctionne correctement sur l environnement green. Cette validation doit couvrir trois niveaux :

Tests automatises : si vous avez une suite PHPUnit ou Behat, executez-la completement. Pour un patch de securite, les tests existants doivent tous passer sans modification. Si un test echoue, c est un signal d alerte — n allez pas plus loin avant d avoir compris la cause.

# Tests unitaires et fonctionnels ./vendor/bin/phpunit --configuration web/core/phpunit.xml.dist # Smoke tests manuels rapides curl -sI https://green.monsite.fr/ | grep "HTTP/" # Homepage 200 curl -sI https://green.monsite.fr/user/login | grep "HTTP/" # Login page curl -sI https://green.monsite.fr/jsonapi | grep "HTTP/" # JSON:API (si utilise) # Verifier que les modules critiques sont actifs ./vendor/bin/drush pm:list --status=enabled --type=module | grep -E "(jsonapi|rest|views)" # Tester les formulaires critiques (contact, recherche) curl -s https://green.monsite.fr/search?keys=test | grep -c "search-results"

Verification visuelle : ouvrez le site green dans un navigateur et parcourez les pages critiques (accueil, pages de contenu, formulaires, espace utilisateur). Verifiez que le theming est correct, que les menus fonctionnent, et que les medias s affichent. Un patch de securite ne devrait pas affecter le front-end, mais des effets de bord avec des modules contribues sont possibles.

Verification securite : confirmez que le patch corrige bien la vulnerabilite. Pour CVE-2026-9082, verifiez que la version correspond a une version patchee et que les endpoints JSON:API ne sont plus exploitables avec les payloads connus.

Etape 6 : Basculer le trafic vers l environnement green

Une fois la validation terminee sans erreur, basculez le trafic de production vers l environnement green. Cette operation doit prendre moins de 30 secondes et etre transparente pour les utilisateurs :

# Option A : NGINX upstream switch # Dans /etc/nginx/conf.d/drupal-upstream.conf # Changer : server drupal-blue:80; # En : server drupal-green:80; sudo nginx -t && sudo nginx -s reload # Option B : Docker Compose (labels Traefik) docker compose up -d --no-deps drupal-green # Traefik detecte automatiquement le nouveau container # Option C : Kubernetes kubectl patch service drupal-prod -p '{"spec":{"selector":{"slot":"green"}}}' # Option D : Symlink (hebergement classique) ln -sfn /var/www/drupal-green /var/www/drupal-current sudo systemctl reload php-fpm

Immediatement apres le basculement, verifiez que le site repond correctement en production :

# Verification immediate post-bascule curl -sI https://www.monsite.fr/ | head -5 # Verifier le header X-Drupal-Cache ou un header custom identifiant l env ./vendor/bin/drush --uri=https://www.monsite.fr status --field=drupal-version

Si quelque chose ne va pas, le rollback est instantane : rebasculez vers l environnement blue (qui n a pas ete modifie) avec la meme commande inversee. C est l avantage fondamental du blue/green : le blue est toujours la comme filet de securite jusqu a ce que vous soyez certain que le green est stable.

Etape 7 : Monitoring post-deploiement et plan de rollback

Le deploiement n est pas termine au moment du basculement. Les 24 a 48 heures suivantes sont critiques pour detecter d eventuels problemes qui n apparaissent pas dans les tests mais surviennent sous charge reelle ou avec des cas d utilisation specifiques. Mettez en place un monitoring renforce :

  • Taux d erreur HTTP : surveillez les 5xx et les 4xx inhabituels. Une augmentation post-deploy indique un probleme.
  • Temps de reponse : comparez les P50, P95, P99 avec les valeurs pre-deploy. Une degradation significative (>20%) justifie un rollback.
  • Logs d erreur Drupal : drush watchdog:show --severity=error pour les erreurs applicatives.
  • Logs PostgreSQL : recherchez les erreurs de requetes, deadlocks, ou violations de contraintes inhabituelles.
  • Cron Drupal : verifiez que les taches planifiees s executent correctement apres la mise a jour.

Plan de rollback : gardez l environnement blue intact pendant au moins 48 heures apres le basculement. Si un probleme critique est detecte, rebasculez immediatement le trafic vers le blue. Ne decommissionnez l ancien environnement qu apres validation complete en production. Documentez le deploiement dans votre changelog pour la traçabilite NIS2/DORA.

ARBRE DE DECISION ROLLBACK — QUAND REVENIR EN ARRIERE ?Monitoring post-deploy actifTaux erreur 5xx > 1% ?OUIROLLBACK IMMEDIATRebasculer vers blueNONLatence P95 > +50% baseline ?OUIINVESTIGUER 15minSi non resolu : rollbackVerifier cache + DBNONErreurs critiques watchdog ?OUIEVALUER IMPACTModule non-critique ? MonitorNONDEPLOY VALIDEConserver blue 48h puis recyclerT+0 a T+5min : check immediatT+5min a T+1h : monitoring actifT+1h a T+48h : surveillance

Besoin d aide pour deployer vos patches Drupal ?

Notre equipe DevOps peut mettre en place votre pipeline blue/green et gerer les mises a jour critiques sans interruption de service.

Contactez-nous pour un accompagnement DevOps

Bonnes pratiques pour la maintenance continue

Un patch de securite urgent ne devrait jamais etre une source de stress si votre infrastructure est preparee. Voici les pratiques qui transforment le patching d urgence en operation de routine :

  • Automatisez la detection : configurez les alertes de securite Drupal (drush pm:security) dans votre pipeline CI pour etre alerte des la publication d un SA.
  • Maintenez le blue/green en permanence : ne montez pas l infrastructure uniquement en urgence. Utilisez-la pour chaque deploiement, meme les mises a jour mineures de contenu.
  • Testez les rollbacks regulierement : une fois par trimestre, simulez un rollback complet pour verifier que la procedure fonctionne sous pression.
  • Documentez chaque deploiement : date, version, qui a execute, resultat des tests. Cette traçabilite est obligatoire pour NIS2 et DORA.
  • Abonnez-vous aux security advisories : drupal.org/security par email et RSS. Chaque minute compte quand une exploitation active est confirmee.

Pour les organisations soumises a NIS2 ou DORA, la capacite a patcher rapidement sans downtime n est plus un nice-to-have — c est une obligation reglementaire. Les regulateurs attendent des delais de remediation de 24 a 72 heures pour les vulnerabilites critiques activement exploitees. Sans pipeline blue/green pre-configure, ces delais sont pratiquement impossibles a tenir en securite.

Questions frequentes

Cette methode fonctionne-t-elle pour Drupal 10 et Drupal 11 ?

Oui, la methode blue/green et les commandes Composer/Drush presentees sont compatibles avec toutes les versions de Drupal 10.x et 11.x. Les commandes Drush sont identiques. La seule difference potentielle est dans les contraintes Composer : Drupal 11 requiert PHP 8.3+ et certaines dependances specifiques. Verifiez que votre environnement green a la meme version PHP que votre blue avant de commencer.

Comment gerer les sessions utilisateurs pendant le basculement ?

Si les sessions sont stockees en base de donnees (configuration par defaut de Drupal), les deux environnements partagent la meme base, donc les sessions persistent automatiquement lors du basculement. Si vous utilisez Redis ou Memcached pour les sessions, assurez-vous que les deux environnements pointent vers la meme instance de cache. Pour les sites a fort trafic, envisagez les sticky sessions au niveau du load balancer pendant la transition pour eviter les deconnexions.

Que faire si je n ai qu un seul serveur sans possibilite de blue/green ?

Sur un serveur unique, utilisez la methode du symlink : maintenez deux repertoires (/var/www/drupal-a et /var/www/drupal-b) avec un symlink /var/www/drupal-current qui pointe vers l actif. Mettez a jour le repertoire inactif, validez via un vhost de test, puis basculez le symlink et rechargez PHP-FPM. Le downtime est reduit a la duree du reload PHP-FPM (moins d une seconde). C est un blue/green du pauvre mais c est efficace.

Combien coute la mise en place d une infrastructure blue/green pour Drupal ?

Le surcout depend de votre hebergement actuel. Sur un VPS ou un dedie, le blue/green par symlink ne coute rien de plus (juste le double d espace disque pour l application, soit quelques Go). Avec Docker, le surcout est minimal car les images partagent les couches de base. Sur Kubernetes, le surcout est un second Deployment qui consomme les memes ressources que votre prod (doublez votre budget compute pendant les deploiements, ou utilisez des pods preemptibles pour le green). En moyenne, prevoyez un surcout de 10 a 30% sur votre facture hosting pour une infrastructure blue/green permanente.

Securisez votre pipeline de deploiement Drupal

De l audit initial a la mise en place du blue/green deployment, nous accompagnons les equipes qui veulent patcher sans stress et sans downtime.

Demander un audit DevOps Drupal

Ressources complementaires