postheadericon Transférer un site entre 2 serveurs release 2 OVH

Bon, je sens que ça va être long, il va falloir s’accrocher. Ca fait un bout de temps que je me suis promis d’écrire ce billet tant la question revient de manière régulière sur les forums OVH (tiens, pas plus tard qu’il n’y a pas longtemps, ici). Fainéant que je suis, j’en ai toujours différé la rédaction vu la grosse tartine que cela représente.

Cette fois, j’y vais.

Introduction

C’est parti pour la question à 1000 balles : comment déménager proprement un site d’un serveur en release 2 OVH vers un autre serveur avec cette même distribution ? Le fait de migrer un site d’un serveur à un autre est souvent vécu comme un cauchemar par les admins débutants. Je m’en vais essayer de les rassurer quelque peu en proposant ci-dessous une procédure en 10 étapes (relativement) simples et, je l’espère, décrites avec précision.

Notez bien que, dans les grandes lignes, ces 10 étapes sont valables pour le déménagement d’un site depuis et vers n’importe quel serveur dédié (pas spécialement en release 2). Seulement les détails que je fournis ci-dessous sont, eux, propre à cette distribution.

Pour la suite de ce billet, je pars du principe que :

  • Les 2 serveurs sont installés en release 2 OVH, sans modification majeure.
  • Les quelques commandes SSH décrites ci-dessous sont à passer en shell et en root.
  • J’appellerai le site à déménager monsite.com. Sur les 2 serveurs, il aura comme utilisateur « monsite » et comme répertoire « /home/monsite ».
  • monsite.com est un site type « PHP + MySQL », du genre Prestashop, WordPress, phpBB, Joomla, etc.
  • J’appellerai ns1111.ovh.net le serveur où se trouve actuellement le site en production, et ns2222.ovh.net le serveur vers lequel on souhaite déménager le site.
  • Chaque serveur a son IP propre, pas d’utilisation d’IP failover (ce qui faciliterait considérablement la tâche … pas la peine de faire simple quand on peut faire compliqué :) ).

1. Créer l’hébergement sur ns2222.ovh.net

Commençons par créer sur ns2222.ovh.net un hébergement identique à celui existant sur ns1111.ovh.net. Il faut donc aller créer un hébergement pour monsite.com dans OVHm, c’est à dire par là :

Webmin > ovhm > Ovh Virtual Hosting Management > Ajouter un domaine

Autrement dit, là : https://ns2222.ovh.net:10000/ovhm/formulaire_creer_domaine.cgi

Remplissez le formulaire en veillant à indiquer le même mot de passe que sur ns1111.ovh.net, histoire de créer 2 hébergements vraiment identiques sur les 2 serveurs.

Voilà qui devrait avoir créé tout le nécessaire … sauf les boites mails (et les alias) dont nous nous occuperons plus tard. Pas la peine d’aller se balader dans QmailAdmin (pour ceux qui connaissent), ni de s’amuser à créer manuellement les boites mails.

Sans que ce soit une obligation à ce stade (on y reviendra à la fin), vous pouvez d’ores et déjà rendre dans OVHm sur ns2222.ovh.net (Webmin > ovhm > Ovh Virtual Hosting Management) et de cliquer sur le lien « Redemarrer tous les services (pour prendre en compte les changements) ».

2. « Désactiver » le site sur ns1111.ovh.net

L’idée ici est de mettre le site « en maintenance », ou, à tout le moins, de désactiver tous les aspects interractifs et/ou web 2.0 de monsite.com sur le serveur où il est actuellement en production. La plupart des CMS à l’heure actuelle permettent de désactiver un site si on le souhaite. L’affichage public du site est alors remplacé par un message du genre :

Notre site est temporairement indisponible pour cause de maintenance. Nous vous prions de nous excuser pour la gêne occasionnée et vous demandons de renouveler votre visite ultérieurement.

Cette étape est particulièrement importante si le site enregistre des commandes (boutique en ligne) ou bien si son contenu est fréquemment modifié (blog, forum,…). En effet, le futur déménagement du site supposera de changer les DNS du nom de domaine monsite.com. Cela aura pour effet que, pendant une période pouvant aller jusqu’à 48H après le changement de DNS (cette étape sera décrite plus loin), certains visiteurs pourront encore êtres amenés à visiter le site sur ns1111.ovh.net alors que d’autres voient déjà le site sur ns2222.ovh.net. Cette situation un peu exceptionnelle est liée à la fameuse « propagation des DNS » et peut poser de gros problèmes de pertes de données si le site fonctionne à la fois sur ns1111.ovh.net et sur ns2222.ovh.net. Il est donc prudent de désactiver le site sur ns1111.ovh.net. Il est alors possible que, pendant cette fameuse période, certains visiteurs voient le site « en maintenance » pendant quelques heures … mais c’est un moindre mal.

Notez également que cette étape est bien sûr superflue pour les sites statiques ou donc le contenu n’évolue pas : peu importe que certains visiteurs le visitent sur ns1111.ovh.net ou sur ns2222.ovh.net, ils y verront la même chose.

3. Backup de la base sur ns1111.ovh.net

Sauvegardons à présent la base de données du site sur ns1111.ovh.net. Pour ce faire, allons au plus simple, utilisons Webmin. Rendez-vous ici :

Webmin > Serveurs > Serveur de Bases de Données MySQL > monsite
Autrement dit : https://ns1111.ovh.net:10000/mysql/edit_dbase.cgi?db=monsite

Cliquez ensuite sur le bouton « Backup Database ». Dans le formulaire qui suit, il suffit de choisir un emplacement pour votre backup. Le nom du fichier est arbitraire, mais je vous conseille de placer votre backup à la racine de l’hébergement du site, soit pour moi : /home/monsite/backupmonsite.sql

Voilà qui va créer un « dump » de votre base de données que nous pourrons importer le moment venu sur ns2222.ovh.net.

4. Copier le site d’un serveur à l’autre

C’est la partie qui parait la plus complexe … en fait il n’en est rien. Nous allons nous connecter par SSH sur ns1111.ovh.net et taper la simple commande suivante :

scp -rp /home/monsite/ root@ns2222.ovh.net:/home/

Cette commande aura pour effet de copier le répertoire /home/monsite/ d’un serveur à l’autre (le mot de passe root de ns2222.ovh.net vous sera demandé au passage). Si vous vous êtes bien débrouillés, le dump de la base MySQL (qui devrait donc se trouver dans /home/monsite/ si vous avez suivi les recommandations du point 3) devrait faire partie du voyage.

5. Copier les boites mails d’un serveur à l’autre

Sur mon serveur en release 2, les boites mails de monsite.com se trouvent dans /home/vpopmail/domains/monsite.com. Je m’en vais donc repasser un coup de « scp » pour les copier d’un serveur à l’autre. Rendez-vous en SSH, toujours sur ns1111.ovh.net et tapez :

scp -rp /home/vpopmail/domains/monsite.com/ root@ns2222.ovh.net:/home/vpopmail/domains/

Notez que le pass root de ns2222.ovh.net vous est une nouvelle fois demandé.

Et hop, voilà toutes mes boites et tous mes alias transférés d’un coup. Elle est pas belle la vie ? 8)

6. Rétablir les bons propriétaires des fichiers

Cette étape est primordiale, ne la zappez pas !

Les deux copies un peu sauvages auxquelles nous venons de nous livrer ont quelque peu chamboulé les propriétaires des fichiers et dossiers sur ns2222.ovh.net. Il est indispensable de rectifier le tir, sans quoi ni le site, ni les boites mails ne fonctionneront correctement sur le nouveau serveur.

Faisons cela avec la commande « chown », rendez-vous en SSH sur ns2222.ovh.net et tapez :

chown -R monsite:users /home/monsite
chown -R vpopmail:vchkpw /home/vpopmail/domains/monsite.com

7. Restaurer la base de données sur ns2222.ovh.net

Il est à présent temps d’importer la base de données sur ns2222.ovh.net. Pour ce faire, comme lors de la création du dump, nous utilisons Webmin … et exactement au même endroit :

Webmin > Serveurs > Serveur de Bases de Données MySQL > monsite
Autrement dit : https://ns2222.ovh.net:10000/mysql/edit_dbase.cgi?db=monsite

Cette fois, cliquez sur le bouton « Execute SQL » puis sur l’onglet « Run SQL from file ». Utilisez alors le petit formulaire pour sélectionner votre fichier « dump » (je ne vais pas vous faire l’insulte de vous rappeler encore une fois où il se trouve) et validez.

Lorsque la page se rafraichit (ça peut durer un moment, surtout si vous avez une grosse base de données), le message de confirmation n’est pas très bavard, c’est normal. Si vous souhaitez vous assurer que votre base a correctement été importée, le mieux est d’aller jeter un coup d’oeil dans PhpMyAdmin :

https://ns2222.ovh.net/phpMyAdmin/

8. « Activer » le site sur ns2222.ovh.net

Il s’agit de l’inverse du point 2 : sortir le site de son mode « maintenance », cette fois sur ns2222.ovh.net.

Il est possible que ce point pose problème car, à ce stade, on n’a toujours pas changé des DNS du nom de domaine. Donc, lorsqu’on visite monsite.com le plus naturellement du monde, on tombe encore évidemment sur ns1111.ovh.net ! Or c’est bien sur ns2222.ovh.net qu’il convient de réactiver le site…

Pour contourner l’obstacle, la release 2 vous offre la possibilité de visiter votre site sur une adresse temporaire :

http://ns2222.ovh.net/~monsite/

Si cela ne suffit pas, vous pouvez feinter en modifiant le fichier « host » sur votre PC et en forcant le nom de domaine monsite.com vers l’adresse IP de ns2222.ovh.net (je ne développe pas plus que ça, vous trouverez pleins d’infos sur Google à ce sujet).

9. Changer les DNS du nom de domaine

On y est presque, il ne reste plus qu’à changer les DNS de monsite.com … mais avant cela, il convient de gérer correctement le DNS secondaire. Comme vous le savez, un nom de domaine se doit d’avoir 2 serveurs DNS, le primaire et le secondaire. Le DNS primaire d’un nom de domaine hébergé sur un serveur en release 2 est en principe le nom du serveur lui-même. Donc, à ce stade, le DNS primaire de monsite.com est ns1111.ovh.net.

Comme il est obligatoire qu’un nom de domaine ait (au moins) 2 DNS, OVH met à notre disposition un serveur DNS secondaire. A l’heure où j’écris ces lignes, le DNS secondaire pour les serveurs OVH est sdns2.ovh.net (ns.kimsufi.com pour les serveurs Kimsufi).

En l’état actuel des choses les DNS de monsite.com sont donc :

ns1111.ovh.net
sdns2.ovh.net

Il va donc falloir changer cela par :

ns2222.ovh.net
sdns2.ovh.net

Si votre nom de domaine est enregistré chez OVH, vous pouvez faire cette opération dans votre manager OVH (https://www.ovh.com/managerv3) :

monsite.com > Domaine & DNS > Serveurs DNS

Si votre domaine n’est pas enregistré chez OVH, ma foi, vous trouverez certainement l’option dans le panel d’administration de votre registar.

OUI MAIS…

Si on se contente de ne faire que ça, notre ami le DNS secondaire (sdns2.ovh.net donc) ne sera pas au courant du changement et il continuera de fonctionner comme avant, c’est à dire d’envoyer le trafic (et les mails) de monsite.com vers ns1111.ovh.net !

Pour corriger cela, rendez vous dans votre manager OVH :

ns1111.ovh.net > Services > DNS secondaire

Puis supprimez le nom de domaine du DSN secondaire.

Restez alors dans votre manager OVH :

ns2222.ovh.net > Services > DNS secondaire

Et cette fois inscrivez le nom de domaine sur le DNS secondaire.

Voilà qui aura pour effet que le DNS secondaire cesse de communiquer avec ns1111.ovh.net et se mette à parler avec ns2222.ovh.net.

IMPORTANT

On approche de la fin, mais n’oubliez pas à l’issue de tout cela, de vous rendre dans OVHm sur ns2222.ovh.net (Webmin > ovhm > Ovh Virtual Hosting Management) et de cliquer sur le lien « Redemarrer tous les services (pour prendre en compte les changements) ». Faites le, même si vous l’avez déjà fait à le fin de l’étape 1.

10. Vérifier les mails pendant 48H

Et bien voilà, figurez-vous que la migration est terminée : votre site a bel et bien été déplacé d’un serveur à l’autre. Mais si, mais si ! Il est possible que cela ne saute pas aux yeux tout de suite car, victime que vous êtes de la propagation des DNS, vous continuez de voir votre site « en maintenance » car vous êtes encore dirigé vers ns1111.ovh.net. De fait, c’est à présent que commence cette période bizarre au cours de laquelle le trafic vers votre site bascule progressivement vers le nouveau serveur. Il n’y a pas grand chose à faire de votre côté, sinon peut-être tenter un ipconfig /flushdns (si vous êtes sous Windows, voir Google pour savoir ce que c’est) ou bien, comme cela a déjà été évoqué plus haut, forcer votre fichier « host ».

Il reste cependant un point quelque peu gênant auquel il faut faire attention. Pendant la propagation des DNS, au même titre que certains visiteurs arriveront encore sur ns1111.ovh.net jusqu’à 48H après le changement des DNS, certains mails eux aussi arriveront peut-être encore sur l’ancien serveur ! Si les boites mails ont une certaine importance à vos yeux et que vos utilisateurs ne peuvent en aucun cas louper de mail, il va falloir veiller au grain ! Donc, pendant les 48H qui suivent le changement des DNS, il va falloir jeter un coup d’oeil régulièrement pour voir si de nouveaux mails ne seraient pas arrivés sur ns1111.ovh.net. Le cas échéant, il est évidemment nécessaire de les copier sur ns2222.ovh.net (reportez vous aux points 5 et 6).

Pinaise, il m’a pris l’après-midi ce billet … mais ouf, ayééé :)

19 réponses à to “Transférer un site entre 2 serveurs release 2 OVH”

  • J’ai été confronté au même cas et j’avais contourné le souci du temps de la propagation DNS via un iptables qui redirigeait depuis le serveur 1 vers le serveur 2. Ce qui a conduit à zéro interruption

  • Nico:

    Merci d’être passé par ici :)

    Tu as raison, j’aurais pu parler d’iptables. D’ailleurs, malgré la taille du pavé ci-dessus, j’ai fait l’impasse sur une série de choses intéressantes. Notamment (mais pas que) mod_proxy ou encore la réduction du TTL de la zone Bind de monsite.com. J’avoue que j’ai eu la flemme … et puis (pour me donner bonne conscience), il faut dire aussi que cela aurait rajouté une couche de complexité à un tuto qui se veut accessible à tous, surtout aux débutants.

    Cela dit, pour revenir à iptables, est-il possible de rediriger tout le trafic d’un seul et unique domaine ? Parce que bon, en imaginant que monsite.com ne soit pas le seul site hébergé sur ns1111.ovh.net, on ne peut évidemment pas envisager de redirection iptables basée sur les ports, sans quoi les autres sites se retrouveraient inaccessibles. Je vais aller fureter, si je trouve un truc, je poste ici.

  • Olivier:

    super tutoriel, merci !

    J’ai un serveur dédié OVH en release 2 et j’avoue que parfois je galère un peu pour la gestion car je n’y connais rien. Alors je me dépatouille avec les conseils trouvés à droite ou à gauche… est-ce que par hasard vous feriez de l’infogérance sous la release 2 d’OVh ?

  • Nico:

    Ravi qu’il vous convienne :)

    Et oui, je peux me charger de quelques tâches d’infogérance sur un serveur en release 2 OVH. Après, tout dépend de ce que vous souhaitez : je ne prétends pas être un cador de Gentoo mais j’ai tout de même quelques kilomètres au compteur avec cette distribution.

  • Tristan:

    Bonjour,

    Dans l’étape 10 vous conseillez de bien surveiller les mails.
    Dans le cas où de nouveaux mails arrivent sur un serveur ou sur l’autre, ou bien que on en envoi, l’étape 5 n’écrasera-t-elle pas les nouveaux mails reçus/envoyés sur ns22222 par les nouveaux reçus/envoyés sur ns11111?

    Dans ce cas, comment pourraient-on fusionner les deux sur ns22222?

  • Nico:

    Bonjour,

    Aucune inquiétude à avoir à ce niveau : le format « Maildir » (utilisé sur la release 2) veut que chaque mail soit représenté par un fichier et que le nom de ce fichier est généré de manière à être unique. Il n’y a donc aucun risque d’écrasement.

    A vrai dire le seul risque, c’est que certains utilisateurs reçoivent des mails en double exemplaire. Par exemple un utilisateur se connectant sur ns2222 et ayant déjà vidé sa boite. Si on lui (re)copie ses mails en provenance de ns1111, il recevra donc un exemplaire supplémentaire de certains mails qu’il a déjà consultés. Pour éviter cela, il est possible de copier de manière un peu plus fine en copiant mails par mail (fichier par fichier) et/ou en se concentrant sur les mails se trouvant de la répertoire « new » (qui, par définition, n’ont pas encore été consultés).

  • Bonjour,

    Sympa ce tuto je voulais rajouter une petite astuce pour accelerer le transfert des dns :il suffit dans votre cas de forcer l’ip dans le domaine sur l’ancien serveur donc :
    Vous pouvez même incrémenter 2009101102 + 1
    Mais attention à ce que le numéro sur le nouveau serveur soit bien supérieur !!

    $ttl XXXXXXX
    $ttl 86400
    domaineatranferer.com. IN SOA domaineatranferer.com. postmaster.domaineatranferer.com. (
    2009101102
    21600
    3600
    604800
    86400 )
    IN NS nsXXXXX.ovh.net.
    IN NS sdns1.ovh.net.
    IN MX 10 mail.domaineatranferer.com.
    IN A IP.du.nouveau.serveur
    www IN A IP.du.nouveau.serveur
    mail IN A IP.du.nouveau.serveur
    smtp IN A IP.du.nouveau.serveur
    pop IN A IP.du.nouveau.serveur
    pop3 IN A IP.du.nouveau.serveur
    imap IN A IP.du.nouveau.serveur
    sql IN A IP.du.nouveau.serveur
    mysql IN A IP.du.nouveau.serveur

    Après on peut faire une redirection brut du trafic sur la carte mais c’est un peu plus tendu …

  • Merci beaucoup,

    3 jours que je cherche la procédure! :)

  • Nico:

    ‘va falloir que je soigne mon référencement ;)

  • Phil:

    Bonjour,

    Super, merci d’avoir pris le temps d’avoir créé ce tutorial étape par étape.
    Un petit souci, à l’étape 6, j’ai pourtant bien vérifié la syntaxe, j’ai un message d’erreur :
    sur la ligne
    « chown -R monsite:users /home/monsite »
    J’ai l’erreur :
    chown `monsite.com:users’: usager invalide.

    Pouvez-vous m’aider svp ?

    Merci.

  • Nico:

    Dans la commande « chown -R monsite:users /home/monsite », « monsite » correspond à l’utilisateur système qui a été créé pour ce site. Dans le cadre de la release OVH (à moins que vous n’ayez forcé les choses d’une manière ou d’une autre), il est très improbable que le nom de cet utilisateur termine par « .com ».

    Reportez vous au module OVHm de Webmin pour savoir quel user a été créé : Webmin > OVHm > Liste des domaines gérés par OVHM, puis voyez la colonne « login »

  • Phil:

    Bonjour Nico,

    Merci beaucoup pour votre réponse rapide. Mon transfert n’est pas fini, mais voici quand même où j’en suis.
    En transférant les fichiers, on ne retrouve pas sous OVHM le site tel qu’on l’avait créé. J’ai d’abord créé le site sous OVHM sur le serveur 2, à l’identique du serveur 1, avec les mêmes mots de passe pour les bases, puis transférer le site…
    La manière de faire n’est-elle pas déjà de recréer les sites et bases sous OVHM avant de les transférer ?

    Merci.

  • Nico:

    Si, c’est d’ailleurs le sens du point 1 de ce billet.

  • Phil:

    Bonjour Nico,

    Merci pour votre tutorial très efficace. Pourriez-vous me donner des indications pour faire un virtualhost (ou autre), l’idée étant de transférer tout le trafic vers le serveur dès que celui-ci est prêt, sans attendre la propagation DNS. La doc trouvée sur internet n’est pas simple quand on s’y connait peu…

    Merci.

  • Nico:

    Comme dit quelque part dans les commentaires ci-dessus, il est effectivement possible de rediriger le trafic web … mais cela dépasse le cadre de ce tuto qui se veut accessible à tous.

    Si le coeur vous en dit et que vous souhaitez pousser plus loin les recherches, voyez du côté de mod_proxy (« mod_proxy » dans Google vous amènera tout droit sur la doc). Attention, gardez également à l’esprit que cela ne redirige que le trafic web. Cela ne touche donc pas les mails qui, eux, seront toujours soumis à la propagation des DNS.

  • Phi:

    Bonjour,

    Merci infiniment, je suis votre tutorial pas à pas pour transférer mes sites OVH.

    Il y a un problème, qui n’est pas de votre fait, mais côté OVH. Je ne suis pas spécialiste, mais il me semble que la manip est bonne.
    Je m’en suis aperçu en tentant de faire un Zonecheck sur mes domaines (http://www.zonecheck.fr/demo), j’avais plein d’erreurs…
    J’ai réalisé que, à ce jour, si vous transférez des domaines qui ont un DNS secondaires sdns1.ovh.net vers sdns2.ovh.net, le changement n’est PAS effectué automatiquement dans OVHM…
    J’ai été obligé de faire manuellement la correction : sur les deux serveurs :
    OVHM > Serveurs > Serveur de noms de domaines BIND > (nomdudomaine.com) > Tous les types d’enregistrements (xx)
    Vérifiez que vous trouvez bien sdns2.ovh.net et non pas sdns1.ovh.net

    Qu’en pensez-vous ?

    Merci.

  • Nico:

    Effectivement, dans la mesure où OVH change régulièrement de DNS secondaire, cela fait partie des difficultés que l’on peut théoriquement rencontrer sur la release. Si le serveur est à jour (et donc module OVHm également, la dernière version à l’heure actuelle étant la 0.6.6), la zone Bind qui sera créée à la création d’un hébergement contiendra les champs NS suivants : ns2222.ovh.net (votre serveur) et sdns2.ovh.net (l’actuel DNS secondaire mis à disposition par OVH).

    Seulement le problème doit bel et bien rester « théorique » dans la mesure où, si vous transférez un site d’un serveur à un autre, il vous faudra nécessairement supprimer et réinscrire le nom de domaine sur le DNS secondaire d’OVH. C’est l’objet de mon « OUI MAIS… » dans le point 9 du tuto. Concrètement, cela aura donc pour effet de supprimer le nom de domaine de sdns1.ovh.net et de le recréer sur sdns2.ovh.net.

    En clair, si vous transférez un site d’un serveur à l’autre, il n’est pas possible de conserver sdns1.ovh.net en tant que DNS secondaire pour le nom de domaine déménagé.

  • Fab':

    Bonjour,

    Merci pour ces lignes de commandes, j’ai pu faire les transferts d’un ancien serveur via le nouveau répertoire par répertoire, pour chaque domaine qui se devait d’être concerné.
    Pour les DNS, pas eu besoin, étant donné que les domaines sont sur des IP FailOver, ainsi, je n’ai eu qu’à faire la bascule des IP concernées d’un serveur vers l’autre.

    Moi, qui suis assez allergique à la ligne de commande, j’avoue que ce fut bien simple et sans erreur.

  • Fab':

    J’en profite pour ceux qui ne le savent pas, l’avantage des IP FailOver est de ne plus s’embêter avec le changement de DNS, quelque soit le domaine. Ainsi, quand vous changer de serveur, il suffit de faire la bascule d’un serveur vers un autre dans l’interface du Manager. A condition, que les deux serveurs soient chez OVH.

    Ainis, le domaine n’est pas derrière l’IP et le DNS du serveur dédié, mais derrières ceux de l’IP FailOver. Une fois que les données d’un domaine ont été transférées (FTP & alias) vers le nouveau serveur, hop, bascule de l’IP, un email de confirmation d’OVH, et les données rattachées au domaine sont instantanément accessibles, sans devoir attendre la propagation des DNS.

Laisser un commentaire

Contact
La pause détende
Une 'tite vidéo au hasard
(avec Vidéo Folie)