{{tag>dokuwiki wiki apache ferme}}
== Une ferme de wikis ==
====== Kesako? ======
L'idée est d'installer plusieurs Wikis en centralisant la gestion des mises à jour, des plugins et des options.\\
Il y a donc la //ferme// (avec le moteur, les plugins, ...) et ses //animaux// qui sont utilisés pour les données.
====== Mise en place ======
Si ce n'est pas déjà fait, lisez [[doku>farms|la page officielle]] avant de revenir ici (à ce jour, la page en français n'est pas à jour).
==== Préparation du serveur web ====
Mon //registrar// me permettant de créer autant de sous-domaines que souhaité, j'ai opté pour la méthode des hôtes virtuels de la [[https://www.dokuwiki.org/farms|page officielle]] en modifiant très légèrement la structure proposée par celle-ci (dans un soucis de limiter le nombre de dossiers à la racine du serveur web):\\
* ...www
* dokufarm
* _animal (le modèle d'animal)
* farmer (le fermier ou le moteur DokuWiki)
* animal1 attention au nom du dossier qui doit correspondre à celui de l'hôte virtuel ((par exemple pour l'animal que vous êtes en train de consulter, le dossier se nomme ''info.geekitude.fr''))
* ...
Dans la série faite ce que je dit et pas ce que je fait, j'ai commencé par utiliser la structure proposée et changé d'avis en cours de route. La bonne nouvelle c'est que l'opération est possible et n'a pas été bien difficile, il faut juste être méthodique.
Dans un premier temps, il faut créer l'arborescence ''dokufarm/farmer'' pour y installer DokuWiki et préparer l'hôte virtuel correspondant en suivant les procédures standard.
==== Modèle d'animal ====
Avant de créer un animal, il faut modifier le fichier //.../conf/acl.auth.php// du modèle...\\
Voici une possibilité (droits complets pour le group //@admin//, création, modification et gestion des medias pour le groupe //@user// et lecture seule pour les autres):
# acl.auth.php
#
# Don't modify the lines above
#
# Access Control Lists
#
# Editing this file by hand shouldn't be necessary. Use the ACL
# Manager interface instead.
#
# If your auth backend allows special char like spaces in groups
# or user names you need to urlencode them (only chars <128, leave
# UTF-8 multibyte chars as is)
#
# none 0
# read 1
# edit 2
# create 4
# upload 8
# delete 16
* @ALL 1
* @admin 16
* @user 8
==== Ajouter un animal ====
* Se connecter au FAI pour ajouter un CNAME
* Copier le modèle d'animal vers un nouveau dossier correspondant à l'animal
cd /var/www/dokufarm/
cp -R _animal/ jdr.geekitude.fr
* Créer le site virtuel à partir d'un autre animal
cd /etc/apache2/sites-available/
cp dokuanimal.info.conf dokuanimal.jdr.conf
vi dokuanimal.jdr.conf
ServerName jdr.geekitude.fr
DocumentRoot /var/www/dokufarm/farmer
Avec Debian 9, le fichier ci-dessus suffit pour un fonctionnement standard de l'animal mais pas à l'activation de la fonction d'//URL rewriting// basée sur un fichier ''.htaccess'', voir ci-dessous un exemple à jour du même fichier aujourd'hui.
ServerName jdr.geekitude.fr
DocumentRoot /var/www/dokufarm/farmer
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
* Activer le site virtuel
a2ensite dokuanimal.photo.conf
Enabling site dokuanimal.photo.
To activate the new configuration, you need to run:
service apache2 reload
service apache2 reload
* Eventuel script externe
cd /mnt/muffin/scripts/
vi dokufarm.sh
dokufarm.sh
* Script interne
cd /var/www/dokufarm/farmer/inc/
vi preload.php
* Gérer les droits
webdroits.sh
==== Et voilà ! ====
Ou presque...
{{ info:logiciels:doku:animal_erreur.jpg?nolink |}}
Pas de panique :-)\\
J'ignore si c'est toujours comme cela ou lié à la méthode d'installation choisie mais ce cas s'est présenté à chaque création d'un nouvel animal. Ne pas cliquer sur le lien proposé pour lancer l'installateur (qui s'applique probablement à une installation standard et pas à une //ferme//) mais il suffit simplement de ré-appliquer les droits utilisés sur l'ensemble du site au nouvel animal pour que tout fonctionne correctement.
Attention :
à ce stade, tout est fonctionnel mais si vous n'avez pas modifié le modèle d'animal comme indiqué plus haut, par défaut, n'importe qui, sans même être connecté, peut créer ou supprimer des pages.
====== Plus de centralisation ======
* script preload.php : smileys
* script bash dokufarm.sh pour les images communes
====== Astuces ======
===== Favicon & Co =====
Pour que chaque animal ait sa propre [[wp>Favicon|icône]], c'est très simple (mais l'info n'est pas facile à trouver) : il suffit de placer le(s) fichier(s) correspondant(s) (''favicon.ico'' et/ou ''apple-touch-icon.png'') à la racine du dossier ''data/media'' de chaque animal.
===== URLs plus sexy =====
Il est tout à fait possible d'utiliser l'//URL rewriting// avec une ferme de wikis (en tout cas avec la méthode des hôtes virtuels présentée dans cet article). La procédure est exactement la même que pour un wiki solitaire mais retenez simplement que le fichier ''.htaccess'' doit être placé à la racine du moteur DokuWiki (ici dans le dossier ///farmer//) sans changer la ligne ''RewriteBase /'' et [[info:logiciels:doku:accueil#Des URLs plus sexy|se trouve ici]].