Le brief

On a un site #1 créé avec le moteur de CMS WordPress sur un serveur A. On veut l’intégralité du site #1 sur un serveur B.

Comment faire pour avoir une copie miroir des fichiers du sites, de WordPress et de la base de données ?
Sur le Web, un site miroir est une copie exacte d’un autre site web. A la suite, vous découvrirez comment faire un mirroir de votr site WordPress.

Le dump

La première chose a faire est de faire un dump de la base de données du site #1. Selon votre hébergeur, on fait la demande via l’interface de gestion de notre hébergement en ligne. On peut le faire via PHPMyAdmin mais si la base de données est trop grosse, il y a risque que le temps d’exécution soit trop long, ou que le dump obtenu ne soit pas complet.

« Dans le cas des bases de données on parle indifféremment de dump ou de sauvegarde, que l’on conserve ou non la définition de la structure des données. Dans la majorité des cas des bases utilisant le langage SQL, la sauvegarde est constituée d’un ensemble d’instructions d’insertion au format SQL » Dump Wikipédia

On obtient un fichier .sql ou .dump de la base de données, ça c’est fait.

Le contenu du dump

On ouvre ce fichier dump, et on peut voir que tout le contenu du site #1 et du WordPress est présent. On a les tables natives de WordPress préfixé de wp_ (ou préfixe personnalisé pour par sécurité). On a donc wp_post, wp_users. Voir schéma.

Schéma des Tables de données -WordPress

Il se peut que le dump contient d’autre Tables de données, des Tables créés lors d’une installation d’un ou plusieurs plugins. Généralement, la Table est reconnaissable par le nom du plugin ou ses initiales.

Là on se rend compte que le dump affiche des lignes avec l’adresse du site du serveur A. Il va falloir changer toutes ces valeurs par l’adresse du serveur B.

Dans ce cas de figure, notre bon Notepad++ et son bien utile rechercher-remplacer ne nous aidera pas. Car la modification de l’adresse par cet outil va entrainer la perte de la possibilité d’avoir un site WordPress identique, une copie mirroir. En effet WordPress voit l’adresse du serveur (le nom de domaine) et lui attribue un identifiant. Si change l’adresse, alors l’identifiant change. WordPress va re-initialisé les paramètres du Thème et on aura que la copie des données. C’est déjà ça, mais quand on a menu assez long ou des widgets en place, il faudra les refaire. Et si on ne connait pas le site, on ne pourra pas vraiment le refaire a l’identique.

Donc il faut un autre moyen. Et le seul que je connais, je l’ai de découvert en 2012. C’est un script rechercher-remplacer qui sauvegarde l’identifiant, et n’altère pas la base de données. WordPress retrouve ainsi tout ces paramètres. Liens et explication du script Search Replace DB, à la suite.

Revenons a la méthode. Apres avoir notre dump de quelques dizaines de Mo (ou centaine), nous allons le transférer sur le serveur B. (Upload par transfert FTP). Hop, il est dans le dossier www. On upload le script magique.

Maintenant, il faut peupler la base de données vide du serveur B, avec le dump. On créé une base via le manager de notre hébergeur. Puis, on importe le dump du serveur A. On remplacera après avec le script magique, les adresses. Pour importer le dump, il faut se référer au manuel de notre hébergeur. Chez OVH, il y a petit script pour ça. Sinon, le script bigdump peut bien aider ou mieux encore : le manuel de l’hébergeur.

Dans les deux cas, on upload ce script qui contient une instruction d’action, les identifiants et mot de passe du serveur de base de données du serveur B et le nom de la base, crée pour le serveur B. On actionne ce script, en l’appelant par son chemin et son nom avec notre navigateur web habituel. Et il va agir, puis il informe qu’il a fini. Donc notre dump a rempli la base de données. Il y a donc toujours l’ancienne adresse. Il faut donc la changer.

Transférer le nouveau WordPress

Mais avant, on transfert les dossiers de WordPress, le thèmes, les plugins, les media, les images, soit tout le dossier wp-content. On upload. Puis on transfert les dossiers du moteur de WordPress soit le wp-includes et le wp-admin. On transfert les fichiers wp-blabla*etc.php dans le dossier www du serveur en ligne. Maintenant on s’occupe du fichier wp-config.

On reprends le même que celui sur serveur A, on modifie 4 valeurs, avec Notepad++ ou un éditeur de texte avec coloration de syntaxe, en UTF-8 (SANS BOM). et on le transfert.

Transférer le nouveau wp-config.php

On édite uniquement sur le contenu des define
define('DB_NAME', 'ndlb');
// ndlb =pour= nom-de-la-base-de-donnee créée precedement, dans PHPMyAdmin, en local.
// ndlb =pour= nom-de-la-base-de-donnee créée precedement, dans le manager sur votre Hébergeur, en ligne

define('DB_USER', 'root');
// pourquoi root car cest le nom donné par PHPMyAdmin du User, en local.
// cest le nom donné par vous dans le manager sur votre Hébergeur en ligne, chez OVH il est de type : ndlb-*
// ndlb-* = ndlb suivi de 3 à 6 lettres donnés par vous dans le manager chez OVH en ligne.

define('DB_PASSWORD', 'root');
// pourquoi root car cest le mot-de-passe donné par PHPMyAdmin par défault. Il est root OU vide.
// Pour ecrire vide, en language serveur PHP, on écrit deux quotes anglaises soit  » (deux apostrophes touche 4 du clavier)

define('DB_HOST', 'localhost');
// pourquoi localhost car c’est le nom d’hote en local. ou 127.0.0.1 (change selon configuration PC local)
// c’est de type mysql51-***.offre che OVH, *** pour le numéro serveur attribué et offre pour perso ou pro ou autre.

Le script magique

« Lorsque vous migrez WordPress (ou toute autre plate-forme en utilisant des chaînes de PHP sérialisé dans la base de données) entre les domaines, vous devez utiliser une recherche sécuritaire et remplacer la méthode qui préserve l’intégrité des longueurs de chaîne sérialisée. Un simple d’un fichier de sauvegarde pour http://localhost, par exemple, http://thenewdomain.com est problématique parce que la longueur des chaîne changent mais les index pour les chaînes sérialisées ne fonctionne pas.. Par conséquent réglages sont perdus et widgets disparaissent. Pas bon. » Traduit de l’anglais WordPress (and others) Search and Replace Tool

Maintenant on va pouvoir utiliser le script magique (Search Replace DB, voir WordPress (and others) Search and Replace Tool). On l’appelle via notez navigateur grâce a son nom et son chemin d’accès. Il demarre, et une page web s’ouvre. Il demande s’il peut utiliser le wp-config. Puis le script remplis le formulaire avec les valeurs du wp-config. Ok.

Il demande alors quel valeur est a remplacer. On écris l’ancienne adresse puis la nouvelle (ou autre valeur à remplacer).

On écris alors la valeur ancienne et la nouvelle valeur à remplacer. Exemple :
http://localhost/example/ par http://www.example.com/ ou selon WAMP,
http://127.0.0.1:4001/wordpress/ par http://www.example.com/ (ou example est le nom du domaine final)
ou bien si c’est d’un site en ligne vers un autre site en ligne
http://www.example A.com/ par http://www.example B.com/ (adresse sans espace et en minuscule)

On valide. Et le changement se fait. Il y a plus qu’à accéder au site #2. Et on retrouve le site et WordPress dans le même état.

On entre dans l’admin de WordPress (le Tableau de Bord). Avec le même identifiant et le même mot de passe. Puis, il faut se rendre dans Réglages Permaliens. et choisir une structure en accord avec votre stratégie de contenu. et s’y tenir. WordPress va alors créer un .htaccess ou trouver celui qui est présent dans www/ et ajouter ses instruction de réécriture de liens conformément à la structure choisi. (Ici, c’est les adresse URL des pages web).
Mettez la même structure de liens. Pour retrouver vos pages web avec les bons liens URL.

Une fois l’opération effectué et les vérification d’usage. On renomme le script et on ne le laisse pas sur le serveur accessible, ou on le supprime !