Transférer une base de données d'un serveur à un autre nécessite une exportation depuis le premier serveur, puis une importation sur le second.

Cela se fait de la même manière que le serveur soit local ou distant, la seule différence étant que sur serveur distant, c'est en général l'hébergeur qui détermine le nom de la base.

ATTENTION : si vous voulez utiliser JoomlaPack, il est inutile d'essayer de suivre cette procédure. En effet, vous devez savoir que JoomlaPack remplace les préfixes des tables de la base par le caractère "#", permettant ainsi de changer ce préfixe lors d'une restauration, d'où l'impossiblité de restaurer directement la base avec phpMyadmin sans modifier préalablement le fichier SQL pour remettre le préfixe voulu.

Cette procédure peut bien entendu s'appliquer pour effectuer des sauvegardes et des restaurations de base sur un site de test ou de production.

L'exportation :

Vous allez ouvrir phpMyadmin pour exporter la base de données. La manière de le faire dépendant de votre serveur ou hébergeur, je ne m'y arrêterai pas.

Dans le cas où vous auriez accès à la gestion de plusieurs bases depuis la page d'administration, veillez à sélectionner la base utilisée par votre site, afin de faire apparaître la liste de ses tables dans la fenêtre centrale.

selection_base

exporter1_base

Cliquez sur "Exporter".

Sur la page suivante, veillez à sélectionner toutes les tables correspondant à votre site.

Vous allez ensuite cocher "DROP TABLE" afin que d'anciennes tables de même nom puissent être supprimées lors d'une nouvelle importation, ce qui évite de devoir le faire manuellement.

L'export en compatibilité MYSQL40 n'est pas obligatoire, mais parfois nécessaire.

Vous pouvez récupérer le contenu de la base sous forme de fichier texte, éventuellement comprimé, en validant la case "transmettre" et si besoin un mode de compression.

En donnant au nom du fichier le format suivant "__DB___%y%m%d_%H%M" (sans les guillemets), il portera le nom de la base et sera horodaté, ce qui est pratique pour conserver une sauvegarde de votre base.

exporter2_base

Lorsque vous aurez correctement paramétré ces options, cliquez sur "Exécuter" : si vous n'avez pas coché "transmettre", le texte de sauvegarde sera affiché à l'écran, il vous faudra alors le copier pour le réutiliser ultérieurement ; si vous avez coché "transmettre", vous aurez simplement à sauvegarder sur votre ordinateur le fichier correspondant.

Le temps de création de ce document dépend de l'importance de la base, soyez patient si elle est lourde.

Importation :

Exécutez phpMyadmin sur le serveur de destination.

Si votre base n'existe pas, créez-la.

Chez un hébergeur, la procédure est variable et se fait en général depuis l'administration de l'espace-client.

En local, cela se passe directement dans l'administration des bases :

creation_base

Je conseille les paramètres apparaissant dans l'image ci-dessus, le nom de votre base remplaçant bien entendu le nom choisi pour l'exemple, à savoir "manouvellebase".

Une fois la base créée, elle va apparaître dans la liste de la colonne gauche. Cliquez sur son nom pour faire apparaître ce que montre l'image ci-dessous:

creation2_base

Vous allez alors cliquer en haut de la colonne sur l'icône "SQL" située à côté de la peite maison symbolisant le retour à la page principale.

Une nouvelle fenêtre va s'ouvrir :

importation1_base

Si vous avez gardé votre sauvegarde sous forme de texte complet (et non de fichier), copiez directement ce texte dans la zone de saisie de cette fenêtre ; si vous avez un fichier, éventuellement comprimé, cliquez sur "importe les fichiers", puis sur "parcourir" pour pouvoir choisir le fichier à transférer . Cliquez ensuite sur "Exécuter".

Selon la taille de ce fichier, le temps de transfert et d'importation sera plus ou moins long.

La fenêtre principale vous montrera alors le nombre de tables importées, ce qui conclura l'importation.

importation2_base

Incidents connus :

  • à noter qu'il arrive qu'une erreur apparaisse parfois chez OVH lors du rafraîchissement de cette fenêtre, mais c'est sans conséquence sur l'importation elle-même
  • il arrive également que les accents soient mal interprétés, voire que certains textes soient tronqués lors de l'importation, dès le premier caractère spécial rencontré : dans ce cas, reprenez votre sauvegarde, éditez-la avec un éditeur simple (bloc-notes de Windows et surtout pas Wordpad ou Word), afin de pouvoir enregistrer le texte en UTF8, puis faites de nouveau l'importation, le texte devrait alors être correctement récupéré.
  • il peut arriver, en local, que le temps de traitement soit trop long et que l'opération avorte : dans ce cas, il faut soit tronquer la sauvegarde en plusieurs fichiers de taille moindre, soit modifier php.ini afin d'augmenter ce temps de traitement
  • si vous avez utilisé un gestionnaire de téléchargement tel que Docman ou Remository et choisi d'enregistrer les documents dans la base, vous êtes pratiquement assuré de ne pas pouvoir exporter et importer la base, commpte tenu de son volume et du temps de traitement de ces données : dans ce cas, vous pouvez exclure à l'exportation la table contenant ces données de type "blob", mais vous n'aurez donc plus accès à ces documents.

La procédure pour les sites Joomla! 1.5 et 1.6 diffère légèrement de celle d'un site Joomla! 1.0 mais reste simple : elle est détaillée ci-après.

Pour ce faire,

  • par votre client ftp, vous récupérez tous vos fichiers présents chez votre hébergeur dans le répertoire contenant Joomla!, si le site est déjà en ligne (si vous avez paramétré en local, vous les avez déjà...)
  • toujours par ce client ftp, vous envoyez tous ces fichiers vers le nouveau répertoire distant, sans le fichier ".htaccess", à moins que l'hébergeur soit le même et que vous fassiez seulement un changement de pack d'hébergement chez lui
  • téléchargez le fichier MoovJla (zippé) : décompressez-le sur votre ordinateur, puis envoyez "MoovJla.php" à la racine de votre site
  • récupérez par phpMyadmin (je ne détaille pas la manière d'y accéder qui varie d'un serveur à l'autre) une sauvegarde de votre base de données, locale ou du premier hébergeur : dans la fenêtre de phpMyadmin, cliquez sur le nom de la base pour que la liste des tables apparaisse dans la fenêtre de droite, puis cliquez sur "Exporter" (il faut exporter les tables -structure et contenu-, mais pas la base dans son intégralité) ; dans la fenêtre suivante, sélectionnez toutes les tables de votre site Joomla!, puis cochez les cases "Structure", "DROP TABLE", "Données", "Insertion données complètes" et éventuellement la ligne de compatibilité "MYSQL40" (il vaut mieux que la base de destination soit en MySQL 5, cette compatibilité n'étant alors plus nécessaire), avec un export comprimé en zip ou gz, ce qui permet d'enregistrer le fichier sur votre ordinateur, plus facile à réutiliser,
  • chez l'hébergeur destinataire, vous faites l'opération inverse : vous ouvrez phpMyadmin, puis la base dont vous disposez, et vous cliquez sur "Importer", "Parcourir" ; vous sélectionnez le fichier précédent et vous importez. Au cas où le fichier serait trop gros, il vous faudra peut-être le décompresser et importer le code sql par petites portions, ce qui est assez fastidieux, mais dans la plupart des cas, il n'est pas nécessaire d'en arriver là.
  • la dernière étape consiste
    • d'une part en la mise à jour éventuelle d'un fichier .htaccess,
    • d'autre part en la correction des informations du fichier configuration.php :
      • saisissez l'url de votre site, suivi de "MoovJla.php" (sans les guillemets mais séparé de l'URL par "/") et validez : la page de paramétrage apparaît, comportant deux sections :
        • la première correspond aux caractéristiques de connexion à la base de données, qui doivent maintenant être remplies avec celles de votre nouveau serveur (informations fournies par votre hébergeur).
          • Serveur = serveur de base de données
          • User = nom d'utilisateur
          • Base de données = nom de la base de données
          • Mot de passe = mot de passe lié au nom d'utilisateur de cette base
        • la seconde affiche automatiquement les informations concernant le chemin d'accès aux répertoires "logs" et "tmp" : vous ne devriez pas avoir besoin de les modifier.

Validez les informations saisies et testez le site.

Une fois que vous avez constaté que le site est fonctionnel, supprimez MoovJla.php en cliquant sur le bouton adéquat.

OVH propose une installation automatique de Joomla! par le biais de ce qui y est appelé un "module" (et qui n'a rien à voir avec la notion de module pour Joomla!)

En contrepartie de la simplicité de cette procédure, il faut noter deux inconvénients, dont l'un majeur :

  • la procédure d'installation propose d'installer dans un répertoire, par défaut "joomla" éventuellement suivi du numéro majeur de version (1.5 par exemple) : ainsi, le site ne sera accessible que par l'adresse du site suivie de ce nom de répertoire
  • surtout, la procédure utilise une base de données hors de portée du gestionnaire de base "phpmyadmin.ovh.net" et contraint à installer soi-même PhpMyAdmin et le paramétrer, ce qui n'est pas si simple, si on veut pouvoir gérer correctement la base, notamment pour en faire une sauvegarde et surtout une restauration en cas de problème.

Je désapprouve et déconseille donc fortement l'utilisation de cette installation automatique.

Si malheureusement vous l'avez effectuée, il vous reste donc deux solutions :

  • installer phpMyAdmin et paramétrer son fichier "config.inc.cfg" afin de lui donner les noms de l'hôte (serveur), de la base et de l'utilisateur, ainsi que le mot de passe d'accès à la base de données, toutes informations que vous trouverez dans le fichier "configuration.php" créé à la racine du site par l'installation de Joomla!
  • deuxième solution que je trouve beaucoup plus intéressante : rapatrier le contenu de la base inaccessible pour l'importer dans une base OVH ! Pour celà, il va falloir dans un premier temps se donner les moyens d'accéder à la base pour en obtenir une copie. Ensuite, il faudra s'assurer qu'une base est disponible avec le compte d'hébergement, puis y importer la sauvegarde. Enfin, il restera à corriger les informations d'accès à cette base dans le fichier "configuration.php" :
    1. Récupération d'une sauvegarde de la structure et des données de la base "cachée" : pour celà, un plugin de sauvegarde est particulièrement pratique (et pourra servir ultérieurement pour des sauvegardes régulières), il s'agit de LazyDbBackup, téléchargeable ici. Une fois installé, il faut le paramétrer en lui donnant au minimum une adresse d'expédition d'un mail avec le fichier de sauvegarde (ou déscativer l'envoi du mail pour récupérer directement le fichier de sauvegarde sur le site), de publier le plugin et de cliquer sur "Appliquer". Une sauvegarde sera immédiatement effectuée.
    2. On s'assure qu'une base liée au compte d'hébergement est disponible, on y accède par PhpMyAdmin (phpmyadmin.ovh.net) et on importe le fichier précédemment obtenu.
    3. On modifie le fichier de configuration, soit avec un éditeur de texte standard type bloc-notes, soit avec un outil tel que notepad++ (ou leur équivalent sous Mac), pour remplacer les informations concernant l'ancienne pase par celles de la nouvelle*, on enregistre en UTF8-NO BOM et on teste le site. Autre solution : utiliser MoovJla pour saisir les nouvelles informations et les enregistrer directement sur le serveur.

* les variables à modifier sont $host (le serveur),  $user (nom d'utilisateur), $password (mot de passe) et $db (nom de la base de données)

Vous avez préparé votre site en local et vous voulez le mettre en ligne chez votre hébergeur ? Vous changez d'hébergeur et vous ne voulez rien perdre de votre site ?
La procédure pour les versions 1.0 de Joomla! est simple et détaillée ci-après.

Pour ce faire, vous allez dans tous les cas utiliser la même séquence :
  • par votre client ftp, vous récupérez tous vos fichiers présents chez votre hébergeur dans le répertoire contenant Joomla!, si le site est déjà en ligne (si vous avez paramétré en local, vous les avez déjà...)
  • toujours par ce client ftp, vous envoyez tous ces fichiers vers le nouveau répertoire distant, sans le fichier ".htaccess", à moins que l'hébergeur soit le même et que vous fassiez seulement un changement de pack d'hébergement chez lui
  • vous enverrez également, à la racine du site, le fichier moovla.php (pour cette version 1.0)
  • vous récupérez par phpMyadmin (je ne détaille pas la manière d'y accéder qui varie d'un cas à l'autre) une sauvegarde de votre base de données, locale ou du premier hébergeur : dans la fenêtre de phpMyadmin, cliquez sur le nom de la base pour que la liste des tables apparaisse dans la fenêtre de droite, puis cliquez sur "Exporter" (il faut exporter les tables et leur contenu, mais pas la base dans son intégralité) ; dans la fenêtre suivante, sélectionnez toutes les tables de votre site Joomla!, puis cochez les cases "Structure", "DROP TABLE", "Données", "Insertion données complètes" et éventuellement la ligne de compatibilité "MYSQL40" avec un export comprimé en zip ou gz, ce qui permet d'enregistrer le fichier sur votre ordinateur, plus facile à réutiliser,
  • chez l'hébergeur destinataire, vous faites l'opération inverse : vous ouvrez phpMyadmin, puis la base dont vous disposez, et vous cliquez sur "Importer", "Parcourir" ; vous sélectionnez le fichier précédent et vous importez. Au cas où le fichier serait trop gros, il vous faudra peut-être le décompresser et importer le code sql par petites portions, ce qui est assez fastidieux, mais dans la plupart des cas, il n'est pas nécessaire d'en arriver là.
  • la dernière étape consiste d'une part en la mise à jour éventuelle d'un fichier .htaccess, d'autre part en la correction des informations du fichier configuration.php :
    • utiliser moovla.php est la solution idéale ! appeler l'url de votre site suivie du nom du fichier (monsite.tld/moovla.php) vous ouvre une fenêtre dans laquelle le chemin d'accès aux fichiers a été automatiquement récupéré ; il ne vous reste qu'à donner les bonnes informations concernant la base de données puis à enregistrer et tester avant de demander la suppression de ce fichier

Vous avez changé de nom de domaine, mais intégralement conservé la partie de l'adresse des pages qui suit ce nom de domaine, et vous ne voulez pas utiliser les services de votre registrar pour rediriger le visiteur : vous pouvez alors forcer automatiquement la réécriture de toutes les anciennes adresses vers les nouvelles, en une seule ligne de code à placer dans un .htaccess situé à la racine de l'ancien site.

Exemple :
Redirect permanent / http://www.monnouveaunomdedomaine.tld/

L'avantage par rapport à une redirection 301 depuis le registrar est de pouvoir si besoin ajouter des lignes supplémentaires pour des cas particuliers de pages qui auraient changé d'adresse lors de cette modification.