Articles taggés avec ‘linux’

 Importer une base Wordpress sur un autre environnement

 Dimanche 26 octobre 2008

J’ai mis en place un serveur Debian virtuel qui me sert à bidouiller et à tester toutes les améliorations que je souhaite mettre en place, sans importuner le bon fonctionnement du serveur de prod. Une technique incontournable dans le monde professionnel que j’ai décidé d’appliquer en tant que particulier.

Au passage, je précise que je n’avais absolument pas envie de couper le serveur de prod pour faire le clonage des disques. J’ai utilisé une méthode dérivée de celle qui est décrite ici par Yannick afin de cloner le disque par le réseau. A chaud. Sans avoir à remonter le disque source en read-only. Comme une brute, quoi. Une étonnante démonstration supplémentaire des incroyables pouvoirs de l’open source.

Bien sûr, il a fallu faire quelques bidouilles supplémentaires pour que le serveur virtuel n’entre pas en conflit avec le serveur de prod, à savoir recompilation des modules, modif du boot loader, modif de quelques fichiers de conf et des crontab, mais là n’est pas la question.

La question est de pouvoir importer et surtout utiliser la base Wordpress originale, mise en place après clonage, sur le serveur de dev. Car il y a un piège : le nom du host est inscrit à plusieurs endroits dans la base, on est donc redirigé sur le serveur source si les bonnes modifs ne sont pas effectuées.

Heureusement, la méthode est très simple :

D’abord on importe une sauvegarde de la base de prod sur le serveur virtuel. Disons la sauvegarde automatique effectuée hier soir à chaud (béni soit le jour où j’ai mis en place mes sauvegardes auto) :

mysql -u root -p <bases_20081025.sql

Puis on change quelques paramètres:

mysql -u root -p
mysql> use dbwordpress;
mysql> update wp_options
    -> set option_value =
    -> replace(option_value,'www.alphak.net','www.alphak.dev')
    -> where option_value like '%www.alphak.net%';
Query OK, 8 rows affected (0.01 sec)
Rows matched: 8  Changed: 8  Warnings: 0

Et voila, c’est prêt à être utilisé !

 A minitel story…

 Dimanche 3 août 2008

Dans la vie, s’il y a parmi mes activités une petite lubie qui m’a toujours tenu à cœur, c’est bien celle de détourner un objet de la fonction première pour laquelle il a été conçu.

Aujourd’hui, l’exemple illustrant ce propos est le minitel.

La recette, la voici :

  • Prenez un minitel pas trop vieux, dégoté dans un grenier, sur eBay, ou dans le débarras d’une agence d’une entreprise de travail temporaire (merci Flo :) )
  • Prenez quelques composants électroniques, et soudez-les sur un minuscule circuit imprimé que vous logez à l’intérieur d’une prise série 9 broches, pour des raisons esthétiques.
  • Recompilez votre version de agetty et lancez-le en service sur le port série de votre serveur favori.
  • Connectez le tout ensemble, et voila… Vous obtenez une magnifique console d’administration pour ledit serveur à partir d’un minitel. Plus besoin d’écran et de clavier volumineux…

Rendons à César ce qui appartient à Jules, tout a été possible grâce au guide de Jean-Marc Lichtlé disponible ici : http://lea-linux.org/cached/index/Pratique-minitel.html

D’abord, le montage. On a le choix entre deux types de montages. Le premier sera très rigoureux et utilisera un MAX232 spécialisé dans la conversion des signaux RS232 en série et inversement, niveaux de tensions compris. Ce montage est un poil plus cher et demande également d’alimenter le MAX232 en 5V, tension que ne délivre pas le port série.
La seconde solution est plus cavalière, car un tantinet irrespectueuse de la norme RS232, et de ce fait en théorie incompatible avec certains chipsets, mais a le mérite d’être plus légère et ne ne pas demander de source d’alimentation extérieure. C’est celle-ci que j’ai retenue après quelques tests. Je suis donc parti du schéma que l’on trouve ici : http://yip.free.fr/bidouilles/minitel/terminal.html

Je me suis permis de modifier un poil les valeurs des résistances pour correspondre au mieux à mes niveaux de tension. Je n’ai plus les valeurs en tête, mais les photos de cet article sont assez nettes pour que les intéressés puissent lire les valeurs eux-mêmes.

Disclaimer :
Je ne suis pas électronicien, je suis juste passionné par la bidouille.
Les conseils de cet article sont donnés SANS AUCUNE GARANTIE. Toute tentative de reproduction totale ou partielle de ce montage se fait à vos risques et périls.

J’ai donc commencé par tester le montage sur banc d’essai. Ce n’est pas sorcier, on n’a que 3 résistances et 2 transistors, mais autant commencer là, cela sera plus facile à déboguer. Voila ce que ça donne :

Les composants sont montés sur le banc d'essais

Ensuite, on se monte une petite plate-forme de tests avec un vieux PC sous Windows 2000 (l’envoi et réception se font grâce à l’Hyper Terminal), le minitel, et un oscilloscope si disponible, ça peut aider. A ce propos je remercie mon frère Kiwi pour m’avoir dégoté cet oscillo aussi vieux que fonctionnel et aussi fonctionnel que gratuit :)

La plate-forme de tests, ready for action...

C’est parti pour le débogage : on maintient une touche du minitel enfoncée (en l’occurrence le C sur la photo), et on observe que les niveaux de tensions sont cohérents à l’oscillo, en sortie du minitel comme en entrée du port série.

Vérification des tensions à l'oscillo

On prend une table ASCII et on vérifie, en faisant gaffe aux niveaux logiques qui sont “inversés” en RS232, ou autrement dit, un niveau logique actif est représenté physiquement par une tension négative.

Le montage est concluant, rien n’a cramé, on peut donc refaire le même test sur la plate-forme qui va accueillir le montage : ma chère Debian (avec Minicom pour le test).

Le même montage sur une Debian

Test de communication bidirectionnelle

Comme le montre la photo (floue), les deux appareils peuvent communiquer entre eux, le texte tapé sur le clavier de l’un apparaissant sur l’écran de l’autre.

Maintenant vient l’étape complexe du montage sur veroboard, avec la contrainte de caser tous les composants dans le capot de la prise Sub-D.

Pas évident, croyez-moi.

Parfait, ça rentre dans le capot, au millimètre près.

On remonte le tout proprement, et on teste… Miracle, tout fonctionne, la preuve en images.

It works !

Un listing des fichiers php du forum affichés sur le minitel.

Pour des raisons pratiques, on peut également recompiler sa propre version de agetty, car celui-ci s’adapte au codage du minitel uniquement une fois les premiers caractères envoyés par celui-ci (c’est à dire le login de l’utilisateur). L’invite de login envoyée au minitel est donc envoyée avec le codage par défaut, que ne comprends pas le minitel. Le patch suivant permet a agetty d’initialiser le dialogue avec un codage que le minitel comprend, et donc d’avoir une invite de login lisible à l’écran. Une fois compilé, j’ai simplement renommé l’exécutable agetty-minitel et installé celui-ci dans /sbin. Le code de agetty est disponible dans le package util-linux.

ryu:/alphak/dev/util-linux-2.12/login-utils# diff -c agetty.c.old agetty.c.new
*** agetty.c.old        2006-03-18 14:55:14.000000000 +0100
--- agetty.c.new        2006-03-18 14:58:38.000000000 +0100
***************
*** 728,734 ****
--- 728,741 ----
      (void) ioctl(0, TCFLSH, TCIOFLUSH);
  #endif

+     /* Modif AlphaK 18/03/2006, ajout de l'option V23 pour minitel */
+ #ifdef V23
+     tp->c_cflag = CS7 | PARENB | HUPCL | CREAD | speed;
+ #else
      tp->c_cflag = CS8 | HUPCL | CREAD | speed;
+ #endif
+     /* Fin Modif AlphaK V23 */
+
      if (op->flags & F_LOCAL) {
        tp->c_cflag |= CLOCAL;
      }

La ligne ajoutée dans /etc/inittab pour démarrer le service :

T0:23:respawn:/sbin/agetty-minitel -w minitel 4800 minitel1b-80

Dernière étape : on range le clavier et l’écran au placard. Les étapes de maintenance seront effectuées via SSH, et grâce au minitel en cas de coup dur (coupure réseau, problème matériel, etc). Un gain de place non négligeable en appartement.