mercredi 2 avril 2008

Synchronisation des environnements

Il est très facile de cloner un environnement Joomla, composé de deux parties:
  1. Les fichiers de l'applicatif et vos fichiers peuvent être copiés via votre 'gestionnaire de fichiers' habituel ou via un client FTP (comme filezilla) si votre site est distant chez un hébergeur.
  2. la base de données mySql. L'interface de phpmyadmin est suffisante pour la sauvegarde dans un premier temps.
Par contre, on rencontre vite un problème quand on mixe des environnements Windows et Linux. Les caractères accentués comme éèàëêûüäâ passent mal lors de clonages/migrations. (codepages utf8, cp1252 pour les technophiles)

Un autre soucis très commun également vient des chemins absolus/relatifs des url stockés dans les articles de votre site.
Par exemple, quand vous insérez une image dans votre article, l'éditeur intégré à Joomla vous transformera le lien en absolu.
Exemple: 'http://aiki.tendo.free.fr/tendoryu/images/stories/mon-image.jpg'.
Ok, no problemo sauf quand on veut l'installer sur votre installation joomla 'uniform -server' de votre clef usb, hors connexion internet. Là on a besoin de remplacer 'aiki.tendo.free.fr' par 'localhost'.
Pour peu que le nom du répertoire d'installation de Joomla soit différent entre deux environnements, (répertoire: 'tendoryu' sur votre site et répertoire 'joomla1.5' sur votre site local de développement), vous allez devant des problèmes d'affichage de ces images.
Au mieux, votre navigateur internet va chercher les images sur le site référencé dans votre article. Par contre, il ne pourra rien faire si l'url est 'localhost' et que votre site est hébergé chez votre fai.

Bref, quelques soucis qui se soignent facilement à coup de quelques scripts sous linux.
Pourquoi Linux? Ben, c'est le système d'exploitation de mon PC à la maison. Le système de base pour 'bidouiller' librement. Le couteau suisse aux possibilités infinies. Je ne cherche pas à rester scotché sur un système compliqué, onéreux, qui demande un anti-virus pour aller sur internet, qui plante régulièrement, qui demande beaucoup d'efforts pour maintenir un service basique. Je suis passé aux génériques et çà marche.

Avec phpmyadmin, je réalise un 'export' de la base de données. Le fichier généré est ensuite 'retravaillé'.
Je détermine le codepage du fichier avec l'utilitaire utrac (installé à la main sur mon Kubuntu v7.10).
utrac -p mon-fichier.sql

Les fichiers sous windows ont le codepage: CP1252
Les fichiers sous linux: utf8

Puis, on transforme le fichier

Exemple: Windows vers Linux/(k)ubuntu

utrac -f CP1252 -t UTF8 < mon-fichier.sql | sed 's/\/joomla1.5\//\/tendoryu\//g' > mon-fichier-utf8.sql



J'ai profité de l'occasion pour chercher/remplacer une chaine de caractère par une autre.
On peut chainer (on dit aussi 'piper') les recherches/remplacements, autant que nécessaire.

Voilà, voilà. Ne reste plus qu'à 'dropper' les tables de la base mysql via phpmyadmin et de réimporter votre fichier 'transformé'.
Enfin, on visualise certains articles contenant des caractères accentués qui ne manquent pas dans la langue française. ;-)

Je ne rentre pas dans le détail des manipulations. Cela dépasse le cadre de ce blog (imho).

Aucun commentaire: