Blog Joomla!

Comment j'ai migré mon site Joomla! 1.0 (partie 2 : migrer les données)

Index de l'article

Migrer un sites Joomla! consiste à déplacer les données d'une base de données vers une autres bases de données dont la structure est différente. Un simple "copier-coller" ne suffit pas. Cet article décrit la manière avec laquelle j'ai procédé après avoir préparé ma migration.

Créer ses propres plugins de migration

Impossible de trouver un ETL plugin pour ne serait-ce qu'un des composants que j'utilise. Aïe, voilà que cela se corse.Je vais devoir créer ces plugins pour 3 composants dont je souhaite effectuer la migration.

Joomlatools donnent quelques indications sur leur blog (en anglais) , je vais tenter de les suivre.

Tout d'abord, il est nécessaire d'étudier les composants qui sera nécessaire de migrer. Rendez-vous dans le gestionnaire de composant de Joomla! 1.0 et listez les composants, mettez-les à jour avec la version la plus récente et qui correspond à une version identique sous Joomla! 1.5 (à moins que le composant fonctionne en mode Legacy).

 

Gestionnaire de composant sous Joomla! 1.0

Prenons à exemple le composant !JoomlaComment. Via PhpMyAdmin, je repère les tables gérées par le composant : mos_comment, mos_comment_captcha, mos_comment_setting et mos_comment_voting.

Pour chacune de ces tables, je crée un nouveau fichier qui porte nom de la table (comment.php, comment_captcha.php, comment_setting.php et comment_voting.php).

Préoccupons-nous maintenant du contenu de ces fichiers :

À l'intérieur du fichier créez une classe avec le nom de la table, ainsi :

{codecitation}class JoomlaComment_ETL extends ETLPlugin{/codecitation}

Ensuite, j'indique quelle table va migrer :

{codecitation}

     function getAssociatedTable()

    {
        return 'comment';
    }{/codecitation}

Ensuite j'indique les variables de la table à créer. Pour le faire je copie simplement le code contenu dans le fichier .xml du copomsant ou à partir du scrpit SQL généré par la sauvegarde de la table en question.

Requête SQL dans PhpMyAdmin

Copie du code SQL dans le fichier php du plugin ETL

{codecitation}    function getSQLPrologue()
    {
        $ret = <<
       
    CREATE TABLE `jos_comment` (
        `id` int(10) NOT NULL auto_increment,
        `contentid` int(10) NOT NULL default '0',
        `component` varchar(50) NOT NULL default '',
        `ip` varchar(15) NOT NULL default '',
        `userid` int(11) default NULL,
        `usertype` varchar(25) NOT NULL default 'Unregistered',
        `date` datetime NOT NULL default '0000-00-00 00:00:00',
        `name` varchar(30) NOT NULL default '',
        `email` varchar(50) NOT NULL default '',
        `website` varchar(100) NOT NULL default '',
        `notify` tinyint(1) NOT NULL default '0',
        `title` varchar(50) NOT NULL default '',
        `comment` text NOT NULL,
        `published` tinyint(1) NOT NULL default '0',
        `voting_yes` int(10) NOT NULL default '0',
        `voting_no` int(10) NOT NULL default '0',
        `parentid` int(10) NOT NULL default '-1',
        `importtable` varchar(30) NOT NULL default '',
        `importid` int(10) NOT NULL default '0',
        `importparentid` int(10) NOT NULL default '-1',
        PRIMARY KEY  (`id`),
        KEY `com_contentid` (`component`,`contentid`)
    )
    TYPE=MyISAM;
        
    EOT;
        return $ret;
    }{/codecitation}

Ensuite, il faut charger les fichiers créer à dans le répertoire plugins du composant Migrator. Ainsi, les tables seront prises en compte lors de la création du script SQL.

Malheureusement,  il n'est pas si facile, pour qui ne code pas, de créer un plugin fonctionnel. Vous pouvez rencontrer lors de l'installation un blocage du script au moment d'insérer des données dans la table du composant. Dans ce cas, difficile d'identifier l'origine du problème...


Migration standard

Une fois vos plugins ETL réalisés, vous pouvez commencer la migration.

Les captures d'écran suivantes résument la migration de Joomla! 1.0 vers Joomla! 1.5 à l'aide du composant de migration Migrator.

Tout d'abord, rappatriez sur un serveur local votre site sous Joomla! 1.0. Pour cela installez et configurez vos serveurs Apache, Php et MySQL. Pour ma part j'utilise WampServer sous Windows et Xampp sous Linux.

Assurez-vous de disposer des mêmes versions que votre hébergeur ! En général, les versions des hébergeurs ne sont pas les toutes dernières versions. Si vous avec installer la dernière version de WampServer, par exemeple, il est fort probable que les versions soit supérieures. Cela peut poser quelques soucis. Aucun problème, vous pouvez télécharger et installer des versions postérieures en les téléchargeant sur le site.

Téléchargement d'addons (autres versions) de MySQL

Changement de version de MySQL avec WampServer

Après avoir installé votre site sous Joomla! 1.0 en local, installez le composent com_migrator dont vous trouverez la dernière version sur le répertoire d'extension Joomla! : http://extensions.joomla.org

04_migrator_accueil

Installez les plugins ETL tierce partie et assurez-vous qu'ils soient bien listés. Sélectionnez les composants dont vous souhaitez migrer les données.

05_selection_ETL_Plugin

Lancez la migration...

06_debuter_migration_migrator

08_creation_fichier_SQL

Récupérez ensuite le fichier SQL.

10_telecharger_fichier_SQL_migrator


Installation de Joomla! 1.5

Préparez ensuite une nouvelle installation de Joomla! 1.5 en créant, via PhpMyAdmin une nouvelle base de données. Choisissez un encodage UTF-8.

Lancez une installation classique (pour plus d'information, je vous invite à consulter Joomla! 1.5 pour les nuls).

A l'étape de la Configuration, ne saisissez pas immédiatement le nom du site email et mot de passe. Cochez charger le script de migration et rensignez-le correctement.

11_import_sauvegarde_joomla10

Cliquez sur Transférez et exécuter !

12_import_sauvegarde_joomla10

Les champs se grisent alors après le transfert. Si la migration est réussie, l'écran suivant s'affiche.

13_migration_reussie

Malheureusement, la migration ne s'effectue pas toujours correctement, notamment avec les plugins ETL "maison". Vous n'avez plus qu'à revoir votre copie...

15_migration_echec

Si tout c'est correctement déroulé, vous pouvez poursuivre l'installation et compléter la configuration.

14_retour_config_principal

Suivez les instructions pour finir l'installation !

Après l'installation, le site à cette allure avec le template par défaut. La migration n'est pas terminée, vous devez configurer votre site via le panneau d'administration (comme l'affichage des modules et des menus...) et installer les composants.

16_site_apres_migration_comment

Vous devez notamment resaisir les métadonnées du site, reconfigurer les paramètres SEO, etc.

17_modifier_meta

Si vos composants ne fonctionnent pas nativement sous Joomla! 1.5, pensez à activer le plugin Legacy !

18_plugin_legacy

N'oubliez également pas de migrer les fichiers images d'une galerie ou les fichiers d'un gestionnaire de téléchargement vers les répertoires adéquats.

Voilà alors enfin votre migration terminée !

Il vous reste désormais à adapter votre template si vous souhaitez que votre site garde le même aspect avant de rapatrier votre site sur votre espace d'hébergement. Vous pouvez également saisir l'occasion pour donner une nouvelle jeunesse à votre site en changeant de gabarit.

N'arrivant pas à migrer certaines tables à l'aide d'un plugin Migrator, j'ai tenté simplement de faire un export/import des tables.

Pour cela :

  • j'effectue la migration du contenu "standard" via le composant Migrator,
  • via PhpMyadmin, j'exporte les tables des composants de la base de données joomla10 en cochant l'option Droptable,
  • j'installe le même composant sous mon site Joomla! 1.5 (ce doit être la même version : la structure des tables ne doit pas avoir changer),
  • j'importe, toujours à l'aide de PhpMyadmin, les données dans la base du site Joomla! 1.5