WordPressMon blog technique est actuellement intégré au site de mon entreprise et hébergé sur un serveur dédié chez Online. En deux ans, les articles se sont multipliés, et les pages du site se retrouvent progressivement étouffées par cette masse d’informations qui grandit à vue d’oeil. J’ai donc cherché à aérer la présentation en migrant le blog vers le sous-domaine existant blog.microlinux.fr. Or, ce domaine est déjà occupé par mon ancien blog, qui contient près de deux cents articles écrits entre 2015 et 2018. Avant d’effectuer la migration, j’ai donc créé un domaine oldblog.microlinux.fr dans le but d’archiver ces pages.

La copie d’un site confectionné avec WordPress n’est pas tout à fait triviale, étant donné que le domaine est codé « en dur » dans la base de données. Il ne suffit donc pas de copier l’arborescence de fichiers et la base de données tels quels. Il existe certes un certain nombre de plug-ins pour effectuer une telle opération, mais à mon humble avis, ce n’est pas une mauvaise idée de savoir chasser l’ours à mains nues dans ce cas de figure.

Dans l’exemple ci-dessous, je copie les pages du site existant blog.microlinux.fr vers oldblog.microlinux.fr. La première phase de l’opération est triviale, et je ne rentrerai pas dans les détails.

  1. Faire une sauvegarde de la base MySQL microlinux-blog.
  2. Créer la base MySQL microlinux-oldblog.
  3. Importer la base sauvegardée microlinux-blog vers microlinux-oldblog.
  4. Copier l’arborescence du blog vers l’hébergement oldblog.microlinux.fr en préservant les permissions de fichiers.
  5. Éditer wp-config.php et renseigner les paramètres de la base locale.

À partir de là, je dois opérer une série de modifications dans la base de données, pour remplacer toutes les URL codées « en dur ». La plupart des tutoriels utilisent PHPMyAdmin pour ce genre d’opération. Pour ma part, je préfère le bon vieux moniteur MySQL, qui fait tout aussi bien l’affaire.

La racine du site est fournie dans la table wp_options. Il faudra modifier deux occurrences.

mysql> select option_name, option_value
    -> from wp_options
    -> where option_name = 'home'
    -> or option_name = 'siteurl';
+-------------+----------------------------+
| option_name | option_value               |
+-------------+----------------------------+
| home        | https://blog.microlinux.fr |
| siteurl     | https://blog.microlinux.fr |
+-------------+----------------------------+
2 rows in set (0.00 sec)

mysql> update wp_options
    -> set option_value = 'https://oldblog.microlinux.fr'
    -> where option_name = 'home'
    -> or option_name = 'siteurl';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select option_name, option_value
    -> from wp_options
    -> where option_name = 'home'
    -> or option_name = 'siteurl';
+-------------+-------------------------------+
| option_name | option_value                  |
+-------------+-------------------------------+
| home        | https://oldblog.microlinux.fr |
| siteurl     | https://oldblog.microlinux.fr |
+-------------+-------------------------------+
2 rows in set (0.00 sec)

De manière similaire, on va procéder à un remplacement systématique de l’URL dans les autres tables de la base.

mysql> update wp_posts
    -> set guid = replace ( guid,
    -> 'https://blog.microlinux.fr',
    -> 'https://oldblog.microlinux.fr');
Query OK, 2565 rows affected (0.08 sec)
Rows matched: 3433  Changed: 2565  Warnings: 0

mysql> update wp_posts
    -> set post_content = replace ( post_content,
    -> 'https://blog.microlinux.fr',
    -> 'https://oldblog.microlinux.fr');
Query OK, 1816 rows affected (0.34 sec)
Rows matched: 3433  Changed: 1816  Warnings: 0

mysql> update wp_postmeta
    -> set meta_value = replace ( meta_value,
    -> 'https://blog.microlinux.fr',
    -> 'https://oldblog.microlinux.fr');
Query OK, 1 row affected (0.03 sec)
Rows matched: 3572  Changed: 1  Warnings: 0

À partir de là, on peut se connecter à la copie conforme du site.

Migration WordPress


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Hébergement

2 commentaires

Seboss666 · 2 mars 2020 à 10 h 47 min

Pour les remplacement en base de données, il y a l’excellent utilitaire wp-cli (https://wp-cli.org/) qui permet un boulot bien plus complet, car il permet de prendre en charge les remplacements du domaines dans les données sérialisées (par exemple les paramètres de certaines extensions ou thèmes…)

    kikinovak · 2 mars 2020 à 10 h 53 min

    Merci pour le tuyau. Je ne connaissais pas cette fonctionnalité de wp-cli. Pour ma part, je l’utilise principalement pour automatiser les mises à jour WordPress sur mes serveurs.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *