Oh que c'est compliqué!

Chaque fois que je refais la procédure, je trouve de petites choses à améliorer et à mieux expliquer.
Désolé pour les lecteurs précédents: il y avait de nombreuses fautes, où j'avais par exemple croisé en fin d'article Joomla et Wordpress!
Attention à l'interclassement et à la vérification que le fichier export de la base de données est complet. 

J'avais déjà écrit un article un mai 2016, mais celui-ci est différent, plus général, mais plus précis et mis à jour en premier.
Je travaille un peu autrement et c'est normal avec les années, l'expérience et aussi avec mes deux autres sites Wordpress intégrés.

Généralités

Lorsque nous serons devenus familier avec Joomla ou/et Wordresss, nous ne nous amuserons plus à faire de petits essais sur un PC et nous travaillerons alors que directement chez notre hébergeur. Après quelques semaines intensives de travail, d'adaptations et de corrections, il faudrait tout de même faire une sauvegarde et savoir si nous serions capable de la récupérer. Nous allons donc montrer ici une récupération qui s'est bien passée.

Considérons le cas suivant :

Exporter de notre hébergeur

 Nous devrons commencer par les quatre procédures suivantes :

  • reprendre la base de donnée dans un fichier sql, par exemple db_date.sql

Ceci se fera avec phpAdmin, depuis l'interface Web que notre fournisseur d'accès nous aura fourni et la base de données correspondant à notre ou nos sites. Suivant l'hébergeur, il faudra sans doute chercher un peu et tâtonner pour le transfert sur notre PC! La procédure ici a été décrite ici avec mon site OVH. L'outil se nomme sans doute "Exportation des tables depuis la base de données" avec l'option personnalisée. La base de données sera accessible en indiquant son mot de passe. Dans phpAdmin, c'est l'onglet Exporter (on exporte depuis!). Ensuite j'ai coché "Personnalisée, afficher toutes les options possibles" et non "Rapide".

Nous noterons l'interclassement de la base de données des trois sites, qui est ici utf8_general_ci, sans doute celle, définie lors de la première installation initiale, c'est à dire celle de Joomla.

Nous ne cocherons pas l'option Create Database qui ne sera pas ajoutée dans le fichier db_date.sql.
Si nous ne savons pas comment faire, ou l'avons oublié, il suffira d'effacer avec Notepad++ (voir ci-dessous) les deux lignes associées en début de fichier.
La raison est la création de la base de données avec un interclassement spécifique, c'est à dire utf8_general_ci dans mon cas.

Attention à la "Taille maximale de la requête générée": je l'ai fait passée de 50'000 à 5'000'000 pour ne pas avoir un fichier tronqué et impossible à importer. J'ai indiqué pour le "Jeu de caractères du fichier :" utf-8.

Ensuite on ouvrira la sauvegarde sur le PC, avec par exemple Notepad++ (https://notepad-plus-plus.org), mon éditeur favori pour des adaptations délicates (voir ci-dessous), pour vérifier qu'il ne manque pas une partie des données SQL en fin de fichier.
En général on oublie de le faire et on constatera une erreur d'importation qu'on pourrait faussement attribuer à une erreur de définition d'interclassement. 

Avec un client FTP, par exemple Core FTP nous irons récupérer les trois répertoires :

  • récupérer le site complet joomla;
  • le site wordpress1;
  • le site wordpress2.

Il peut arriver que nous ayons, comme moi-même, d'autres répertoires Web qui ne sont ni associés à Joomla, ni à Wordpress, par exemple des fichiers pdf ou familiaux.
Nous transférerons donc aussi ces fichiers pour sauvegarde.
Le transfert des tous ces fichiers prendra vite une bonne heure, suivant la bande passante d'Internet. Donc patience.  

Comme nous copions les répertoires et que nous importons la base de données, il est inutile de noter les versions de Joomla et Wordpress, car c'est implicite.
Nous assumerons qu'un serveur Xamp ou similaire est installé sur notre PC (par exemple dans D:\wamp64\www) et qui peut être rendu actif. Nous ne décrivons pas l'installation pour l'instant.

Il est pratique de créer un sous-répertoire sur notre PC pour y inclure le fichier db_date.sql et les répertoires correspondant aux sites téléchargés.

Importer sur notre PC

Nous allons copier ce matériel retiré par FTP dans trois répertoires, ici joomla, wordpress1 et wordpress2.
Si ces répertoires existent déjà nous les déplacerons en sauvegarde et de préférence zippé, car cela prend beaucoup de place.
Nous aurons donc par exemple, pour un des répertoires, D:\wamp64\www\wordpress1, avec tous les fichiers Wordpress équivalent à notre hébergeur sous wordpress1.

Pour la suite, attention d'utiliser un bon éditeur, Notepad++ par exemple, pour éditer nos fichiers. Il nous est arrivé de grosses surprises en corrigeant un wp-config.php avec un éditeur Windows standard et de le transférer sur notre site. 

A présent il nous faut déterminer le nom de la base de données! Le plus facile est de consulter sur leurs racines wp-config.php pour Wordpress ou configuration.php pour Joomla. Nous y trouverons respectivement

define('DB_NAME', 'unnomjoomla');

public $host = 'unnomjoomla.mysql.db';

Nous pouvons à présent accéder à phpAdmin de notre base de données mySQL associée. Chez moi c'est Xamp avec http://127.0.0.1/phpmyadmin/ après avoir entré l'utilisateur et le mot de passe.
Si nous avons déjà cette base de données unnomjoomla dans mySQL, nous la renommerons avec un nom significatif avec l'ancienne date par exemple. Pour cette opération et la création d'une nouvelle base de données, c'est l'onglet Opérations en principe, après sélection à gauche de cette BDD.

Nous pourrions toujours déjà essayer un http://127.0.0.1/wordpress1/ et recevrions un "Erreur lors de la connexion à la base de données", c'est normal.

Nous devons ensuite créer une nouvelle base de données (sélection en haut à gauche) avec le nom correspondant à unnomjoomla et utiliser l'interclassement utf8_general_ci que nous espérons être correct (bouton Créer).
Cette nouvele base de données sera dans la liste à gauche.

Nous irons dans phpAdmin sous l'onglet Import, choisirons le fichier db_date.sql (ou autre nom bien significatif) précédemment exporter de notre hébergeur. Le jeu de caractère sera UTF-8. Le bouton "Exécuter" devrait faire le travail.
La petite roue à côté de Parcourir et le bruit du disque nous indique que l'importation est en cours. 

Adapter la configuration pour Wordpress 

L'étape suivante pour wordpress1 et 2 est de corriger le fichier de configuration wp-config.php avec Notepad++.

Il faudra alors modifier

  • l'utilisateur DB_USER,
  • le mot de passe DB_PASSWORD de la base de données pour que cela corresponde à notre PC, (les deux mêmes qu'avec le login phpAdmin)
  • en local : define('DB_HOST', 'localhost');

Il faudra encore modifier avec phpAdmin les deux champs url et home DANS LA TABLE wp_option pour qu'il pointe correctement sur http://127.0.0.1/wordpress1. 
Nous devronc donc modifier ces deux premiers champs de la table wp_options.
Attention! L'extension wp_ est définie dans le fichier wp-config.php et nous ne l'avons pas touché dans ce dernier, c'est logique. 
Il correspond à notre installation faite chez notre hébergeur. Il sera sans doute différent et doit l'être dans le cas où nous avons deux Wordpress installés sur une seule base de données mySQL avec deux tables **_option.

C'est alors le moment de vérité pour le Worpress installé, ici : http://127.0.0.1/wordpress1/

Si nous avons des difficulté, il faudra déposer un true et le remettre plus tard dans :

define('WP_DEBUG', false);

Adapter la configuration pour Joomla

Pour joomla, c'est plus simple, nous devons modifier avec Notepad++ le fichier configuration.php avec (même user et password que ci-dessus)

public $host = 'localhost';

public $user = '...';

public $password = '...';

Les public $log_path = 'D:\wamp64\www\joomla\logs';
et public $tmp_path = 'D:\wamp64\www\joomla\tmp'; aussi.
Attention au \ ... pas des /.

C'est alors le second ou le troisième moment de vérité pour le Joomla installé, ici : http://127.0.0.1/joomla/

Mettre à jour les versions de Joomla et de Wordpress

Lorsque j'ai terminé les sauvegardes, je mets à jours en principe mes sites et mon PC avec les dernières versions (les extensions aussi).
Comme je suis impatient de nature, il met arriver de bloquer mon site Wordpress sur mon PC avec le message "Indisponibilité temporaire pour cause de maintenance. Veuillez revenir dans un instant" (installation de nouvelles versions d'extension).
Il s'agit alors d'effacer le fichier .maintenance dans le répertoire racine de WordPress.

Je copie aussi toutes ces sauvergardes sur un disque USB externe!