Isso, Pelican et Apache

Autant l'installation de Pelican s'est avérée relativement simple autant celle de ISSO m'a donné du fichier conf à retordre. Quand on lit la doc, ça parait simple. Méfiez-vous.

Apache

Rien de foufou avec apache, mais la doc et de nombreux sites montrent la configuration avec le jeunot nginx, donc, je vais montrer celle pour le bon vieux Apache. D'abord, on active le module proxy :

# a2enmod proxy proxy_http

Ensuite, dans le fichier isso.conf :

<VirtualHost *:80>
  DocumentRoot /var/www/html/isso
  ServerName isso.sanspseudofix.fr

  ProxyPreserveHost On
  ProxyRequests off
  ProxyPass / http://localhost:1234/
  ProxyPassReverse / http://localhost:1234/

  <Directory /var/www/html/isso>
    Options -Indexes +FollowSymlinks
  </Directory>
    ErrorLog ${APACHE_LOG_DIR}/isso_error.log
    CustomLog ${APACHE_LOG_DIR}/isso_access.log combined
</VirtualHost>

On redémarre apache : service apache restart

ISSO

issooooo

(non, je n'ai pas honte)

Pour l'installer, je suis, une nouvelle fois, passé par virtualenv :

$ virtualenv /var/www/html/isso # installation de l'environnement
$ cd /var/www/html/isso
$ source bin/activate # activation - pour désactiver : deactivate
(isso)$ pip install isso

Si vous rencontrez des erreurs lors de l'install, ça vient peut-être de misaka. Il faut installer la version 1.0.2 : pip install misaka==1.0.2 puis relancez l'installation de ISSO. (voir #issue 208)

Ensuite, un lien symbolique pour pouvoir utiliser la commande isso :

ln -s /var/www/html/isso/bin/isso /usr/local/bin/isso

Là, j'ai dû user de l'outil de développement de Firefox pour comprendre que le javascript n'était pas chargé parce que... Pas à la bonne place.

J'ai donc copié le dossier js/ depuis un sous-sous-sous... dossier :

$ cp /var/www/html/isso/lib/python2.7/site-packages/isso/js /var/www/html/isso

Notez que ce n'est peut-être pas la meilleure façon de faire, et que je vais peut-être finir par le regretter

La configuration de ISSO passe par isso.cfg :

[general]
dbpath = /var/www/html/isso/comments.db
host = http://sanspseudofix.fr # possibilité d'en mettre plusieurs (https par exemple)
log-file = log.log # pas particulèrement verbeux

notify = smtp # si vous voulez être notifié par mail des commentaires

[server]
listen = http://localhost:1234/ # cf isso.conf de apache plus haut

[smtp]
# l'adresse mail sur laquelle vous voulez recevoir les mails
username = ************
# le mot de passe de ce compte
password = ************
host = mail.gandi.net
port = 465
security = ssl
to = ************
from = ************

D'autres paramètres sont possibles.

Pour le lancer / tester :

isso -c isso.cfg run

Et ctrl + c pour l'arrêter.

ISSO et l'import Wordpress

Là où on a commencé à ne plus être copain avec ISSO, c'est lors de l'import de la base de données. Sur le papier, c'est assez simple : à partir de l'export Wordpress, où on obtient un fichier .xml contenant tout son blog Wordpress, il suffit de lancer :

isso -c isso.cfg import /home/spf/Téléchargements/Tests/sanspseudofix.wordpress.2016-01-18.xml
[100%]  34 threads, 171 comments

Mais lorsqu'on lance le service ISSO, aucun commentaire à l'horizon. Du coup, on regarde mieux la doc et on lit :

It has been reported that WordPress may generate broken XML. Try to repair the file using xmllint before you continue with the import.

En français :

Il a été reporté que Wordpress pouvait générer du XML cassé. Essayez de reparer le fichier en utilisant xmllint avant de continuer l'import.

Joie.

Je vous épargne les 5 jours de dépression, de folie, de pétage de câble qu'on subit mes camarades sur IRC, pour vous livrer ce qui a résolu mon souci (je suis sympa quand même) :

# On installe xmllint (ici, sur debian Jessie)
root# apt install libxml2-utils

# On utilise xmllint avec notre fichier XML
xmllint sanspseudofix.wordpress.2016-01-18.xml

Vous allez voir défiler tout votre fichier et normalement, lorsque ça fait ça, ça veut dire que tout va bien. Mais on vous ment (on vous spolie) !

Après avoir tenté plusieurs commandes (comme xmllint --postvalid wp.xml qui donne comme erreur : validity error : no DTD found!), LA commande qui, apparemment, a fait la différence est :

xmllint --dropdtd sanspseudofix.wordpress.2016-01-18.xml

xmllint -h
--dropdtd : remove the DOCTYPE of the input docs

Donc : pour résoudre le problème d'un DTD manquant, il faut... l'enlever. Paie ta logique.

Ensuite, on peut reprendre l'import ISSO standard :

isso -c isso.cfg import /home/spf/Téléchargements/Tests/sanspseudofix.wordpress.2016-01-18.xml

et là, magie : les commentaires apparaissent.

ISSO dans Pelican

Si vous êtes arrivé là, bravo ! Vous méritez la palme de la bravoure. Le reste vous paraîtra un peu trop simple.

Dans le fichier pelicanconf.py, j'ajoute :

ISSO_SERVER="http://isso.sanspseudofix.fr"

Entre les balises <head> </head>, j'ajoute :

{% if ISSO_SERVER %}
    <script data-isso="{{ ISSO_SERVER }}/" src="{{ ISSO_SERVER }}/js/embed.min.js"></script>
    {% endif %}

Et à l'endroit où je souhaite mettre mes commentaires :

<!-- Comments -->
{% if ISSO_SERVER %}
    <hr /><section id="isso-thread"></section>
    <noscript>Les commentaires de ce site utilisent javascript (oui, je sais, c'est maaaaal)</noscript>
{% endif %}
<!-- /comments -->

ISSO le démon

Après avoir traité ISSO de tous les noms, le mettre en démon était la moindre des choses (si vous ne faites pas cela, ISSO s'arrêtera dès que vous quitterez votre terminal). Pour cela, il faut écrire un script. J'ai simplement repris celui de la doc (tout en bas de la page).

# Créez le fichier /etc/init.d/isso.sh
nano /etc/init.d/isso.sh

# collez le script du lien au-dessus

# rendez le script exécutable
chmod +x /etc/init.d/isso.sh

Vous pouvez maintenant démarrer / stoper / relancer ISSO :

/etc/init.d/isso.sh start

Testé avec succès sur Debian Jessie.

Je tiens à remercier chaleureusement : hackriculture, Simonlefort, passionaqua.me, et Chocobozzz sans qui je serais sûrement encore roulé en boule dans un coin, en maudissant ISSO !

diaspora*
Retour maison