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 pouvez avoir un gestionnaire de versionnement (tel que GIT)
- Vous pouvez transporter votre application sur n’importe quel serveur de base ayant un simple service web (apache, lighttpd, etc.)
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 :
- Création des dossiers principaux du Wiki
- Création du fichier de configuration
- Complétion et mise à niveau du fichier de configuration
- Création d’une première page d’accueil
- Génération du site
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 :
- Les sources : un dossier contenant les sources du notre Wiki (toutes les pages qui seront compilées)
- La destination : un dossier qui contiendra le résultat de la compilation du wiki
Je propose de procéder ainsi :
- Rendez vous dans votre dossier personnel /home/olivier (remplacez olivier par votre nom d’utilisateur)
- Créez un dossier MonIkiwikI, ceci est le dossier source
- Créez un dossier public_html, si ce n’est déjà fait (car nous expliquerons un simili d’astuce plus tard
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 :
- wikiname : désigne le nom du wiki qui s’affichera
- adminuser : à garder pour la suite si vous accepter la modification en ligne
- adminmail : adresse courriel du grand gourou de votre site
- srcdir : l’adresse ABSOLUE vers notre dossier source, ici MonWiki
- destdir : même chose pour le dossier de destination, ici le dossier public_html
- url : l’adresse entière et correcte que les utilisateurs devront taper pour arriver sur votre site
- rss : 0 pour désactiver les flux RSS, 1 pour activer
- prefix_directives : 0 pour désactiver, 1 pour activer. Permet, lorsque activé, de prendre en compte l’ancienne syntaxe d’ikiwiki préfixée avec des points d’exclamation ! (vous verrez plus loin pour les directives MAP et TOC)
- add_plugins : permet d’ajouter des plugins à notre projet wiki, je vous ai mis les plus intéressants, d’autres viendront selon vos envies / besoin et en lisant la page prévue à cet effet : Plugins Ikiwiki
- allowrss : pour activer la disponibilité des flux RSS ou pas, même s’ils ne sont pas générés par défaut
- discussion : 0 pour désactiver, 1 pour activer. Permet d’activer la possibilité aux utilisateurs de créer des pages dites “Discussion” pour chaque page du wiki
- locale : donne le jeu de caractères par défaut de votre Wiki, ici fr_FR.UTF-8 (français de base)
- syslog : 0 pour désactiver, 1 pour activer la journalisation (création d’un fichier de journalisation lors de la compilation, pour avoir des traces de ce qui a été fait)
Et si nous passions à la suite, je sens que vous êtes pressés.
Création de notre première page de Wiki
- Rendez vous dans le dossier MonWiki
- Créez puis éditez le fichier index.mdwn avec le code suivant :
<!-- Titre de la page -->
[[!meta title="Accueil du Wiki d'Olivier"]]
<!-- Contenu de la page -->
# 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][1]
* [Mon recueil d'astuces][2]
# Divers
*Texte en italique*
**Texte en gras**
# Cartographie du site
[[!map pages="*" show=title]]
<!-- Liens de la page -->
[1]: http://olivier.dossmann.net/blog/ (Se rendre sur le blog d'Olivier)
[2]: http://olivier.dossmann.net/wiki/ (Découvrir les astuces d'Olivier)
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 :
- nginx
- spawn-fcgi
- fcgiwrap
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
- Site officiel d'Ikiwiki : Pour découvrir ikiwiki et le récupérer dans sa dernière version
- Le langage Markdown : Pour apprendre le langage qui est d’une facilité enfantine