Copier un site WordPress vers une autre machine

Logo WordPressLe site de mon entreprise est basé sur WordPress et hébergé sur un serveur dédié chez Online. Aujourd’hui j’ai voulu en faire une copie sur ma station de travail pour expérimenter un peu avec la mise en page. L’opération 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 déménager un site WordPress, mais dans ce cas, je pense que ce n’est pas une mauvaise idée de savoir s’y prendre manuellement. J’ai décidé de prendre des notes cette fois-ci, étant donné que ce n’est pas la première fois que je me retrouve confronté à ce genre de situation.

Copier un site WordPress

Dans l’exemple ci-dessous, le site distant https://www.microlinux.fr est hébergé sur la machine publique alphajet.microlinux.fr. Je souhaite le rapatrier sur ma station de travail alphamule.microlinux.lan, et il sera accessible à l’adresse https://microlinux-site.alphamule.microlinux.lan. Notez que pour la démonstration, j’ai choisi le nom “court” microlinux-site.alphamule afin d’éviter des commandes à rallonge et des lignes trop longues. Dans la réalité, il vaut mieux fournir le FQDN, c’est-à-dire microlinux-site.alphamule.microlinux.lan.

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 sur la machine publique.
  2. Copier la sauvegarde MySQL sur la machine locale.
  3. Créer la base MySQL locale.
  4. Importer la sauvegarde vers la base locale.
  5. Copier l’arborescence du site vers l’hébergement local.
  6. Définir les permissions comme pour l’installation.
  7. É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://www.microlinux.fr |
| siteurl     | https://www.microlinux.fr |
+-------------+---------------------------+

2 rows in set (0.00 sec)

mysql> update wp_options
 -> set option_value = 'https://microlinux-site.alphamule'
 -> where option_name = 'home'
 -> or option_name = 'siteurl';
Query OK, 2 rows affected (0.01 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://microlinux-site.alphamule |
| siteurl     | https://microlinux-site.alphamule |
+-------------+-----------------------------------+

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://www.microlinux.fr',
 -> 'https://microlinux-site.alphamule');
Query OK, 31 rows affected (0.00 sec)
Rows matched: 297 Changed: 31 Warnings: 0

mysql> update wp_posts
 -> set post_content = replace ( post_content,
 -> 'https://www.microlinux.fr',
 -> 'https://microlinux-site.alphamule');
Query OK, 26 rows affected (0.02 sec)
Rows matched: 297 Changed: 26 Warnings: 0

mysql> update wp_postmeta
 -> set meta_value = replace ( meta_value,
 -> 'https://www.microlinux.fr',
 -> 'https://microlinux-site.alphamule');
Query OK, 23 rows affected (0.01 sec)
Rows matched: 577 Changed: 23 Warnings:

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

Copie d'un site WordPress

Ce contenu a été publié dans CentOS, Documentation Microlinux, Hébergement, avec comme mot(s)-clé(s) , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

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