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).
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.
{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.
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
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.
Lancez la migration...
Récupérez ensuite le fichier SQL.
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.
Cliquez sur Transférez et exécuter !
Les champs se grisent alors après le transfert. Si la migration est réussie, l'écran suivant s'affiche.
Malheureusement, la migration ne s'effectue pas toujours correctement, notamment avec les plugins ETL "maison". Vous n'avez plus qu'à revoir votre copie...
Si tout c'est correctement déroulé, vous pouvez poursuivre l'installation et compléter la configuration.
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.
Vous devez notamment resaisir les métadonnées du site, reconfigurer les paramètres SEO, etc.
Si vos composants ne fonctionnent pas nativement sous Joomla! 1.5, pensez à activer le 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 :