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 :

  1. Le navigateur web envoie le contenu du formulaire pour enregistrer une page.
  2. Le serveur web exécute le CGI.
  3. Le CGI prend le lock du wiki.
  4. Le CGI réalise le git commit.
  5. Le CGI fait un git push.
  6. Après avoir enregistré les nouveaux commits, git lance le post-update hook.
  7. Le hook lance une requête HTTP pour faire le ping.
  8. Le serveur web exécute le CGI.
  9. 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.