Transformer une branche d’un Dokuwiki privé en site de doc public

Transformer une branche d’un Dokuwiki privé en site de doc public

5 novembre 2018 Technique Transition numérique 0

Dokuwiki est un excellent outil (simplicité de mise en oeuvre, éditeur Wysiwyg, grand nombre de plugins) qui dispose d’une caractéristique très intéressante en terme de souplesse d’usage : son système de stockage des données.

En effet le contenu des pages est stocké « à plat » dans des fichiers au format texte, et cette caractéristique permet de prototyper très facilement des usages plutôt sympas.

Par exemple sur un wiki interne dédié au support, on pourra mettre en œuvre très simplement un dispositif de publication d’une branche du wiki en tant que site web public de documentation client. Voici comment faire.

Les namespaces Dokuwiki

Par exemple sur http://wiki.valeurdusage.net l’ensemble des documents actuellement publiés sont stockés dans un namespace (i.e une branche) nommé « docs » :

Par exemple pour la page « Sauvegarde serveur Debian avec Dropbox » si on observe son URL on va retrouver la présence du namespace « docs » :

A noter que les namespaces permettent à Dokuwiki d’identifier le chemin complet d’une page, avec la notation suivante pour notre exemple :

:docs:sauvegarde_debian_avec_dropbox

L’idée va être ici de dédier un namespace de premier niveau (comme « docs » l’est ici) à la construction d’un ensemble de pages qui constitueront le site web public.

Configuration des Dokuwiki

Supposons qu’on a créé une arborescence de pages dans un namespace « docpub » du wiki privé. Ce dernier est hébergé sur un vhost Apache du serveur avec  comme répertoire racine /var/www/wikiprive.

Le site public sera une autre instance Dokuwiki installée sur un vhost du même serveur et avec comme racine /var/www/docpub.

L’instance Dokuwiki publique aura ses propres feuilles de style CSS, et pourra être bridée pour ne pas autoriser de connexion/enregistrement/édition source des pages en ajoutant dans /conf/local.php :

$conf['disableactions'] = 'register,edit,subscribe,login';

Copie des pages et médias

Comme les fichiers (contenu des pages et medias) sont stockés en respectant l’arborescence en  namespaces, on va simplement procéder à une copie de l’ensemble du namespace « docpub » du wiki privé, vers la racine du wiki public.

Ensuite on procèdera à une opération de remplacement dans les contenus de pages pour ajuster les chemins relatifs.

Note : notre wiki utilisera en plus le plugin https://www.dokuwiki.org/plugin:translation qui gère la correspondance des pages en Anglais dans le namespace « en/docpub ».

Tout ceci va être effectué via un script shell de copie/mise à jour qui comprendra plusieurs étapes :

Effacement préalable de toutes les données du wiki doc public (pages, medias, cache, verrous, fichiers temporaires, etc.) déjà existantes :

cd /var/www/docpub/data/
rm -R attic/* || true
rm -R cache/* || true
rm -R index/* || true
rm -R locks/* || true
rm -R media/* || true
rm -R media_attic/* || true
rm -R media_meta/* || true
rm -R meta/* || true
rm -R pages/* || true
rm -R tmp/* || true

 

Suppression des archives intermédiaires de pages et medias (créées à chaque lancement du script) stockées dans le répertoire « data » du wiki public :

rm /var/www/docpub/data/doc-backup.tar.gz || true
rm /var/www/docpub/data/docmedia-backup.tar.gz || true
rm /var/www/docpub/data/doc-backup-EN.tar.gz || true
rm /var/www/docpub/data/docmedia-backup-EN.tar.gz || true

Recréation des archives intermédiaires des pages (FR et EN) :

cd /var/www/wikiprive/data/pages/docpub
tar zcpfv /var/www/docpub/data/doc-backup.tar.gz .

cd /var/www/wikiprive/data/pages/en/docpub
tar zcpfv /var/www/docpub/data/doc-backup-EN.tar.gz .

Décompression :

cd /var/www/docpub/data/pages/
tar zxpfv /var/www/docpub/data/doc-backup.tar.gz -C .
mkdir en
cd en
tar zxpfv /var/www/docpub/data/doc-backup-EN.tar.gz -C .

 

Idem pour les médias :

cd /var/www/wikiprive/data/media/docpub
tar zcpfv /var/www/docpub/data/docmedia-backup.tar.gz .
cd /var/www/wikiprive/data/media/en/docpub
tar zcpfv /var/www/docpub/data/docmedia-backup-EN.tar.gz .

cd /var/www/docpub/data/media/
tar zxpfv /var/www/docpub/data/docmedia-backup.tar.gz -C .
mkdir en
cd en
tar zxpfv /var/www/docpub/data/docmedia-backup-EN.tar.gz -C .

 

Ajustement des chemins relatifs au sein des pages

La commande suivante va supprimer dans les pages du wiki public la chaine « docpub: » correspondant au namespace tel qu’il est mentionné dans les contenus pour les chemins relatifs de pages (note : cette chaîne sera donc « interdite » dans le contenu de notre site) :

find /var/www/docpub/data/pages -type f -print0 | xargs -0 sed -i 's/docpub://g'


Recréation du cache

Enfin il va falloir recréer le cache Dokuwiki afin que le moteur de recherche fonctionne, ainsi que l’affichage des pages en fonction de leur titre de niveau 1. C’est la commande suivante qui s’en chargera :

touch /var/www/docs/conf/local.php

 

Et voilà. Il n’y plus qu’à jouer avec le CSS pour décorer notre site de documentation client ; )

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *