Présentation

ikiwiki est un palindrome. Non vous ne divaguez pas, je viens de dire que c’est un palindrome, c’est à dire que le mot repris à l’envers donne le même mot.

Bon, trève de plaisanteries, ikiwiki c’est surtout un moteur de wiki. Mais pas n’importe quel moteur de wiki, car sa particularité est de générer des pages statiques à partir de pages sources écrites en langage Markdown !

Beuh les pages statiques c’est bête, on a pas de contenu dynamique …

Et bien figurez vous que si ! C’est un moteur tout à faire particulier qui regénère seulement les pages ayant subi des modifications, ce qui réduit le temps de recompilation des pages.

La particularité des pages statiques et d’ikiwiki est que :

Vous allez me dire :

oui mais un wiki, n’est ce pas justement fait pour être modifié par tout le monde ?

Là encore le gestionnaire de versionnement tel que Git, SVN, CVS, etc. permet à tout à chacun de participer au dépôt. Après mise à jour, la machine sur laquelle se trouve le dépôt lance un script qui va recompiler les pages modifiées afin qu’elles soient mises à jour sur le net.

Une autre méthode est disponible sur ikiwiki, pour ceux qui ne savent pas ce qu’est un gestionnaire de versionnement et/ou ne voudraient pas s’enquiquiner à en installer un : un formulaire d’édition des pages du wiki.

Ah super on entre vraiment dans un wiki alors !

Eh oui. Par contre là le script qui permet d’arriver à cela est un script CGI. Donc là encore une configuration rapide s’impose au niveau du serveur Web ou bien dans un fichier .htaccess, ce qui est largement documenté sur le site officiel d’Ikiwiki.

Que dire de plus, si ce n’est : lançons nous dans l’utilisation !

Installation

NB : L’ensemble des commandes ont été effectuées sur une Debian.

Via les paquets de votre distribution

Pour récupérer ikiwiki, rien de plus simple :

apt-get install ikiwiki

Ceci vous installe un jeu de commandes de base, mais également Markdown.

Via la dernière version du dépôt GIT

Quelques dépendances avant de se lancer :

apt-get install git-core perl, libcgi-formbuilder-perl, libcgi-session-perl, libhtml-scrubber-perl, libxml-simple-perl, libhtml-template-perl

Puis allez dans le répertoire de votre choix et faites :

git clone git://git.ikiwiki.info/
cd git.ikiwiki.info

Ensuite lancez la commande suivante (en tant que root) pour installer les dépendances :

PERL5LIB=`pwd` PERL_MM_USE_DEFAULT1 perl -MCPAN -e 'CPAN::Shell->install("Bundle::IkiWiki")'
PERL5LIB=`pwd` PERL_MM_USE_DEFAULT1 perl -MCPAN -e 'CPAN::Shell->install("Bundle::IkiWiki::Extras")'

On lance ensuite l’installation à l’aide des commandes suivantes :

perl Makefile.PL
make
make test # optional
make install

Cas particulier de Markdown

Lors de mes tests et utilisations d’ikiwiki, j’ai pu remarquer des soucis de conversion entre mes fichiers Markdown et le résultat final, pour palier à ce problème la solution a été d’installer le paquet markdown-1.0.2b8 ! Il a donc fallu récupérer le paquet dans la distribution experimental de Debian via l’adresse suivante : http://packages.debian.org/experimental/markdown . De là on télécharge le paquet avec la commande suivante :

wget http://ftp.fr.debian.org/debian/pool/main/m/markdown/markdown_1.0.2~b8-2_all.deb

On installe le paquet en tant que superutilisateur :

su
dpkg -i markdown_1.0.2~b8-2_all.deb

Puis on modifie le fichier apt_preferences pour ne pas revenir en arrière lors de la mise à jour de Debian :

su
echo -e "Package: markdown<br/>nPin: version 1.0.2*<br/>nPin-Priority: 999<br/>n<br/>nPackage: ikiwiki<br/>nPin: version 2.66*<br/>nPin-Priority: 999<br/>n" >> /etc/apt/preferences

Ce qui donne le code suivant dans votre fichier /etc/apt/preferences :

Package: markdown
Pin: version 1.0.2*
Pin-Priority: 999 

Package: ikiwiki
Pin: version 2.66*
Pin-Priority: 999

Notez que j’en ai profité pour mettre une préférence sur ikiwiki, de sorte à avoir la version 2.66 (plus “fraîche”).

Création d’un nouveau wiki

La création d’un nouveau wiki grâce à ikiwiki, selon moi, se déroule selon les étapes suivantes :

Par suite on peut imaginer une dernière étape : mettre le site en ligne.

Création des dossiers principaux du Wiki

Pour fonctionner, ikiwiki demande un minimum d’organisation. Voilà pourquoi il faut un dossier pour chaque chose, voici donc le minimum des dossiers à avoir :

Je propose de procéder ainsi :

J’aurais voulu dire: Vous voilà fins prêts !

Mais en fait non, il reste encore quelques étapes, courage !

Le fichier de configuration, la clé du succès !

Il va falloir désormais passer à la configuration de notre Wiki. Seconde et avant dernière étape de la création du wiki. C’est l’étape la plus difficile, mais avec ce que nous verrons ici, ça vous paraître facile.

Concrètement, créez un fichier nommé MonSuperWiki.setup, ou tout autre nom qui vous vient en tête. Cependant rappelez vous que c’est CE fichier qui va permettre la création de tout le reste, alors mettez un nom parlant pour ne pas supprimer le fichier dans un futur proche !

Ensuite éditez le fichier de configuration et ajoutez ceci :

#!/usr/bin/perl

use IkiWiki::Setup::Standard {
        wikiname => "Le wiki d'Olivier",
#       adminuser => [""],
       adminemail => 'olivier@dossmann.net',

        srcdir => "/home/olivier/MonWiki",
        destdir => "/home/olivier/public_html",

        url => "http://olivier.dossmann.net/~olivier",

        rss => 1,
        prefix_directives => 1,
        add_plugins => [qw{goodstuff wikitext sidebar map camelcase}],
        allowrss => 1,
        discussion => 0,
        locale => 'fr_FR.UTF-8',
        syslog => 0,
}

Ça va, vous n’êtes pas mort ? J’espère que vous aurez compris les choses suivantes :

Et si nous passions à la suite, je sens que vous êtes pressés.

Création de notre première page de Wiki

J’ai fait exprès d’ajouter quelques “surprises” de quoi vous permettre en un fichier d’avoir les bases de la création d’un fichier structuré pour votre Wiki.

On aurait très bien pu faire plus simple tel que :

# Sommaire
 
[[!toc levels=6]]

# Bienvenue sur la page d'Olivier !

## Présentation

Je me nomme Olivier, je suis né à ...

## Quelques liens

Voici quelques liens intéressants :

  * [Mon blog](http://olivier.dossmann.net/blog/ "Se rendre sur mon blog")
  * [Mon recueil d'astuces](http://olivier.dossmann.net/wiki/ "Découvrir les astuces d'Olivier")

# Divers

*Texte en italique*

**Texte en gras**

# Cartographie du site

[[!map pages="*" showtitle]]

Il ne vous reste plus qu’à compiler pour vérifier le résultat.

Génération du site

Pour faire simple :

ikiwiki --setup /home/olivier/MonSuperWiki.setup

Et le tour est joué ;)

Si tout va bien vous devriez avoir de nouveaux fichiers dans le dossier public_html. Ouvrez un navigateur web et entrez l’adresse URL que vous aviez mise dans votre fichier de configuration, si vous ne vous êtes pas trompés, une page ikiwiki devrait apparaître.

Sinon testez l’adresse suivante dans un navigateur Web : file:///home/olivier/public_html/index.html. Ceci devrait vous faire apparaître votre Wiki.

Félicitations ;)

Appliquer une feuille de style

Pour appliquer une feuille de style personnalisée, rien de plus simple : il suffit de créer le fichier local.css à la racine de notre répertoire source du wiki. Dans notre exemple, il faut créer le fichier /home/olivier/MonWiki/local.css.

À vous de créer un CSS à votre goût. Si vous ne vous sentez pas d’humeur, tentez de trouver un CSS à la place du marché des CSS sur ikiwiki.info .

Erreurs rencontrées

Erreur :

Can't locate Search/Xapian.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 311) line 2.
BEGIN failed--compilation aborted at (eval 311) line 2.

Solution : installer le paquet libsearch-xapian-perl.

Lancer le résultat sur Nginx

Dépendances

Il vous faut :

On installe le tout de la manière suivante :

apt-get install nginx spawn-fcgi fcgiwrap

Configuration de Nginx

On édite le fichier /etc/nginx/sites-available/default :

server {

  root /home/olivier/ikiwiki;
  index index.html;
  server_name ikiwiki.mondomaine.tld;


  location / {
    try_files $uri $uri/ /index.html;
  }

  location /ikiwiki.cgi {
    gzip off;
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
    fastcgi_index ikiwiki.cgi;
    fastcgi_param SCRIPT_FILENAME /home/olivier/ikiwiki/ikiwiki.cgi;
    fastcgi_param DOCUMENT_ROOT /home/olivier/ikiwiki;
    include /etc/nginx/fastcgi_params;
  }
}

Liens utiles