Migrer de Ubuntu vers Debian Lenny

Parfois, on se rend compte qu'on fait une erreur et il est bon de pouvoir revenir en arrière sans tout casser...

Je ne lancerais pas de troll velu sur la comparaison Debian/Ubuntu, ça prendrait des heures et le débat n'avancerai sans doute pas. Par rapport à mes besoins, j'ai quand même remarqué quelquechose depuis que j'utilise Ubuntu: * Je me suis bien pris la tête avec les pilotes nvidia sur cette distribution * Je ne fais absolument plus d'administration système chez moi * Mais, je perds complètement la main sur le système qui m'installe par défaut des trucs dont je n'ai pas besoin. * Finalement, c'est assez lent comme distribution sur mon matériel (AMD Sempron 2400+) * Je ne sais plus comment fonctionne les outils de la distribution * Pire: de nouvelles technos/applis/socle de base apparaissent et je ne m'en soucie plus: Ubuntu le gère pour moi * Mes connaissances en informatique stagnent etc...

Au final, on en revient toujours Debian et son contrat social clair et net. J'ai plus envie que mon système d'exploitation tourne avec cette distribution histoire d'effacer tout ce que j'ai énoncé plus haut ! Sauf que maintenant, je n'ai plus trop le choix: comme la majorité des personnes de ce bas monde, j'ai déjà installé mon système (sys+user data) sur toutes les partitions du disque: plus moyen d'installer autre chose avec un CD d'installation. En plus de tout ça, quel est l'intérêt d'utiliser un CD d'installation ? Je ne vais pas perdre de l'énergie à presser une galette de plastique pour installer un OS quasi-identique (mais en mieux on l'aura compris) à celui qui tourne sur ma machine !

Voyons donc en pratique ce que cela peut donner...

Etape n°1:faire de la place !

Avant d'installer une distribution, il convient de voir où on peut la mettre. Pour cela , quelques outils comme un shell et parted.

GNU Parted 1.8.8
On utilise /dev/sda
Bievenue sur GNU Parted ! Tappez 'help' pour voir la liste des commandes.
(parted) p                                                                
Model: ATA ST3320620AS (scsi)
Disque /dev/sda : 320GB
Taille des secteurs (logiques/physiques): 512B/512B
Table de partition : msdos

Numéro  Début   Fin     Taille  Type      Système de fichiers  Fanions
 1      32,3kB  20,0GB  20,0GB  primary   ext3                        
 2      20,0GB  21,5GB  1497MB  primary   linux-swap                  
 3      21,5GB  31,5GB  10,0GB  primary   ext3                        
 4      31,5GB  320GB   289GB   extended                              
 5      31,5GB  242GB   210GB   logical   ext3                        
 6      242GB   320GB   78,6GB  logical   ext3

Etape n°2: Debootstrap vient à notre secours:

Maintenant que nous disposons de suffisamment de place, nous pouvons installer un système Debian de base. On peut utiliser la méthode classique: booter sur un CD-ROM ou une clef USB et utiliser l'installeur Debian. Toutefois, cela implique une opération un peu fastidieuse de récupération d'image ISO sur Internet, sa gravure sur un média supplémentaire et de suivre le déroulement d'une installation. En plus, c'est bête de ne pas pouvoir utiliser un système GNU/Linux à partir d'un autre système GNU/Linux.

La distribution Debian nous offre un outil très intéressant nommé Debootstrap. Ce programme assez basique se charge de récupérer les paquets d'une installation de base de la distribution Debian de son choix (stable/testing ou autre). Je vous invite à lire le Wiki sur ce point: http://wiki.debian.org/fr/Debootstrap . Dans notre cas, nous utilisons les commandes suivantes:

  • # mount /dev/hdb2 /media/hdb2
  • # debootstrap lenny /media/hdb2 http://ftp.fr.debian.org/debian

Etape n°3: On configure l'OS de base à notre sauce:

Ca y est, nous disposons sur une partition de disque dur d'une distribution Debian, reste à pouvoir booter dessus...

  • Rediriger le système proc et dev sur le système installé
  • Se connecter avec chroot
  • Ensuite, un petit aptitude update et aptitude safe-upgrade s'impose.
  • On peut maintenant installer grub: aptitude install grub
  • Ensuite, il faut également ajouter un noyau linux (pour l'instant, il n'y en a pas !): aptitude install
  • Pour ma part, j'ai également ajouté un bureau graphique: Gnome: aptitude install gnome
  • Reste à créer un utilisateur de base: adduser utilisateurdebase
  • On peut également ajouter le support des locales: aptitude install locales suivi de dpkg-reconfigure locales.

Maintenant, il reste à configurer tout pour que ça boote:

  • En premier lieu, disposer d'un fichier /etc/fstab digne de ce nom ! En voici un exemple minimaliste:

    # /etc/fstab: static file system information.
    #
    /dev/hdb2       /       ext3    defaults,eroors=remount-ro      0       1
    proc            /proc   proc    defaults                        0       0
    /dev/sda3       /home   ext3    defaults                        0       2
    
  • Vient ensuite la configuration de grub. Pour ma part, j'ai gardé le grub de l'ancienne distribution et j'ai ajouté une entrée dans le fichier /boot/grub/menu.lst:

    title           Debian Lenny, noyau 2.6.24
    root            (hd1,1)
    kernel          /vmlinuz root=/dev/hdb2 ro
    initrd          /initrd.img
    quiet
    
  • Enfin, on effectue un petit nettoyage de tout ça: aptitude clean

Etape n°4: On réinitialise la machine:

On reboot de l'OS qui nous a servi à installer notre distribution et nous voilà avec une distribution bien fraîche...

Posted sam. 10 mai 2008 14:05:00 Tags:

Installation de Gallery

Sur ce Blog, c'est Serendipity qui me sert de moteur de blog. A noter qu'il n'est pas super beau ni bien customisé. De plus, j'ai un autre problème à régler: j'ai besoin de présenter des photos à mes proches ! L'idée est d'utiliser mon serveur hébergé à la maison, d'y transférer des photos et des fichiers multimédias et de disposer d'une interface utilisateur pour gérer tout ça ...

Il me faut donc un logiciel serveur pour ça ! Après une rapide consultation sur [http://www.framasoft.net Framasoft ], je vois que le produit le plus courant pour faire ce genre de choses se nomme Gallery. Comble de chance, il existe un paquet Debian pour ce logiciel...

La suite du billet détaille le contenu de la procédure d'installation et de paramétrage de Gallery à la sauce Debian !

Introduction:

Gallery est un logiciel de gestion de photos par le Web. Il est disponible en deux versions: la 1.5.7 et la 2.2.4. La grosse différence entre les deux versions est le support d'un SGBDR (MySQL) pour la gestion des métadonnées. Pour notre cas, je n'ai pas envie d'avoir un serveur de base de données, aussi simple soit-il à administrer à la maison. Mon choix se porte donc sur le paquet natif 1.5.7 de Gallery.

Etape 1: L'installation:

C'est toujours aussi facile: aptitude install gallery

Franchement, comparé à la meme procédure pour MS-Windows, c'est que du gain de temps pour l'administrateur système pressé que je suis...

Etape 2: Paramétrage:

Lancer le script /usr/share/gallery/configure.sh: il permet de créer les fichiers de configuration par défaut.

Il faut commencer par éditer le contenu du fichier /etc/apache2/conf.d/gallery et décommenter la ligne sur l'alias (Alias /gallery /usr/share/gallery).

Ensuite, il suffit de se rendre sur l'URL suivante (celle par défaut de l'installation de Gallery): http://your-server-ip/gallery/setup/index.php. Cette page indique quelle est la configuration actuelle de Gallery et s'il manque des modules. A priori, le contributeur du paquet a fait le travail pour vous... Cliquez sur Suivant pour continuer...

La page suivante (qui est assez bordélique au passage) permet de configurer Gallery. Pour ma part, j'ai choisi d'utiliser le thème //Bubbles// qui va assez bien avec la mise en page par défaut de Serendipity...

On passe ensuite à la page de configuration des chemins. Pour le stockage des fichiers images, j'ai choisi /var/www/albums qui est le chemin par défaut. /tmp pour les fichiers temporaires. Le reste des chemins peut-etre laissé par défaut !

Pour le reste de la configuration, je vous laisse choisir, visiblement, l'application a l'air d'etre assez riche...Concrètement, si vous avez à modifier un élément de configuration, vous pouvez éditer directement le fichier /etc/gallery/config.php !

Etape 3: Finalisation du paramétrage (sécurisation):

Une fois que l'application est installée sur votre serveur Debian, il faut lancer (en tant que root), le script /usr/share/gallery/secure.sh. Ce script supprime l'accès vers la page d'installation de l'application...

Petit add-on: j'avais beaucoup de problèmes avec le Charset de Gallery. Concrètement, Gallery est en ISO-8859-1 (c'est codé en dur dans le script suivant la langue). Pour ma part, je n'avais pas généré les locales fr_FR.iso-8859-1 et fr_FR.iso-8859-15 parce qu'à priori, on peut tout passer en UTF8. Du coup, Gallery était pas terrible au niveau affichage. Voici comment j'ai réglé mon problème:

  • dpkg-reconfigure locales
  • choisir les locales qui manquent (dans mon cas fr_FR.ISO-8859-1)
  • modifier le fichier /etc/apache2/conf.d/charset en commentant la ligne AddDefaultCharset si elle est décommentée
  • un petit coup de /etc/init.d/apache2 reload et c'est parti...

Références:

Posted lun. 26 mai 2008 15:45:00 Tags:

Du nouveau sur ce blog

Certes, Serendipity c'est bien car c'est beau et c'est simple mais, on peut encore faire mieux... En effet, il est possible d'étendre les fonctionnalités de ce moteur de blog en utilisant un système de plugins. J'ai découvert ces fonctionnalités récemment et je dois dire qu'elles sont assez bluffantes.

Voilà comment faire...

Le système de plugins de Serendipity:

Comme vous etes admin, vous pouvez ajouter des plugins développés par de nombreux contributeurs du projet serendipity. Pour cela, allez dans le menu Configurer les plugins et choisissez ceux que vous voulez utiliser. Pour ma part, voici la liste des plugins que j'ai utilisé:

  • Creative Commons.
  • Recherche Rapide.
  • Gestion des flux RSS du Blog.
  • Liste des archives.
  • Accès aux billets via les catégories.
  • Syndication vers un site extérieur (pour ma part le planet-debian-fr).
  • Gestion du WikiText

Petit point sur le plugin WikiText:

Ce plugin est vraiment intéressant. Je ne sais pas vous, mais pour ma part, j'aime assez bien la mise en forme de caractères en mode Wiki. De nos jours, avec la renommée d'un wiki aussi connu que Wikipédia, de plus en plus d'utilisateurs utilisent la syntaxe Wiki pour contribuer à des sites ou des projets. Cela facilite bien la vie et permet de mieux partager le savoir.

Avec Serendipity, de base, on peut éditer du HTML en direct ou utiliser l'éditeur WYSYWIG qui est d'ailleurs assez bien fait. Toutefois, étant habitué au mode Wiki, je préferre faire ma mise en page avec ce mode. Lorsque j'ai vu qu'un plugin d'état existait pour gérer la syntaxe Wiki, je me suis précipité dessus. Ceux qui éditent plusieurs wiki (wikipédia ou le wiki Debian par exemple) doivent jongler avec des syntaxes différentes. Ce n'est pas très compliqué d'en retenir plusieurs à la fois. Au niveau de Serendipity, je me suis heurté à l'absence quasi-totale de doc sur le sujet... En effet, quelle est la syntaxe Wiki retenue ?

Après avoir cherché la doc, je n'ai pu l'obtenir que sur http://web.archive.org/web/20070819141713/http://wiki.ciaweb.net/yawiki/index.php?area=Text_Wiki&page=SamplePage .

Posted mar. 27 mai 2008 07:55:00 Tags:

meta title="Sauvegardes..."

Sauvegardes...

Maintenant que je dispose d'un vrai blog et d'un vrai outil de gestion de photos en ligne, que le tout fonctionne correctement, il ne faut pas que j'oublie la partie sauvegarde... Ca serait bête de tout avoir à recommencer "from scratch..."

Sauvegarde du blog

L'objectif est de permettre de récupérer les informations importantes du blog, aussi bien les données (le corps des billets) que les documents téléchargés. Pour rappel, dans ma configuration, Serendipity utilise une base de données SQLite.

D'une manière générale, je poserai les fichiers de sauvegarde dans /opt/backup, répertoire qu'il faudra auparavant créer par l'utilisateur root en ayant soin de rendre le répertoire inaccessible à toute autre personne que l'utilisateur root: * mkdir /opt/backup * chmod 700 /opt/backup

Les photos étant des fichiers assez volumineux, j'utiliserai au maximum la compression bzip2 qui donne d'excellents résultats (bon c'est compensé par une super lenteur lors de la compression/décompression mais ici, c'est bien l'objectif de place qui est priorisé). Le paquet bzip2 est donc indispensable: aptitude install bzip2.

Sauvegarde de la base de données:

Les bases de données SQLite sont constituées d'un simple fichier où il y a tout dedans. Le concept est simple. Si la base de données n'est pas en fonctionnement, il suffit de copier le fichier pour faire une sauvegarde. Dans le cas de Serendipity, le fichier est /var/lib/dbconfig-common/sqlite3/serendipity/serendipity

En étant prévoyant, je préferre les exports SQL. Pour cela, il nous faut un outil de base: sqlite3 qui est une interface en ligne de commande pour attaquer une DB SQLite V3. L'installation est assez simple: aptitude install sqlite3.

Ensuite, l'export SQL peut se faire par la commande suivante:

echo '.dump' | sqlite3 /var/lib/dbconfig-common/sqlite3/serendipity/serendipity | bzip2 -c > /opt/backup/serendipity.sql.bz2

Sauvegarde des fichiers:

Mon but est de sauvegarder les fichiers uploadés sur le serveur ainsi que les fichiers de configuration. Les fichiers uploadés se trouvent dans /var/lib/serendipity/uploads et les fichiers de conf dans /etc/serendipity. Classiquement sous GNU/Linux (et sans doute sous Unix), on utilise la commande tar pour faire ça:

  • fichiers de configuration: cd / ; /bin/tar -cjf /opt/backup/serendipity_conf.tar.bz2 etc/serendipity
  • fichiers upload: cd / ; /bin/tar -cjf /opt/backup/serendipity_upload.tar.bz2 var/lib/serendipity/uploads

Sauvegarde des galeries d'images:

Je ne vais pas revenir sur les explications antérieures sur les sauvegardes, sauvegarder gallery signifie:

  • Sauvegarder les fichiers de configuration
  • Sauvegarder les fichiers d'albums
  • Sauvegarder les fichiers d'image
  • Sauvegarder les éléments de gestion des utilisateurs

Voyons comment on fait pour tout:

  • cd / ; /bin/tar -cjf /opt/backup/gallery_conf.tar.bz2 etc/gallery
  • cd /; /bin/tar -cjf /opt/backup/gallery_albums.tar.bz2 var/www/albums
  • inclus dans les albums
  • également inclus dans les albums (dans le répertoire caché /var/www/albums/.users) !

Automatisation de tout ça !

Maintenant que nous disposons de tout ce qu'il nous faut, autant automatiser cette tache pour ne pas l'oublier. Sous GNU/Linux, on utilise généralement une tache cron pour ça. Vu le peu de stress et d'activité d'un blog ou d'un site gallery, mon avis est qu'une sauvegarde par semaine sera largement suffisante.

Nous allons donc utiliser le script bash suivant pour la sauvegarde:

    #!/bin/sh
    # Script de sauvegarde de Serendipity et de Gallery
    #

    # Serendipity:
    echo '.dump' | sqlite3 /var/lib/dbconfig-common/sqlite3/serendipity/serendipity | bzip2 -c > /opt/backup/serendipity.sql.bz2
    cd / ; /bin/tar -cjf /opt/backup/serendipity_conf.tar.bz2 etc/serendipity
    cd / ; /bin/tar -cjf /opt/backup/serendipity_upload.tar.bz2 var/lib/serendipity/uploads

    # Gallery:
    cd / ; /bin/tar -cjf /opt/backup/gallery_conf.tar.bz2 etc/gallery
    cd /; /bin/tar -cjf /opt/backup/gallery_albums.tar.bz2 var/www/albums

Nous nommerons ce script /etc/cron.weekly/backup et nous n'oublierons pas de le rendre exécutable (sinon, il n'est pas lancé par cron): chmod 700 /etc/cron.weekly/backup.

Reste enfin à vérifier quand est lancée la sauvegarde hebdomadaire. Le fichier /etc/crontab nous permet de répondre à cette question:

    # /etc/crontab: system-wide crontab
    # Unlike any other crontab you don't have to run the `crontab'
    # command to install the new version when you edit this file
    # and files in /etc/cron.d. These files also have username fields,
    # that none of the other crontabs do.

    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

    # m h dom mon dow user  command
    17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
    25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
    47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
    52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Ce fichier nous montre que tous les scripts situés dans /etc/cron.weekly sont exécutés via run-parts (un script de lancement de scripts) à 6H47 tous les dimanches par défaut. Pour ma part, je préfère lancer tout ça le vendredi à 12H05. Voici donc ma ligne à moi: 05 12 * * 5 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

Enfin, ne pas oublier de relancer le service cron (enfin je ne suis pas sur que cela soit nécéssaire mais dans le doute, ça ne coute pas grand chose): /etc/init.d/cron restart.

Récupérer la sauvegarde sur un ordinateur distant:

Nous venons d'automatiser la sauvegarde sur le serveur. Cette sauvegarde va nous permettre de remettre en fonctionnement le site assez rapidement en cas de corruption de données. Toutefois, si le disque du serveur crame, nous voilà dans de beaux draps...

Pour celà, on peut utiliser scp ou encore rsync. On peut imaginer d'autres solutions sur du téléchargement par http en mode sécurisé dont l'URL aurait été envoyée par email... On verra toutes ces solutions dans un prochain billet, c'est un autre projet.

Et la restauration ?

C'est très bien de récupérer des données, encore est-il plus intéressant de les restaurer en cas de besoin. Voici quelques commandes qui nous permettent d'aller plus vite:

Restauration:

  • Base de données de serendipity: rm -r /var/lib/dbconfig-common/sqlite3/serendipity/serendipity && bzcat /opt/backup/serendipity.sql.bz2 | sqlite3 /var/lib/dbconfig-common/sqlite3/serendipity/serendipity
  • Fichiers de config de serendipity: cd / ; /bin/tar -xjf /opt/backup/serendipity_conf.tar.bz2
  • Fichiers d'upload de serendipity:cd / ; /bin/tar -xjf /opt/backup/serendipity_upload.tar.bz2
  • Fichiers de conf de Gallery: cd / ; /bin/tar -xjf /opt/backup/gallery_conf.tar.bz2
  • Fichiers d'albums de Gallery: cd /; /bin/tar -xjf /opt/backup/gallery_albums.tar.bz2
Posted mar. 27 mai 2008 16:22:00 Tags:

La fete des RIBREUX

Samedi 26/04/2008 se tenait à Zudausques, la fete des RIBREUX organisée par mon père et ma mère...

Où ça ?

A Zudausques... parce que visiblement c'est le berceau de naissance de la famille des RIBREUX.

Des images comme si on y était:

Comme j'ai maintenant installé Gallery, j'ai créé un album avec les photos (et les vidéos) de la fete pour ceux qui désireraient les récupérer:

Pour les impatients, quelques images commentées:

  • Attroupement de RIBREUX sur la place de Lumbres, le point de rendez-vous:

    Le point de rendez-vous

  • Avant d'aller à Zudausques, une petite pause sur l'ancienne ferme familiale... où nombre d'entre les cousins ont dormis quand ils étaient enfants:

    Ferme familiale

  • Début des @@---hostilités@@ présentations: la petite intro de l'exposé qui durera un peu plus d'une heure:

    Introduction

  • Bien entendu l'exposé sur la famille a été entrecoupé par quelques scènes de théatre plutot bien choisie. Ci-joint une photo de Paul et Zulma:

    Paul et Zulma

  • Ici, une photo de l'oncle ? qui mettait ses mégots de clopes dans son béret:

    Clopes dans béret

  • Le final: on remercie les organisateurs:

    Le final

  • La suite: un super-repas (merci Francis) avant de faire la fête...

    Super repas

Posted mer. 28 mai 2008 16:27:00 Tags:

Bien gérer son indexation par les moteurs de recherche, une histoire de

robots

Maintenant que mon blog est public, je me suis posé la question de savoir qui venait le visiter et surtout comment il se faisait indexer par les différents moteurs de recherche. A ce sujet, il faut savoir que tout cela n'arrive pas comme par magie: les moteurs de recherche utilisent des programmes dont le seul but est de naviguer de pages en pages en "scannant" tout le réseau internet. Ces programmes sont appelés robots dans le langage consacré.

En regardant mes logs de serveurs, je me suis rendu compte que j'avais eu de la visite de la part de quelques-uns de ces robots: ils demandaient tous à consulter le fichier robots.txt à la racine du site. Mais, je n'avais pas prévu ce fichier, ils sont donc rentrés bredouilles (ou plutot brocouilles comme on dit dans le Bouchonnois).

Quel est donc ce fichier robots.txt et à quoi sert-il ?

Gérer les moteurs d'indexation:

Une petite recherche sur Internet m'apprend qu'il existe un fichier robots.txt qui indique quel robot peut consulter telle ou telle page. Cela permet à certaines parties de serveurs Web de ne pas être indexées par défaut. Ce fichier n'est pas une norme mais un standard de fait. Certains robots (celui de Google par exemple) supportent un jeu plus étendu d'instructions.

Le site de référence donne uniquement deux instructions:

  • User-agent: c'est le nom du robot (signature laissée dans l'entête HTTP). * signifie tous
  • Disallow: c'est le fichier ou le répertoire qu'on ne souhaite pas voir indexé par le robot.

Pour plus d'infos: http://www.robotstxt.org/orig.html .

Mon fichier robots.txt:

Dans mon cas, j'ai plusieurs pré-requis:

  • Je n'aime pas Microsoft et c'est mon droit le plus strict...
  • La partie Gallery du site n'a pas à etre indexée: c'est de l'ordre du quasi-privé
  • Toute les références aux fichiers de config (pages de setup, etc...) ne doivent pas etre référencées
  • Réfléxion faite du point précédent, c'est mieux de ne pas mettre l'info en public
  • Je répète que je n'aime pas Microsoft et c'est mon droit le plus strict...

Voici le fichier /var/www/robots.txt qui en découle:

User-agent: MSNbot
Disallow: /

User-agent: *
Disallow: /gallery/

Bien sur, on créé ce fichier avec les droits de l'utilisateur www-data et on le code avec Vim et ses propres petits doigts !

Références:

Posted jeu. 29 mai 2008 16:42:00 Tags: