OffshoreVps
Guides18 oct. 20268 min de lecturePar l’équipe OffshoreVps

Migrer un site web vers un nouveau VPS sans interruption

Une migration de site pas à pas : réduire le TTL DNS, copier les fichiers et la base de données deux fois, tester avec une entrée hosts, basculer le DNS et garder l’ancien serveur jusqu’à ce que le trafic se soit écoulé.

La plupart des migrations pénibles sont dues à des erreurs d'ordre, pas à des problèmes techniques. On change le DNS d'abord, puis on découvre que la base de données est obsolète. Suivez l'ordre ci-dessous et vos visiteurs ne remarqueront pas le changement.

Fenêtre de terminal sur un VPS montrant les commandes utilisées pour migrer un site web sans interruption, à commencer par « rsync -aHAX --info=progress2 -e ssh /var/www/ us »
Le type de commandes que vous exécuterez sur votre serveur dans ce guide.

Étape 1 : abaissez le TTL du DNS à l'avance

Au moins un jour avant la migration, réglez le TTL de vos enregistrements A et AAAA sur 300 secondes. Les caches qui détiennent déjà l'ancienne valeur ont besoin de temps pour expirer : cette étape ne peut pas se faire dans la précipitation le jour J.

Étape 2 : construisez d'abord le nouveau serveur

Créez le nouveau VPS, appliquez la liste de contrôle de durcissement et installez la même pile : serveur web, version de PHP ou de Node, moteur de base de données. Des versions identiques évitent la plupart des mauvaises surprises. Copiez la configuration, pas seulement le contenu.

Étape 3 : copiez les fichiers

rsync -aHAX --info=progress2 -e ssh /var/www/ user@NEW_IP:/var/www/

Lancez-la une première fois maintenant. Elle est lente la première fois et rapide aux suivantes, et c'est précisément le but.

Les étapes de ce guide dans l’ordre : 1. abaisser tôt le TTL du DNS ; 2. construire d’abord le nouveau serveur ; 3. copier les fichiers ; 4. tester avant d’y envoyer qui que ce soit ; 5. figer, synchroniser une dernière fois, basculer ; 6. surveiller, puis retirer l’ancien serveur
Les étapes de ce guide, dans l’ordre.

Étape 4 : copiez la base de données

# on the old server
mysqldump --single-transaction --routines --triggers mydb | gzip > mydb.sql.gz
scp mydb.sql.gz user@NEW_IP:~/
# on the new server
gunzip < mydb.sql.gz | mysql mydb

Il s'agit d'une répétition générale. Elle vous donne une copie fonctionnelle sur laquelle tester.

Étape 5 : testez avant d'y envoyer qui que ce soit

Faites pointer votre propre ordinateur vers le nouveau serveur en modifiant son fichier hosts : ajoutez NEW_IP example.com www.example.com. Parcourez le site, connectez-vous, envoyez un formulaire et passez une commande de test. Corrigez ce qui ne fonctionne pas pendant que le public voit encore l'ancien serveur. Installez le certificat TLS avec un challenge DNS afin qu'il fonctionne avant la bascule.

Étape 6 : gel, dernière synchronisation, bascule

  1. Mettez l'ancien site en mode maintenance ou en lecture seule.
  2. Répétez le rsync, ainsi que l'export et l'import de la base de données.
  3. Changez les enregistrements DNS pour la nouvelle IP.
  4. Supprimez l'entrée du fichier hosts et vérifiez depuis un autre réseau.

La fenêtre de lecture seule dure généralement quelques minutes. Pour une boutique ou un site avec des comptes utilisateurs, planifiez-la à un moment calme.

Étape 7 : surveillez, puis retirez l'ancien serveur

Gardez l'ancienne machine plusieurs jours. Certains résolveurs ignorent les TTL, si bien qu'un filet de trafic continuera d'arriver. Transférez ou faites passer ce trafic par un proxy vers la nouvelle IP si possible, consultez vos journaux, puis remettez le TTL à une valeur normale. Faites une sauvegarde récente du nouveau serveur avant de supprimer l'ancien.

Vous changez aussi de juridiction ? Comparez d'abord les options dans comparatif des juridictions d'hébergement offshore.