• 01.jpg
  • 02.jpg
  • 2bf13888241103107135f650bf2cd07c.jpg
  • 03.jpg
  • 4cfb670a02bac010dc6e0e6dd2247b47.jpg
  • 7d2363555950844336f950dc8ee2f556.jpg
  • 408ba23658fe50045db555c95cad8648.jpg
  • a12cacb75dde9d647a2aff63492697de.jpg
  • ba297b403f5401bb5df9d2f3ba93b37a.jpg
  • c36aa121a75cfbfcbea35a4c088c0408.jpg
  • d7c3c27694a492e03cb9d04b949b8d09.jpg
  • fd4c9630a2df4a2a9db303362b33d8ee.jpg
  • joomla.jpg

Oh que c'est compliqué!
Chaque fois que je refais la procédure, je trouve de petites fautes et de choses à améliorer, voire et à mieux expliquer.


Attention à l'interclassement et à la vérification que le fichier export de la base de données est complet. 

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 ne travaillerons alors que chez notre hébergeur.
Mais cela pourrait aider pour essayer des variations dans la présentation ou de nouveaux plugins ou versions!

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 :

Nettoyage de notre base de donnée

Avant de procéder à l'importation dans un fichier SQL, il est recommandé de procéder à un nettoyage de notre base de données.
De cette manière le fichier à importer sera moins conséquent et passera plus facilement (voir ci-dessous)!
Le document à consulter: Gain d'espace dans une base de données

Importer 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

Suivant les héberheurs, OVH pour moi, on pourra utiliser la sauvegarde journalière de notre base de données.

Pour les personnes intéressées, j'ai aussi fait la même procédure chez Infomaniak


On se rend sur Hébergement, le nom de son site (boichat.ch pour moi) et sur la ligne de mon site les 3 petits points dans le cercle, et utiliser Créer une sauvegarde en indiquant les paramètres demandés
On reçoit un email de confirmation et choisirons le téléchargement dans le répertoire Téléchargement chez moi.

Sinon cela 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 chercher un peu et tâtonner pour le transfert sur notre PC!
La procédure ici a été décrite avec mon site OVH. L'outil se nomme "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 (octobre 2022: plus trouvé où, désolé).

Merci à Sylvain pour la remarque dans le cas où nous sommes obligés de scinder la requête en plusieurs, pour éviter de dépasser les limites du serveur. 
Il faudra alors chercher un peu sur le Web et cela pourrait aussi dépendre de la version de phpAdmin utilisée. Ici quelques liens:
https://docs.phpmyadmin.net/fr/latest/import_export.html#id3
http://www.devnetwork.net/viewtopic.php?f=2&t=117574
https://www.pqinternet.com/wordpress/handling-huge-mysql-database-table-exports-imports-backups/

Il faudra peut-être jouer avec par exemple dans php.ini:

max_execution_time = 120
max_input_time = 120
memory_limit = 512M
post_max_size = 64M


On pourrait aussi couper le fichier en plusieurs morceaux, entre deux blocs SQL.
On copiera les instructions en haut et en bas du fichier d'origine dans les moreceaux suivants.


J'ai indiqué pour le "Jeu de caractères du fichier :" utf-8.

Le fichier de base de données est créé assez rapidement.
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.
Tout en bas on y trouvera un COMMIT; et quelques /*!40101 SET ...
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 WinSCP ou Core FTP nous irons récupérer les trois répertoires de notre hébergeur :

  • 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.

Exporter 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 à phpMyAdmin 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.

En utilisant phpMyAdmin sur OVH nous pourons identifier ce utf8_general_ci qui va suivre à droite de chaque table sous Collation.

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 dans ce cas (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.
Attention, si jamais: On décochera aussi, Permettre l'interruption de l'importation si la limite de temps configurée dans PHP est sur le point d'être atteinte. (Ceci pourrait aider à importer des fichiers volumineux, au détriment du respect des transactions.)

La petite roue à côté de Parcourir et le bruit du disque nous indique que l'importation est en cours.

En cas de difficulté et de grosses bases de données la procédure qui suit 

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 phpMyAdmin les deux champs siteurl et home dans la table wp_options 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 = '...';

Attention à ces deux derniers: ce sont ceux de la base de données sur le PC, en principe différents de ceux de notre hébergeur.
Sur un PC on utilise volontiers root / (vide).
Il m'est arrivé de tourner en rond avec un messageWarning: session_start(): Failed to read session data: user (path: ... 
Wordpress montre mieux que la connexion ne se fait pas correctement ... par notre faute. 

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 m'est arrivé 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 sauvegardes sur un disque USB externe!