Archive for the ‘blog’ Category

Retour du Barcamp “Travailleurs Du Web”

Monday, April 27th, 2009

tdw_campSamedi a eu lieu le premier Barcamp TDW destinés aux personnes travaillant dans le Web ou s’y intéressant : designers, développeurs, webmasters, curieux et même un mec qui fait du Java (vous avez deviné qui).

Le but du Barcamp était de faire rencontrer les acteurs du Web afin d’échanger des points de vues et des idées, ainsi que de passer un moment convivial. Mission réussie.

Les sessions étaient nombreuses et j’ai assisté à :

  • Web Mobile
  • Freelance
  • SCOP
  • Vie/Travail

(more…)

Humeur : Fcron et Rsnapshot, la doc et les exemples

Wednesday, October 8th, 2008

Billet d’humeur du jour.

Toujours dans mes histoires de backups, j’utilise Rsnapshot pour faire des copies de mon $home et Fcron pour déclencher la sauvegarde à intervalle régulier.

J’ai lutté avec ces deux outils et vous voulez savoir pourquoi ? Car j’ai sauté sur les exemples et que ceux-ci sont ambigus, limite trompeurs. Je grogne mais rien de grave. Allez, illustration…

Voyez l’extrait des exemples de Fcron :

# run every day
@ 1d echo "fcron daily"

Et bien, en réalité, la commande ne sera lancée qu’après 24h d’activité (pendant que Fcron sera lancé). Rien à voir 24h de temps réel écoulé comme semble l’indiquer le commentaire.

Autre exemple, Rsnapshot définir les « intervalles » suivants par défaut :

interval  hourly  6
interval  daily   7
interval  weekly  4
interval  monthly 6

Mais il faut bien voir que hourly, daily, weekly et monthly ne sont là que pour indiquer un groupe. On aurait pu imaginé :

interval  scala  1
interval  rebol  2

Le sens des groupes par défaut est trompeur. La doc mentionne que les noms ne reflètent que la norme de Rsnapshot et qu’on peut en changer. Aucun exemple à ce sujet. Sans un message à ce sujet sur la mailing-list, je serai passé complètement à côté. “Hourly”, ça veut bien dire ce que ça veut dire, non ?

Conclusion

Lire les exemples oui. Lire la doc oui. Mais avoir les mains de le cambouis (et les logs), c’est mieux.

Script de sauvegarde WordPress et MySQL

Monday, September 1st, 2008

Qui dit nouvel blog, plugins à gogo, tests et expérimentations, dit un jour ou l’autre : “si j’avais fait une sauvegarde, ça m’aurait évité de perdre mon blog et tout son contenu !”.

Donc une des premières étapes de toute nouvelle installation de WordPress, il me fallait un script de backup digne de ce nom mais très simple (car “Simple is more” ;-) ).

Mission accomplie !

Le script que je mets ci-dessous s’occupe de 3 choses :

  • Faire une archive de l’installation de WordPress ;
  • Sauvegarder la base de données ;
  • Envoyer un mail de confirmation.

Le script est téléchargeable ici : wpbackup.sh.zip

Le secret

Le gros avantage de ce script est que nous n’avez pas à spécifier vos paramètres MySQL (nom de la base, machine, utilisateur, mot de passe). En effet, ils sont extrait du fichier wp-config.php situé dans le répertoire de WordPress.

Pour cela, j’ai utilisé un extrait du script de AskApache.org, trouvable ici : Encrypted WordPress / phpBB Backups. En particulier, le script utilise la commande sed pour extraire les variables MySQL et les créer en tant que variables dans le script. Une belle prouesse !

Installation

  1. Dézipper le script (unzip)
  2. Le rendre exécutable : chmod 700 wpbackup.sh
  3. Modifier les 3 lignes :
    1. EMAIL=monemail@mail.com : email du destinataire
    2. WORDPRESS_PATH=”/opt/wordpress” : chemin de l’installation de WordPress
    3. BACKUP_PATH=”/mnt/backups” : chemin vers les sauvegardes

Améliorations

Ce script peut être amélioré sur les points suivants :

  • Sécuriser la création des archives : vérifier que ce qui est dans l’archive n’est pas corrompu. Le projet VeriTAR s’occupe de cette partie en comparant le checksum MD5 des fichiers à l’extérieur et à l’intérieur de l’archive. C’est un projet Python. Un exemple est trouvable sur le site www.g-loaded.eu ;
  • Sauvegardes incrémentales : ne garder que les changements entre deux sauvegardes ;
  • Copie sur un serveur distant : ne pas garder les sauvegardes uniquement sur la machine source. C’est le principe du “offsite backups” qui évite de perdre ses données en cas de panne ou de vol de la machine source.

Planification

Je vous conseille fortement de planifier le lancement de ce script. Par exemple, toutes les semaines ou tous les jours si vous avez un peu d’espace disque.

Contenu du script

#!/bin/sh

echo "### Backup running..."

#
# Customize these variables
#
EMAIL=monemail@mail.com
WORDPRESS_PATH="/opt/wordpress"
BACKUP_PATH="/mnt/backups"

# valid path ?
[ ! -d $WORDPRESS_PATH ] && echo "Not a valid directory : $WORDPRESS_PATH" && exit 1
[ ! -f $WORDPRESS_PATH/wp-config.php ] <span class="__mozilla-findbar-search" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;">&&</span> echo "Cannot find wordpress config file 'wp-config.php'" && exit 1
[ ! -d $BACKUP_PATH ] <span class="__mozilla-findbar-search" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;">&&</span> mkdir -p $BACKUP_PATH

#
# Script variables
#
NOW=`date +%Y-%m-%d_%Hh%Mm%S`
WP_PARENT=`dirname $WORDPRESS_PATH`
WP_DIR=`basename $WORDPRESS_PATH`
WP_BACKUPNAME="$WP_DIR-$NOW-wordpress.tar.bz2"
MYSQL_BACKUPNAME="$WP_DIR-$NOW-mysql.sql.bz2"

echo "Wordpress backup..."
cd $WP_PARENT
tar -jcf $BACKUP_PATH/$WP_BACKUPNAME $WP_DIR
cd $OLDPWD
echo "...done : $BACKUP_PATH/$WP_BACKUPNAME"

echo "Mysql backup..."

# read wordpress config
WP_CONFIG="$WORDPRESS_PATH/wp-config.php"
PROPS=$(sed -e "/define('DB_\(NAME\|USER\|PASSWORD\|HOST\)/!d" \
 -e "s/[^']*'DB_\(NAME\|USER\|PASSWORD\|HOST\)'[^']*'\([^']*\)'.*$/DB_\1='\2';/g" ${WP_CONFIG}) <span class="__mozilla-findbar-search" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;">&&</span> eval $PROPS;

mysqldump --opt -h$DB_HOST -u$DB_USER -p$DB_PASSWORD --add-drop-table $DB_NAME | bzip2 -c9 > $BACKUP_PATH/$MYSQL_BACKUPNAME
echo "...done : $BACKUP_PATH/$MYSQL_BACKUPNAME"

# send emails
echo "Backup completed" | /usr/bin/mail -s "Wordpress and Mysql backups completed on `date`" $EMAIL

echo "### Backup done."

Bienvenue

Sunday, August 17th, 2008

A force d’accumuler des idées, des réalisations et des projets, on se dit bien qu’un jour on mettra tout ça en ligne. Je saute le pas aujourd’hui avec l’idée de mettre à disposition des idées et des solutions aux problèmes que j’ai rencontrés dernièrement.

Ce blog parlera de Java, mon langage de prédilection et de tout ce qui tourne autour de cette sphère. J’aborderais les thèmes du Design et des tests, domaines qui sont à mon avis plus importants que la technique pure.

Je vous dis à bientôt,

Thomas