Installation réalisée sur bulbe.nos-oignons.net les 13 et 14 avril 2013.
Installation du logiciel
Pour installer Ikiwiki, il suffit d'installer le paquet :
apt-get install ikiwiki
On peut jeter un œil à la partie de la documentation sur l'utilisation d'Ikiwiki avec Git.
Pour utiliser le plugin po, on installe
po4a
:
apt-get install po4a
Modification d'Apache
Les sites générés par Ikiwiki sont accessibles par le Web. Les quelques modifications réalisées pour Apache sont documentées dans la page d'installation du service web.
Prise en compte de Gitolite
Plutôt que d'être accessible directement avec les permissions du système de
fichiers, les dépôts centraux sont gérés par Gitolite. Le wiki de
l'admin. sys se trouve par exemple dans /srv/git/repositories/wiki-admin.git
.
Ikiwiki a besoin de trois choses par rapport au dépôt central :
- pouvoir lire son contenu afin de mettre à jour le site,
- pouvoir pousser des modifications lorsqu'elles sont faites par l'interface web,
- être averti de l'arrivée de nouvelles modifications afin de mettre à jour le site.
Plutôt que d'essayer de jouer avec les permissions Unix au risque de compromettre la sécurité de Gitolite, on va accéder aux dépôts par le biais de SSH, comme le reste des participants au wiki. Cela résoud les deux premiers points.
Pour avertir Ikiwiki que des modifications ont eu lieu, il existe le plugin
pingee : une requête HTTP à la bonne
adresse lancera le rafraîchissement du wiki (git pull
et reconstruction).
Il y a une subtilité sur ce dernier point : il est nécessaire de décaler
l'exécution du ping après la fin du git push
.
Sinon, on se retrouve avec la séquence d'exécution suivante :
- Le navigateur web envoie le contenu du formulaire pour enregistrer une page.
- Le serveur web exécute le CGI.
- Le CGI prend le lock du wiki.
- Le CGI réalise le
git commit
. - Le CGI fait un
git push
. - Après avoir enregistré les nouveaux commits,
git
lance le post-update hook. - Le hook lance une requête HTTP pour faire le ping.
- Le serveur web exécute le CGI.
- Le CGI attend d'obtenir le lock du wiki.
Et il peut attendre longtemps… Pour éviter ce deadlock, on utilise donc une
astuce souvent utilisée dans ces cas là : at now
.
Création d'un wiki
L'installation d'un wiki en particulier est documentée dans la procédure de création d'un wiki.