Après 4 ans de bons et loyaux services, j'ai arrêté de maintenir le blog sous Wordpress. La rédaction des articles se faisait en ligne via l'interface de Wordpress. Cette interface est très confortable mais la connexion internet au Congo qui n'est pas très véloce rendait le processus pénible. De plus, je n'avais pas trouvé de solution satisfaisante et simple pour faire une sauvegarde complète du site (fichiers + base de données).

Du coup, j'ai opté pour Pelican

  • c'est écrit en Python ;
  • Pelican génère des fichiers statiques (sans php, sans base de données), ce qui reduit les problèmes de sécurité ;
  • les articles sont écrits en Markdown que j'apprécie de plus en plus ;
  • l'ensemble des données du site tient dans un répertoire, ce qui rend la sauvegarde particulèrement simple.

Un site généré statiquement par Pelican ne gère pas nativement les commentaires. Leur gestion est externalisée chez Disqus.

Depuis Wordpress, j'ai d'abord exporté les commentaires des articles sur Disqus avec le plugin adéquat, puis j'ai exporté l'ensemble des pages et des articles dans un fichier xml. Enfin, j'ai récupéré sur le serveur le répertoire wp-content qui contient les images.

L'installation de Pelican et l'importation du site Wordpress est bien documentée sur internet. Voici les principales étapes que j'ai réalisées :

# installation de pelican
sudo apt-get install python-pelican
# création du répertoire qui va contenir le site
mkdir blog
cd blog
# configuration rapide
# tous les paramètres se retrouvent dans les fichiers pelicanconf.py et publishconf.py
pelican-quickstart
# création des répertoires contenant les pages et les images
mkdir -p content{pages/images}
# import du blog depuis la sauvegarde Wordpress
pelican-import --wpfile --dir-page -o content -m markdown backup.wordpress.xml
# toutes les pages et les articles ont été convertis en markdown sans problème

J'ai du mettre les doigts dans le code des articles pour corriger les catégories et les tags qui ne sont pas gérés de la même manière avec Pelican. J'en ai profité pour faire du ménage dans les images car je me suis rendu compte que Wordpress générait parfoit plusieurs tailles pour la même image.

J'ai aussi passé pas mal de temps dans la configuration des fichiers pelicanconf.py et publishconf.py qui contiennent les paramètres de génération et de publication du site. La doc de Pelican est très bien faite. J'ai trouvé d'autres infos très utiles sur le blog de circuidipidy et de Drowned in Genomics (son fichier pelicanconf.py est ici). Pour que Disqus puisse retrouver les anciens commentaires, les articles doivent conserver impérativement la même url.

Ce que j'ai apprécie avec Pelican c'est la possibilité de visualiser en local (à l'adresse http://localhost:8000) le rendu du site en lançant un mini serveur web avec la commande

make  devserver

(et make stopserver pour l'arrêter),

puis d'envoyer sur le serveur web extérieur le site lorsqu'il est satisfaisant

make rsync_upload