CransWiki:

/!\ Cette page est technique, elle s'adresse donc aux Nounous. Pour une documentation plus potable SommaireDeL'Aide /!\

Le making-of du wiki

Ce wiki est basé sur le moteur MoinMoin, un moteur de wiki écrit en python.

Nous utilisons actuellement la version 1.9.8 de MoinMoin, qui tourne sur une machine Jessie.

Sans s'intéresser davantage aux motivations de ce choix, détaillons le fonctionnement de ce wiki.

Fonctionnement général

Ce wiki est installé et est servi par un domU nommé niomniom.crans.org, qui est le domU dédié aux sites webs du crans (http://autostatus.crans.org, http://wiki.crans.org, http://install-party.crans.org et http://federez.crans.org). Il est donc maintenant servi par wsgi : http://wiki.apache.org/logging/HelpOnInstalling

Pour ceux qui veulent voir comment installer un wiki moinmoin sur debian : http://moinmo.in/MoinMoinPackages/DebianLinux

Le grand avantage de MoinMoin est son système de plugins qui permet donc de le customiser sans avoir à le patcher, on y trouvera tout un tas de choses plus ou moins inutiles (des portails, des boxes, des macros à la con, etc.). Malheureusement, le système de plugins ne permet pas de faire tout ce qu'on voudrait, et même si la plus grande partie des customisation du Cr@ns sont incorporées sous formes de plugins, certains le sont sous forme de patches dans les sources de MoinMoin.

Détaillons tout d'abord rapidement la conf d'apache2 qui va notamment :

Apache2 envoie enfin toutes les requêtes à /usr/share/moin/server/moin.wsgi. moinmodpy va ensuite charger sa configuration /etc/moin/farmconfig.py, qui est la conf de base fournie par Debian (dans /usr/share/moin/config/wikifarm). MoinMoin étant correctement installé, moin.wsgi n'aura aucun mal à trouver le moteur.

Ainsi la configuration du wiki du crans, /etc/moin/mywiki.py est chargée par wikifarm.py. C'est donc dans ce fichier que se trouvent les détails de configuration spécifiques au wiki du Crans, dans lequel sont modifiés les paramètres dont les valeurs par défaut, définies dans /usr/share/pyshared/MoinMoin/config/multiconfig.py, ne nous conviennent pas. On peut à tout moment observer la configuration du wiki sur SystemInfo (attention, il faut se rajouter en superuser dans /etc/moin/mywiki.py)

C'est dans ce fichier qu'est détaillé là où se trouvent les données du wiki, à savoir /var/local/wiki/data. Les underlays par contre sont maintenant dans /usr/share/moin/htdocs/underlay (penser à donner les bonnes permissions à chaque mise à jour de MoinMoin), ainsi que nos plugins maisons (depuis /usr/scripts/wiki). Les ressources statiques sont servies directement d'une copie local du repo git des ressources statiques du wiki du Cr@ns (moin_htdocs_crans).

Pourquoi patcher les sources

Certaines modifications sont trop sévères pour être rajoutées en plugin

Tous ces patches sont dans /usr/scripts/wiki/patches (il y a un peu de fuzz dans ces patches) Après une mise à jour de moinmoin (toujours critique), il peut être utile de réappliquer ces patchs: cd /usr/share/pyshared; for file in /usr/scripts/wiki/patches/*; do sudo patch -Np1 < $file; done

D'autres au contraire se modularisent très bien

MoinMoin permet de créer assez facilement des plugins spécifiques à un wiki. Le Crans en utilise beaucoup, particulièrement les macros qui sont de petits bouts de code python qui permettent, "appelés" dans le code source d'une page l'affichage de quelques données obtenues par un bout de code en python, typiquement <<Date()>> qui affiche le jour d'aujourd'hui, 2024-04-29

Ces plugins étant donc indépendants de MoinMoin, ils sont logiquement installés dans /var/local/wiki/data/plugins (linkés en fait), depuis /usr/scripts, plutôt que d'être rajoutés dans le paquet Debian custom avec les macros fournies par défaut dans MoinMoin.

Ces plugins sont de plusieurs types, citons notamment:

Comment dumper le wiki

Il est possible de publier des pages du wiki sous forme statique. C'est essentiellement utilisé pour les pages proxy de squid.
Lorsqu'une modification est faite sur les pages du wiki, il faut mettre à jour les pages statiques correspondantes (ou laisser cron le faire le soir-même).
Pour se familiariser avec la syntaxe des pages de documentation du wiki :

sudo -u www-data moin \
  --config-dir=/etc/moin --wiki-url=http://wiki.crans.org/ \
 export dump \
  --page "WiFi(/PositionnementDesBornes|/AvoirLeWifi.*)?" \
  --target-dir=/home/myname/outputdir

Les pages générées seront dans le répertoire ~/outputdir et les pièces jointes correspondantes seront dans le répertoire ~/outputdir/attachment. Penser à donner les droits en écriture à www-data.
Ne pas oublier de linker les images (bien souvent dans ./crans/img).

Comment remettre à jour le cache du wiki

sudo -u www-data moin --config-dir=/etc/moin maint cleancache --show-timings
sudo -u www-data moin --config-dir=/etc/moin maint makecache --show-timings

Utile lorsque le cache chie et que des gens se prennent des 403 sur des pages de la CatégoriePagePublique. Depuis la dernière mise à jour du wiki, il ne devrait plus y avoir de problèmes. Cela marche aussi si une personne identifiée va sur la page incriminée et lui envoie une requête (en GET) ?action=refresh

Configuration locale

L'édition en mode graphique n'est plus possible car elle cassait trop souvent la mise en page. Nous avons pour cela ajouté editor_force = True dans /etc/moin/mywiki.py.


CatégoriePagePublique CatégorieCrans

CransWiki: CransTechnique/ServicesMineurs/WiKi (dernière édition le 2018-03-03 20:33:17 par WikiBoudy)