Date Tags linux

J’ai profité du changement de Dédibox (vers une nouvelle génération moins chère) pour migrer le blog de pluxml vers Pelican. PluXML est marrant comme projet, mais le XML est plus une contrainte qu’autre chose1. Ça m’a permis de me familiariser avec le Markdown (hormis la syntaxe horrible pour insérer des images avec des liens, c’est pas mal), et de m’amuser un peu avec un blog statique autogénéré. Hormis la migration depuis pluxml un peu cahoteuse (à base de https://github.com/kianby/pelican et sed/awk/modification à la main), l’ensemble fonctionne bien.

J’ai choisi la génération du site avec le Makefile (make html), et j’ai intégré le tout dans un hook git, qui ressemble à :

$ cat myblogbarerepo.git/hooks/post-receive
GIT_REPO=$HOME/myblogbarerepo.git
TMP_GIT_CLONE=$HOME/tmp/myblog
PROD_WEBSITE=/var/www/myblog

unset GIT_DIR
git clone $GIT_REPO $TMP_GIT_CLONE
rsync -av --no-o --no-g --delete -C -e "ssh -i $HOME/.ssh/id_rsa_myblog" $TMP_GIT_CLONE/ myblog@myprodmachine:$PROD_WEBSITE/content
ssh -i $HOME/.ssh/id_rsa_myblog myblog@myprodmachine "cd $PROD_WEBSITE && make html"
rm -rf $TMP_GIT_CLONE
exit

Lors d’un push, il se connecte donc directement sur le serveur qui héberge le site pour synchroniser les nouveaux fichiers et relancer automagiquement la régénération du site. Tant qu’on laisse la variable DELETE_OUTPUT_DIRECTORY à False, les anciens fichiers ne sont pas effacés, donc pas d’erreur 404 pendant que le site se régénère2.

J’ai mis en place des redirections pour éviter au maximum de casser les liens existants. Avec nginx, cela ressemble à :

# pluxml était dans un sous-dossier blog
location = /blog/ {
    return 301 /;
}

# pour ne pas casser le flux RSS
location /blog/feed/rss {
    return 301 /feeds/all.rss.xml;
}

# normalement les tags fonctionnent toujours
location /blog/tag {
    rewrite ^/blog(/.*)$ $1.html last;
}

# idem, les billets n'ont pas changé de nom
location /blog/article {
    rewrite ^/blog/article(\d+)(/.*)$ $2.html last;
}

Pour l’instant l’effet Kiss Cool est là (vim+git+make ça poutre :).

L’aspect pas génial est l’absence de système interne de commentaires… Je bloque Disqus sur mes systèmes, donc je ne vais pas commencer à dépendre d’un service extérieur pour les commentaires. Le blog n’a jamais été très interactif de toute façon (on n’est pas chez Cyrille ;-), donc ça va rester en l’état en attendant que j’ai plus de temps à consacrer à ce problème (hacker un truc en python à l’arrache, ou rechercher un plugin pour Pelican qui existe peut-être déjà…).

  1. ”Un jour j’avais un problème, j’ai fait du XML, maintenant j’ai deux problèmes.”
  2. Évidemment, les anciens fichiers ne sont pas supprimés, donc ne pas utiliser l’option tant qu’on n’a pas défini une structure “stable” (catégories, pages) pour le blog.