Je vous concède que cela n’a que peu à voir avec les moteurs de recherche, mais c’est un problème auquel j’ai récemment été confronté, et j’ai pensé qu’un "petit tutorial" sur le sujet pourrait intéresser certains d’entre vous.

La problématique est la suivante :

Vous avez un blog Dotclear chez un hébergeur, et, pour une raison ou une autre, vous souhaitez migrer votre blog sur un autre serveur. Le but étant que votre site ne soit pas indisponible, et que vos visiteurs ainsi que les lecteurs de vos flux RSS ou Atom ne perdent rien lors de ce transfert.

Tout d’abord, pour ceux d’entre vous qui lisent l’anglais, je vous recommande la lecture de ce billet de Matt Cutts indiquant une procédure possible, principalement axée Wordpress et Linux mais néanmoins intéressante.

Le démarche que j’ai utilisée est la suivante : (Il y a d’autres façons de faire, mais celle-ci me semble être la plus efficace. Elle présente l’avantage de vous faire repartir sur des bases saines avec la dernière version de Dotclear et des plugins correctement installés.)

  1. Exporter la base de données de votre blog.
  2. Ré-installer une version « propre » et à jour de Dotclear chez votre nouvel hébergeur.
  3. Importer la base de données.
  4. Modifier les DNS afin de les faire pointer vers le nouvel hébergement.
  5. Attendre que la propagation DNS soit effectuée.
  6. Supprimer l’ancien site et reprendre une vie normale.

Quelque soit l’âge de votre site et le nombre de billets et commentaires, vous ne voulez pas repartir de zéro et perdre toutes ces heures de dur labeur et de pur plaisir. C’est normal. Il convient donc de les sauvegarder. Je ne saurais trop vous recommander d’effectuer ces sauvegardes sur une base régulière, et pas seulement lors d’une migration entre hébergeurs.



1. Optimisation et sauvegarde de la base.

Connectez vous à l’interface d’administration de Dotclear, onglet « Outils », lien « Opérations MySQL ».

  • Cliquez sur « Optimiser la base » puis dans le panneau administration de votre hébergeur, rendez vous sur l’interface phpMyAdmin (ou l’équivalent) et procédez à l’exportation de votre base : Onglet « Exporter »
  • Cliquez sur le lien « Tout sélectionner »
  • Dans la liste déroulante « Compatibilité de l’exportation » choisissez le format approprié (Dans mon cas la migration s’effectuant d’un hébergement supportant MySQL 5.x vers un autre possédant MySQL 4.x, j’ai opté pour un export MYSQL40)
  • Choisissez la compression « gzippé »
  • Cliquez sur « Exécuter »
  • Sauvegardez ce fichier gzip sur votre disque dur.

Le format gzip est un format compressé. Si vous êtes curieux, vous pouvez le décompresser à l’aide d’un utilitaire tel que WinZip ou WinRar et visualiser le fichier ainsi obtenu dans un éditeur de texte comme Notepad ou PSPad. Il contient l’intégralité des données de votre blog, ( billets, trackbacks, catégories, commentaires etc.…)



2. Installation de la dernière version de Dotclear.

Rendez vous sur http://www.dotclear.net/download/ afin d’y télécharger la dernière version stable de Dotclear, puis installez la chez votre nouvel hébergeur. La marche à suivre pour une installation dans les règles est détaillée ici.

Deux points importants à prendre en compte lors de cette installation :

  • Les tables de votre nouveau blog doivent utiliser le même préfixe que l’ancien. Par défaut « dc_ »
  • L’encodage doit être identique. En général, (et recommandé) UTF-8.

Si vous aviez apporté des personnalisations à votre Dotclear, c’est le moment de les refaire sur cette nouvelle version. Vous pouvez recopier sur cette nouvelle installation les fichiers que vous aviez modifié (template.php, post.php, style.css…) et réinstaller les plugins dont vous avez besoin. Ce peut être également l’occasion de faire quelques changements esthétiques et le tri dans tous ces plugins installés sur la première version et dont vous n’avez pas l’utilité. Une fois la configuration de votre blog terminée, il est temps d’y introduire la substantifique moelle, le contenu.



3. Importation de la base de données.

Lorsque vous avez installé cette nouvelle version de Dotclear, une base de données vide a été crée. Le but est de remplacer cette base par celle que vous avez préalablement exportée et enregistrée.

Par le panneaux d’administration de votre nouvel hébergeur, accédez à phpMyAdmin :

  • Onglet « Structure »
  • Cliquez sur le lien « Tout cocher »
  • Dans la liste déroulante sélectionnez « Supprimer » (Rien à craindre vous ne supprimez qu’une base vide)
  • Puis dans l’onglet « SQL », cliquez sur le bouton « Parcourir » et sélectionnez le fichier gzip que vous avez enregistré. Sélectionnez l’encodage approprié (UTF-8 par défaut)
  • Cliquez sur « Executer ». La requête SQL s’exécute, et votre base est importée dans votre nouveaux blog.

Voilà, le plus dur est fait. Votre nouveaux site est prêt à fonctionner, il est configuré et contient toutes ces données patiemment et amoureusement accumulées. Vérifiez que tout est correct en naviguant dans les différentes catégories, en lisant les billets et commentaires, et en contrôlant dans la partie « Administration » que les plugins sont correctement installés, fonctionnels, et ne générent pas d’erreurs MySQL.

A ce stade, votre nouveau blog existe mais il n’est pas encore accessible au reste du monde. Vos lecteurs assidus, lorsqu’ils tapent son adresse dans leur navigateur, arrivent toujours sur l’ancienne version, chez l’hébergeur que vous êtes résolu à quitter. Il est donc nécessaire d’effectuer la « redirection » de votre nom de domaine vers ce nouvel hébergement en changeant les DNS (Domain Name Server).

C’est ce qui permettra à un internaute qui saisit l'adresse : http://www.votre-nom-de-domaine.com dans son navigateur d’être dirigé vers le nouveau serveur hébergeant votre site grâce à ce qu’on appelle la « résolution des noms de domaine ».



4. Modification des DNS

Chez votre registar (la société auprès de laquelle vous avez enregistré et acheté votre nom de domaine), effectuez le changement de DNS. La procédure varie selon les registar mais elle est généralement assez simple. Chez 1&1, par exemple, après vous être connecté à votre espace client :

  • Cliquez sur « Configuration des domaines »
  • Sélectionnez celui que vous voulez configurer
  • Cliquez sur « DNS » puis « Modifier »
  • Cochez la case « Autre serveurs de noms »
  • Puis entrez les noms de serveurs primaires et secondaires que votre nouvel hébergeur vous aura fournit. (Ils sont du type : NS1.registar.com / NS2.registar.com)


5. Attendre…

La propagation DNS peut prendre jusqu’à 48 heures.

Cela signifie que certains internautes souhaitant se connecter à votre site seront encore redirigés pendant quelques temps vers l’ancien hébergement. Cela est dû au fait que l’adresse IP associée à votre nom de domaine est mis en cache pour une période définie par le TTL (Time To Live) et n’est pas vérifiée à chaque tentative de connexion.

Ainsi, tant que ce TTL n’aura pas été atteint, c’est votre ancien site qui apparaîtra lors de la saisie de votre nom de domaine dans la barre d’adresse du navigateur. Cette mise en cache s’effectuant à tous les niveaux du réseau, il se peut que vous accédiez à la nouvelle version de votre site alors qu’un internaute utilisant un autre fournisseur d’accès ou étant situé dans une autre zone géographique soit dirigé vers l’ancienne.

La meilleure façon d’être sur que tous les visiteurs accède à votre nouveau site est de vérifier les logs de vos serveurs. Lorsque vous êtes assuré que tous vos lecteurs ainsi que les robots tels que Googlebot, Slurp (le robot de Yahoo!), et les autres sont dirigés vers votre nouvel hébergeur, vous pouvez supprimer l’ancienne version de votre site sans aucun risque.

Voilà, c'est fini. Vous pouvez continuer à blogger sereinement.

Mise à jour :

Après ce transfert, quelques petits problèmes sont apparus, ceux qui ont souhaité écrire un commentaire s'en sont aperçu... Le problème venait de la structure des tables modifiées lors de l'export de la base semble t-il, la partie :

CREATE TABLE `dc_post` (
   `post_id` int(11) NOT NULL auto_increment,

ayant été remplacée par :

CREATE TABLE `dc_post` (
  `post_id` int(11) NOT NULL default '0',

N'étant pas un guru de MySQL, je n'ai pas trouvé d'autre solution que de faire les modifications à la main dans un éditeur de texte. Sans doute pas la meilleure manière de faire, mais ça semble fonctionner :) .