Geekitude

Geekeries en tout genres

Outils pour utilisateurs

Outils du site


info:logiciels:doku:accueil
DokuWiki

Pourquoi DokuWiki?

Points forts

  • Les pages sont sauvegardées en tant que simples fichiers textes donc même en cas de crash complet du serveur, une simple copie de sauvegarde de l'arborescence DokuWiki permettra de retrouver le contenu. <3 <3 <3
  • Installation et maintenance très simples puisse qu'aucun serveur de base de données n'est nécessaire.
  • Une communauté très réactive et prête à aider. =)
  • Avec un minium de connaissances en PHP, il est possible de créer ses propres plugins et templates (même si cela n'a pas que des avantages).
  • Par défaut, DokuWiki est livré avec le template éponyme qui est sobre, esthétique et fonctionnel à n'importe quelle résolution d'écran.

Points faibles

  • Le code des plugins semble moins fiable que ceux, par exemple, de MediaWiki.
  • Pour obtenir le meilleur de DokuWiki, il faut mettre les mains dans le cambouis (et, pour les non développeurs, ce n'est pas forcément simple, même si c'est passionnant 8-)).
  • Impossible de comprendre pourquoi DokuWiki n'intègre pas la possibilité d'afficher un logo spécifique par Espace de nom ou Namespace :-x.

Attention à la boulimie de plugins! ;-)
On peut facilement se laisser emporter et installer une pléthore de plugins pour réaliser plus tard que certains ne sont plus mis à jour (ou du moins pas aussi rapidement que Dokuwiki lui-même) et donc se retrouver coincé avec un plugin qui ne fonctionne plus.
Par ailleurs, multiplier les plugins de syntaxe peut rendre plus complexe la mise en forme des pages au lieu de la simplifier.

Installation

Par défaut, Apache est configuré pour stopper les scripts PHP au delà de 30 secondes. Malheureusement, selon la complexité de la syntaxe utilisée et la puissance du serveur web, l'enregistrement de certaines pages peut prendre plus de temps et ne fonctionnera pas (avec un risque important de perdre les dernières modifications). Pour changer cette limite de temps, il suffit d'éditer le fichier php.ini utilisé par le serveur web (dans mon cas /etc/php5/apache2/php.ini) :

;max_execution_time = 30
max_execution_time = 60
.../...
;max_input_time = 60
max_input_time = 120

Plugins indispensables

Color

Qui ajoute l'indispensable balise <color red><color></color></color> : plugin:color.

DokuWiki Upgrade Plugin

Sans ce plugin, il faudra télécharger les mises à jour manuellement et les appliquer de la même manière. Ce plugin ajoute sur la page d'administration un lien qui permettra de gérer le processus automatiquement (ou presque1)) : plugin:upgrade.
Notez qu'il est très probable que ce plugin soit intégré d'office aux prochaines versions de DokuWiki mais ce n'est pas encore le cas avec Hrun.

Ce plugin permet de réunir toutes les images d'un espace de nom en une gallerie : plugin:gallery. Par défaut, les images sont affichées dans un cadre totalement transparent or certains préféreront un fond de couleur.

Include

Dans un wiki, on est parfois obligé de se répéter et cet astucieux plugin permet justement d'intégrer une page (ou une portion) dans une autre : plugin:include.

Astuce : Include permet aussi de montrer un contenu différent aux utilisateurs en classant le contenu B dans un namespace ou une page d'accès restreint et en l'incluant dans la page A ouverte à tous (les utilisateurs ne disposant pas de l'accès à B qui consulteront A ne verront pas le contenu provenant de B ni même une trace de l'inclusion).

Wrap

Pas simple à aborder au début, les possibilités de ce plugin sont très nombreuses, comme par exemple créer des blocs flottants, des encarts visuels de différents types (astuce, important, alerte, …) : plugin:wrap.

L'aspect complexe de ce plugin peut vraiment faire peur au départ mais il vaut vraiment la peine de s'y intéresser tant les possibilités sont nombreuses. Autre avantage non négligeable : il est très populaire et il est peu probable qu'il tombe un jour dans l'oubli…

Autres plugins utiles

Blockquote

Qui permet de créer des citations visuellement très esthétiques (en dehors de quelques choix esthétiques étranges) : plugin:blockquote.

CustomButtons

Qui permet de créer des icônes dans la barre d'édition. Très pratique pour les syntaxes utilisées couramment mais pas toujours faciles à se rappeler : plugin:custombuttons.
Petit avertissement : même si le plugin est, en ce début 2015, compatible avec la dernière version de DokuWiki, le design date un peu et il y a un peu de boulot pour l'améliorer.

Tag

Le nom est assez évocateur pour se passer de commentaire.
Autre plugin requis: plugin:pagelist.
Avertissement :le rendu visuel par défaut n'est vraiment pas terrible. La page officielle est à lire en détails plugin:tag et vous pouvez aussi voir mes propres bidouilles la question des bidouilles est en suspens: j'en ai proposée 2 au développeur du plugin, l'une est encore en attente et il ne restera qu'un bug à corriger… À suivre….

TemplateByName

Ce plugin permet de créer des modèles de pages qui s'appliqueront en fonction de l'espace de nom ou du nom de page ce qui est très utile pour fournir un modèle de topbar ou de sidebar : plugin:plugin:templatebyname.

User Homepage

Ce plugin permet de générer automatiquement un espace de nom et/ou une page publique pour chaque utilisateur ainsi que les règles ACL qui s'y rapportent (mais aussi de l'y rediriger automatiquement à la connexion) : plugin:userhomepage.
C'est moi qui l'ai (presque) fait ! Ce qui le rends quasiment indispensable LOL.

Astuces

Voici quelques astuces inoffensives2) pour tirer le meilleur de Dokuwiki

Plus de Smileys

Voici comment procéder pour ajouter des smileys ou d'autres substitutions de texte par une image (comme les dots chers aux Jeux de Rôles de la gamme World of Darkness), en évitant qu'une mise à jour ne vienne supprimer la modification :

  • créer un dossier …/lib/images/smileys/local et y placer les images (typiquement au format png ou gif)
  • créer un fichier …/conf/smileys.local.conf et y insérer les couples texte à remplacer - image de substitution.

Voici par exemple quelques “smileys” utiles :

Les “dots” cités plus haut :

Et le fichier “conf/smileys.local.conf” correspondant :

<3          local/coeur.png
>:o         local/stop.png
§ar         local/archive.png
§ca         local/cadenas.png
§co         local/construction.png
§cv         local/coche_verte.png
§cr         local/croix_rouge.png
§0          local/dots0.png
§1          local/dots1.png
§2          local/dots2.png
§3          local/dots3.png
§4          local/dots4.png
§5          local/dots5.png
§00         local/dots00.png
§10         local/dots10.png
§20         local/dots20.png
§30         local/dots30.png
§40         local/dots40.png
§50         local/dots50.png

Il peut être nécessaire de purger la copie en cache de la page en ajoutant &purge=true à la fin de l'url pour forcer DokuWiki à la recharger afin de visualiser l'effet immédiatement.

Pour que les nouveaux smileys apparaissent dans la barre d'outil d'édition de page, il va falloir vider le cache du navigateur et purger le cache des divers éléments JavaScript du serveur DokuWiki en accédant à cette url :

http://www.mon.dokuwiki.fr/lib/exe/js.php?purge=true

Altérer l'apparence

En ajoutant du style

Il est possible d'altérer un style CSS général ou défini par un plugin de manière durable (càd sans risque de devoir refaire la manipulation après une mise à jour de DokuWiki ou du plugin correspondant).

Il suffit simplement d'appliquer la modification à l'un des fichiers de la liste qui suit selon le résultat recherché :

  • …/conf/userstyle.css (affichage uniquement)
  • …/conf/userprint.css
  • …/conf/userfeed.css (
  • …/conf/userall.css

Pour plus de détails et d'autres possibilités du même type, voir ici.

Quelques exemples

En modifiant les placeholders CSS

Les modèles (ou templates) utilisent (ou du moins devraient car certains sont assez mauvais élèves) des placeholders qui sont définis dans leur fichier …/lib/tpl/<color red><template></color>/style.ini et sont des variables utilisées non seulement dans les feuilles de style du template concerné mais théoriquement aussi dans les plugins (cela permet en quelque sorte de définir une charte graphique qui sera respectée dans tous les aspects de votre Wiki).

Pour modifier durablement ces valeurs, il suffit d'indiquer les valeurs voulues dans un fichier …/conf/tpl/<color red><template></color>/style.ini en respectant la nomenclature définie. D'ailleurs ce même fichier permet aussi d'ajouter directement une feuille de style. * css

Il existe maintenant le plugin Styling qui permet de modifier les placholders très facilement et de manière graphique.

Pour aller plus loin

Pour tirer le maximum de DokuWiki et altérer plus profondément son comportement initial, il faut mettre les mains dans le cambouis (voir la rubrique Bidouilles ci-dessous.

Bidouilles

Les modifications proposées ici concernent directement le code des plugins et seront donc écrasées en cas de mises à jour :-\. La meilleure solution est de proposer à l'auteur de modifier son code…

On peut aussi évidement trifouiller le code de DokuWiki directement, mais, évidement, ces modifications seront écrasées à chaque mise à jour du logiciel (si le fichier en question est concernée par la mise à jour). Il est aussi possible de proposer la modification à la communauté DokuWiki puisqu'il s'agit d'un projet Open Source et communautaire mais il est évident qu'il faut d'une part que le code proposé soit absolument nickel et soit ensuite jugé utile.

Trop de bidouilles ?

Les pages DokuWiki sont mises en cache pour 24h (c'est probablement la même chose pour le cache Javascript et le cache CSS) et pour constater immédiatement un changement, il faut parfois forcer le rafraîchissement du cache. Et voici comment procéder selon ce que l'on souhaite purger :

  • pour la version en cache d'une page, il suffit d'ajouter ?purge=true à la fin de la barre d'adresse (ou &purge=true) et de recharger la page
  • pour forcer la purge de l'ensemble des pages en cache, il faut utiliser la commande touch sur le fichier …/conf/local.php ou plus simplement forcer l'enregistrement des options du Wiki
  • pour le cache Javascript (ce qui inclut par exemple la barre d'outil de la fenêtre d'édition), il faut d'abord vider les documents et images dans le cache du navigateur puis consulter la page …/lib/exe/js.php?purge=true
  • pour le cache CSS, il faut consulter la page …/lib/exe/css.php?purge=true.

Des URLs plus sexy

L'URL type d'une page DokuWiki (http://info.geekitude.fr/doku.php?id=debian:base) est considérée à raison comme très moche et présente l’inconvénient de poser des problèmes d'indexation des pages à certains moteurs de recherche. Le but est donc de pouvoir utiliser une adresse comme http://info.geekitude.fr/debian/base <3 ce qui va être possible grâce à la méthode dite URL rewriting.

Voici les deux options utiles et le type d'URL qui en découle :

userewrite useslash URL
§cr §cr ou §cv http://info.geekitude.fr/doku.php?id=debian:base
Interne à Dokuwiki §cr http://info.geekitude.fr/doku.php/debian:base
Interne à Dokuwiki §cv http://info.geekitude.fr/doku.php/debian/base
Fichier .htaccess §cr http://info.geekitude.fr/debian:base
Fichier .htaccess §cv http://info.geekitude.fr/debian/base

La méthode Interne à Dokuwiki ne pose aucune difficulté et dans tous les cas, cocher ou pas useslash n'est qu'une formalité. Par contre, la méthode Fichier .htaccess est plus compliquée à mettre en place…

Avec Apache sous Debian

Je n'entrerais pas dans les détails car je n'ai pas étudié la question de près et un guide complet sur l'URL rewriting sort du cadre de cet article

Prérequis

Le module utilisé (mod_rewrite) est normalement installé par défaut (au moins depuis Wheezy). Il était inactif à l'installation de Wheezy mais semble systématiquement activé avec Jessie.
Pour vérifier dans un premier temps qu'il est bien installé, il suffit de s'assurer que le fichier mod_rewrite.so est présent dans le dossier /usr/lib/apache2/modules/ : <cli>root@muffin:/# ls -l /usr/lib/apache2/modules/mod_rewrite.so -rw-r–r– 1 root root 67624 mars 15 10:52 /usr/lib/apache2/modules/mod_rewrite.so</cli> Ensuite pour vérifier s'il est reconnu par Apache : <cli>root@muffin:/# ls -l /etc/apache2/mods-available/rewrite.load -rw-r–r– 1 root root 66 mai 25 2014 /etc/apache2/mods-available/rewrite.load</cli> Enfin, s'il est activé, un lien symbolique pointant vers le fichier ci-dessus doit exister ici : <cli>root@muffin:/# ls -l /etc/apache2/mods-enabled/rewrite.load lrwxrwxrwx 1 root root 30 mai 23 12:14 /etc/apache2/mods-enabled/rewrite.load → ../mods-available/rewrite.load</cli> Pour l'activer sous Wheezy, il fallait utiliser cette commande : <cli>root@muffin:/# a2enmod mod_rewrite</cli>

Mise en place

Puis d'ajouter à la fin du fichier /etc/apache2/apache2.conf les ligne suivantes:

<ifModule mod_rewrite.c>
RewriteEngine On
</ifModule>

Inutile de redémarrer le service Apache immédiatement.
Ensuite, il faut indiquer au site qui héberge DokuWiki de faire appel à ce module en créant à sa racine le fichier .htaccess suivant:

.htaccess
RewriteEngine on
 
RewriteBase /
 
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$               doku.php

Si DokuWiki n'est pas hébergé à la racine du site mais par exemple dans le sous-dossier /dokuwiki, il faudra adapter en conséquence la ligne RewriteBase (et uniquement celle-là).

Ensuite, il faut modifier au niveau du wiki les options userewrite et useslash:

Enfin, il ne reste qu'à redémarrer Apache:

service apache2 restart

Notez que tout ceci ne modifie pas la syntaxe DokuWiki en ce qui concerne les liens internes et qu'un favori pointant sur une adresse Dokuwiki standard fonctionnera toujours.

Mon modèle à moi

Problèmes rencontrés

Entrepôt d'extensions injoignable

La mauvaise surprise il y a quelques temps à l'occasion d'une visite de la page de gestion des greffons : <msg error>L'entrepôt d'extensions est injoignable. Veuillez vous assurer que le serveur web est autorisé à contacter www.dokuwiki.org et vérifier les réglages de proxy.</msg> Après quelques mauvaises recherches qui n'aboutissent pas, on prends son mal en patience un ou deux jours en se disant que le problème se trouve du côté de Dokuwiki et va vitre être résolu (ou qu'au pire il y aura des messages sur la toile)… Sauf que rien ne se présente :-(

Pour trouver une réponse, il faut se baser sur les termes exacts du message en anglais (pour l'obtenir, passer temporairement l'option de la langue de l'interface du wiki en anglais) : <msg error>The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.</msg> Et malheureusement, les seuls résultats obtenus dans le forum Dokuwiki (ici ou ) confirment que le serveur n'arrive pas à accéder au site https://www.dokuwiki.org avec le protocole HTTPS.

La situation est la suivante : un site auto hébergé sur un serveur Debian fraîchement installé qui, soit disant, n'arrive pas à accéder à un site web alors que l'ordinateur juste à côté qui utilise donc la même connexion internet y arrive très bien… Mouais… :-?

J'ai donc téléchargé un Dokuwiki tout neuf en cochant la case magique [Micro Apache] qui donne donc un Dokuwiki portable et le verdict est sans appel : même problème alors que cette fois c'est sur le même ordinateur qui navigue sans problème sur le site en question m(. Le test suivant a été d'installer un navigateur en mode texte sur le serveur Debian pour accéder (toujours en HTTPS) à ce fameux site… Et il faut bien 2 minutes chrono pour obtenir la page :-X.

Je me suis donc tourné vers mon fournisseur d'accès (Free), sans succès :-\. Mais ne voyant pas d'autre piste, j'ai cessé de chercher une explication directement liée à Dokuwiki pour me contenter d'écumer les forums à la recherche d'autres utilisateurs de ce FAI rencontrant des problèmes en HTTPS.

L'explication est la suivante : à l'occasion d'une mise à jour, la Freebox V6 est passée en IPV6 prioritaire et même si mon serveur était configuré en IPV4 avec une IP fixe, j'ai l'habitude de laisser le DHCP du FAI fournir les serveurs DNS et je n'avais évidement pas noté le passage des DNS en IPV6.

Petit test en forçant le DNS IPV4… Miracle! Problème résolu! 8-)

1)
Avec ou sans le plugin DokuwWiki Upgrade, les notifications de mises à jour sont rétives. Il faut attendre 24h, utiliser la commande touch sur le fichier doku.php ou effacer le fichier …/data/cache/messages.txt
2)
prévues par Dokwiki, ces astuces résisteront aux mises à jour et ne risquent pas de provoquer de bugs
info/logiciels/doku/accueil.txt · Dernière modification : 2024/05/17 08:23 de Admin