Taille: 1553
Commentaire:
|
Taille: 7599
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 2: | Ligne 2: |
Certaines modifications sont faites sur le wiki de MoinMoin pour nos besoins | |
Ligne 4: | Ligne 3: |
[[TableOfContents]] | |
Ligne 6: | Ligne 4: |
= Modification de fichiers du paquet de MoinMoin = On retrouve dans {{{/usr/scripts/wiki}}} des liens symboliques vers des fichiers de MoinMoin. Cela nous permet d'identifier les fichiers modifiés et de les ajouter au CVS. |
||<bgcolor="salmon"> /!\ Cette page est '''technique''', elle s'adresse donc aux Nounous. Pour une documentation plus potable [[SommaireDeL'Aide]] /!\ || |
Ligne 9: | Ligne 6: |
Les fichiers qui s'y trouvent sont commités en version 1.1 avec la source originale correspondant à la version {{{1.3.4-3}}} . Les diffs suivants correspondent à nos modifications propres. Les lignes modifiées sont repérables avec les balises {{{#### HACK SAUVAGE et #### FIN DU HACK |
<<TableOfContents>> = Le making-of du wiki = Ce wiki est basé sur le moteur [[http://moinmo.in|MoinMoin]], un moteur de wiki écrit en python. 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: [[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.). Malheuresement, le système de plugins ne permet pas de faire tout ce qu'on voudrait, et même si la plus grande partie des customization 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: * rediriger vers une url fully-qualified (avec un vhost www, wiki) * distribuer les ressources statiques de là où elles sont installées (cela inclut old_www/). Il faut pour cela utiliser des Alias, pour que apache2 comprenne bien qu'il doit fournir les fichiers. * forcer le SSL pour les envois de données "sensibles" * enfin, les requêtes passent par WSGI 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 lequelle 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 peut-être 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 [[http://git.crans.org/?p=moin_htdocs_crans.git;a=summary|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 == * Distinction entre un utilisateur en zone Cr@ns et un utilisateur extérieur * Les pages de la !CatégoriePagePublique sont accessibles en lecture pour tous * On rajoute quelques icones sympa * On force le thème sur certains vhosts (www.crans.org typiquement) * Les utilisateurs non authentifiés sont nommés par leur hostname plutôt que par leur ip * Pratique pour éviter de se récupérer des IPv6 imbuvables dans les ModificationsRécentes... * Il n'y a pas de reverse sur les IPv6 du Cr@ns... 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, <<Date()>> Ces plugins étant donc indépendants de MoinMoin, ils sont donc 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: * les macros, qui appelées par leur noms {{{CustomMacro()}}} dans le code source d'une page provoquent l'exécution du bout de code associé ({{{/var/local/wiki/data/plugins/macros/custommacro.py}}}) et sont remplacés par sa sortie. /CréationDeMacro * les parseurs qui permettent d'afficher le contenu de pièces jointes (éventuellement inlinées), et qui nous autorisent à les renderer à notre guise. /CréationDeParseur * les formatteurs qui nous permettent d'afficher une page web autrement qu'en {{{text/html}}} = 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.<<BR>> 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).<<BR>> Pour se familiariser avec la syntaxe avec les pages de documentation du WiFi: * On commence par se logger sur le serveur sur lequel il y le wiki * On crée un répertoire temporaire destiné à accueillir les futures pages statiques générées (par exemple dans son home {{{~/dump_temp}}}). * On peut ensuite lancer le script (en temps que www-data, parce qu'on est pas un gros porc) en lui passant comme arguments, le nom des pages sous forme d'expression régulière et le répertoire de destination des pages statiques. Ex : {{{ 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}}}.<<BR>> 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 |
Ligne 15: | Ligne 109: |
Les patchs sont regroupés sur [wiki:Self:/LesPatchs cette page] | Utile lorsque le cache chie et que des gens se prennent des 403 sur des pages de la !CatégoriePagePublique. Mais ça ne semble pas toujours marcher. La méthode la plus sûr reste encore qu'une personne identifié aille sur la page incriminé et lui envoie une requête (en GET) {{{?action=refresh}}} |
Ligne 17: | Ligne 112: |
= Ajout de macro/parser/formatter = Ces éléments sont stockées dans dans leur répertoire respectif dans {{{/usr/scripts/wiki}}} |
|
Ligne 20: | Ligne 113: |
[[Include(/CréationDeMacro,"Création de macros", 2, from="[[[TableOfContents]]]", to="Exemple")]] | |
Ligne 22: | Ligne 114: |
== Création de parseur == == Création de formatter == = Ajout de thème = La partie en python s'occupant de la mise en forme est stockée dans {{{/usr/scripts/wiki/theme}}} Les éléments graphiques (css et images) sont eux stockés dans {{{/usr/share/moin/htdocs/le_nom_du_theme}}} * D'ailleurs on pourrait aussi les déplacer ailleurs et mettre des liens symboliques. Mais où ? Dans {{{/usr/scripts/wiki/theme}}} ou ailleurs ? ils y sont déjà -- GregoireDetrez [[DateTime(2006-04-25T21:10:21Z)]] |
|
Ligne 33: | Ligne 115: |
CatégoriePagePublique | CatégoriePagePublique CatégorieCrans |
|
Sommaire
Le making-of du wiki
Ce wiki est basé sur le moteur MoinMoin, un moteur de wiki écrit en python. 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: 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.). Malheuresement, le système de plugins ne permet pas de faire tout ce qu'on voudrait, et même si la plus grande partie des customization 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:
- rediriger vers une url fully-qualified (avec un vhost www, wiki)
- distribuer les ressources statiques de là où elles sont installées (cela inclut old_www/). Il faut pour cela utiliser des Alias, pour que apache2 comprenne bien qu'il doit fournir les fichiers.
- forcer le SSL pour les envois de données "sensibles"
- enfin, les requêtes passent par WSGI
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 lequelle 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 peut-être 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
- Distinction entre un utilisateur en zone Cr@ns et un utilisateur extérieur
Les pages de la CatégoriePagePublique sont accessibles en lecture pour tous
- On rajoute quelques icones sympa
- On force le thème sur certains vhosts (www.crans.org typiquement)
- Les utilisateurs non authentifiés sont nommés par leur hostname plutôt que par leur ip
Pratique pour éviter de se récupérer des IPv6 imbuvables dans les ModificationsRécentes...
- Il n'y a pas de reverse sur les IPv6 du Cr@ns...
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-08-20
Ces plugins étant donc indépendants de MoinMoin, ils sont donc 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:
les macros, qui appelées par leur noms CustomMacro() dans le code source d'une page provoquent l'exécution du bout de code associé (/var/local/wiki/data/plugins/macros/custommacro.py) et sont remplacés par sa sortie. /CréationDeMacro
les parseurs qui permettent d'afficher le contenu de pièces jointes (éventuellement inlinées), et qui nous autorisent à les renderer à notre guise. /CréationDeParseur
les formatteurs qui nous permettent d'afficher une page web autrement qu'en text/html
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 avec les pages de documentation du WiFi:
- On commence par se logger sur le serveur sur lequel il y le wiki
On crée un répertoire temporaire destiné à accueillir les futures pages statiques générées (par exemple dans son home ~/dump_temp).
- On peut ensuite lancer le script (en temps que www-data, parce qu'on est pas un gros porc) en lui passant comme arguments, le nom des pages sous forme d'expression régulière et le répertoire de destination des pages statiques. Ex :
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. Mais ça ne semble pas toujours marcher. La méthode la plus sûr reste encore qu'une personne identifié aille sur la page incriminé et lui envoie une requête (en GET) ?action=refresh