Contexte
Byteflow − ma belle boutique
Un jour j'ai voulu avoir Hackriculture, une baraque à frites pour partager avec le monde ma
vision des frites auto-hébergées et surtout ordonner ma propre mémoire, garder
des traces structurées.
J'ai élu byteflow, écrit en
python/django comme moteur moteur de blog :
- Peu gourmand en ressources (comparé à un wordpress), ce qui est important sur mon
minuscule serveur ;
- Pouvant fonctionner avec sqlite ;
- Bidouillable (connaissant bien python/django) ;
- Offrant les fonctionnalités que je recherchais (auth OpenID, commentaires,
tags, antispam).
Un peu de bugfix et de CSS plus tard, et je me retrouvai à la tête
d'une belle baraque à frite colorée.
La baraque dérape…
Ce fut par la suite une histoire houleuse, pour faire bref :
- Le côté cuisine de la baraque était souvent inaccessible ou bugué ;
- Le logiciel n'est que peu ou pas maintenu ;
- À chaque mise à jour d'une lib se casse quelque-chose, cela
faisait bien 6 mois que les flux se répandaient en
500 huiles brûlantes
sans que je ne puisse réparer la chose sans prendre en main une grosse partie
du code ;
- Ça restait relativement lent ;
- De manière générale, je n'aime pas éditer du texte dans un navigateur.
Bref, ma belle grande baraque bigarrée
s'en allait à vau-l'huile.
Pelican le remplaçant − panique chez les frites ?
À l'occasion d'une discussion avec
mon bon copain Georges, je cogite que plutôt que
d'avoir une baraque à frites, je pourrais aussi simple avoir un blog qui
marche, et qu'il pourrait être statique. Bref, il me fait re-découvrir le moteur
de site statique pelican.
Petite présentation :
- Simple et amical avec les développeurs;
- Plus économe en ressources tu meurs (puisque statique) ;
- Utilisant le moteur de template jinja2, très proche
de celui de Django ;
- Pas de commentaires, sauf à passer par un service hébergé
disqus
Puisque j'aime à dire fermement
Ronald je ne mangerais pas de tes frites, le
dernier point était pour moi bloquant. Cependant, une fois écrémé du spam, ce blog
totalisait zéro commentaires. J'ai relativisé le problème…
Migration
Problème, byteflow étant probablement utilisé par 5 4
amateurs de frites, il n'y a aucun script de migration byteflow → pelican. Ou plutôt il n'y en
avait aucun.
Ta-poum ! En voici un : byteflow-to-pelican.py
Alors ça n'est pas un couteau suisse, mais un outil pour ma pomme, qui peut-être
réutilisé, si vous le bricolez ; comme disait dieu : « Occupe-toi de tes frites ».
Fonctionalités :
- Import depuis une base sqlite ;
- Import des meta-données globales du blog ;
- Import des articles en balisage markdown et leurs métadonnées ;
- Import des images, en gérant gracieusement les URLs ;
- Import des tags.
Non-fonctionalités :
- Import depuis une base autre que sqlite ;
- Import des commentaires ;
- Balisages autres que markdown ;
- Catégories ;
- Liens internes entre les articles ;
- Ré-écriture d'URLs.
Lire le code pour l'usage, il est documenté.
Réécriture d'URLs avec lighttpd − "301: baraque déménaged"
Vu que tout le monde avait les URLs de ma précédente baraque à frites, et que
détruire des URLs ça n'est
vraiment pas très sympa, il faut dire au
serveur web de faire des
redirections HTTP
vers les pages qui vont bien.
Exemple de configuration pour le serveur web lighttpd:
#
## Hackriculture static pelican
#
$HTTP["host"] == "hackriculture.fr" {
server.document-root = "/var/www/hackriculture.fr/pelican/"
url.redirect = (
"^/blog/\d{4}/\d{2}/\d{2}/([a-z\-]+)/?" => "/$1.html",
"^/blog/tag/(.*)" => "/tag/$1.html",
"^/feeds/atom/tag/(.*)/" => "/feeds/tags/$1.atom.xml",
"^/feeds/atom/blog/?" => "/feeds/all.atom.xml",
)
}
Deux astuces en cadeau avec le menu enfant si vous devez faire des réécritures
d'URLs :
- Ne testez pas avec votre navigateur, son cache risque de vous enduire
d'erreur.
curl -v http://example.com/old/url
vous donne un teint plus
frais ;
- Vérifiez les logs ; On a tôt fait d'oublier une réécriture, un
grep 404
/var/log/lighttpd/access.log
s'impose au bout de quelques heures/jours
pour vérifier les erreurs 404.
En parlant de frites, voici cher lecteur
un hamburger.
commentaires