LINUX:MediaWiki - Récupération des paquets et mise en place
But
On doit récupérer les différents paquets (MediaWiki, Extensions, Skins). Ensuite on met en place le logiciel.
La distribution de Linux-Fedora comporte le paquet MediaWiki mais par le passé j'ai eu des déboires quelques fois lors de mises-à-jour. Je préfère effectuer les installations et migrations après vérifications approfondies en parallèle à l'installation en production.
Et donc j'opte pour des téléchargements directement sur le site officiel de MediaWiki.
Script
J'ai longtemps effectué des téléchargements directs et manuels suivis de la décompression. Mais maintenant j'utilise un script qui effectue cette tâche en une fois.
Voici son contenu:
#!/bin/bash ############################################################ # # Récupération de MediaWiki, d'extensions et de skins # ############################################################ ############################################################ # Paramètres à adapter # MediaWiki VERSIONm="1.39" URLm="https://releases.wikimedia.org/mediawiki/" # Extensions VERSIONe="1_39" URLe="https://extdist.wmflabs.org/dist/extensions/" LISTEe="WikiSEO CodeMirror AdminLinks NewestPages Collection Lockdown NSFileRepo MobileFrontend PageForms Arrays Loops Variables" # Skins VERSIONs="1_39" URLs="https://extdist.wmflabs.org/dist/skins/" LISTEs="CologneBlue Modern" ############################################################ # Nettoyage /usr/bin/rm -f liste*.txt /usr/bin/rm -f *.tar.gz # MediaWiki # Récupération de la liste wget -O listem.txt ${URLm}${VERSIONm}/ # Sélection de la version la plus récente LISTE=`/usr/bin/grep "mediawiki-${VERSIONm}." listem.txt | /usr/bin/grep ".tar.gz\"" | /usr/bin/awk -F "\"" '{printf("%s\n",$6)}' | /usr/bin/awk -F "." '{printf("%s ",$3)}' | /usr/bin/awk -F "-" '{printf("%s ",$1)}'` NO=-1 for F1 in $LISTE do if [ "$F1" -gt "$NO" ]; then NO=$F1 fi done # Téléchargement wget ${URLm}${VERSIONm}/mediawiki-${VERSIONm}.${NO}.tar.gz # Extensions # Récupération de la liste wget -O listee.txt ${URLe} # Téléchargement for F1 in $LISTEe do FICHIER=`/usr/bin/grep ${F1}-REL${VERSIONe} listee.txt | /usr/bin/awk -F "\"" '{printf("%s ",$2)}' ` for F2 in $FICHIER do F3=`echo $F2 | /usr/bin/grep ^${F1}` if [ "$F3" != "" ]; then wget ${URLe}$F2 fi done done # Skins # Récupération de la liste wget -O listes.txt ${URLs} # Téléchargement for F1 in $LISTEs do FICHIER=`/usr/bin/grep ${F1}-REL${VERSIONs} listes.txt | /usr/bin/awk -F "\"" '{printf("%s ",$2)}' ` for F2 in $FICHIER do F3=`echo $F2 | /usr/bin/grep ^${F1}` if [ "$F3" != "" ]; then wget ${URLs}$F2 fi done done # Décompression LISTEgz=`ls *.gz` for F in $LISTEgz do echo $F tar xvpzf $F done
En début de script, on trouve quelques paramètres. Il y a trois sections: l'une pour le paquet MediaWiki, la seconde pour les extensions et la dernière pour les habillages.
Le premier paramètre désigne le n° de version (variables respectivement "VERSIONm", "VERSIONe" et "VERSIONs"). Ici, elles correspondent à la version 1.39 de MediaWiki. Notez les formats différents correspondants aux noms des fichiers à télécharger. Ils sont à adapter selon l'évolution des versions.
Le second paramètre correspond à la base des URLs où se trouvent les fichiers à télécharger. Normalement ils ne devraient pas changer.
Enfin le troisième paramètre pour les extensions (variable "LISTEe") et les habillages (variable "LISTEs") listent respectivement les noms des modules à récupérer. Ils sont à adapter selon vos désirs.
Arrivent ensuite une suite de blocs.
- le nettoyage préalable d'un traitement précédent.
- le traitement pour le paquet de MediaWiki
- le traitement pour les extensions
- le traitement pour les habillages
- la décompression des fichiers téléchargés
Chaque traitement débute par la création d'une liste des fichiers disponibles, suivi par le repérage du fichier à récupérer et se termine par le téléchargement proprement dit. Dans cas du paquet MediaWiki, on sélectionne le numéro de sous-version le plus haut.
Attention le nettoyage n'inclut pas l'élimination des répertoires résultants de la décompression. Il serait préférable de les éliminer également.
Ce traitement sera utilisé aussi bien lors de la première installation que lors des changements de versions.
Mise en place
La première étape consiste à mettre en place le logiciel MediaWiki. Nous allons le mettre, par exemple, dans le répertoire "/web/wiki.39" que nous créons. Tout le contenu du répertoire décompressé ci-dessus ("mediawiki-1.39.6" selon notre exemple) du logiciel MediaWiki est déplacé dans ce répertoire.
La seconde étape consiste à déplacer tels quels les répertoires des extensions décompressées dans le sous-répertoire réservés aux extensions: "/web/wiki.39/extensions". Par exemple l'extension "AdminLinks" donne le répertoire décompressé "AdminLinks". Il devient au final "/web/wiki.39/extensions/AdminLinks" après déplacement.
De même les habillages (skins) sont déplacés dans le sous-répertoire "/web/wiki.39/skins".
MediaWiki 1.39
PHP
Nous utilisons la version 8.1 de PHP.
Extension NSFileRepo
Nous utilisons l'extension NSFileRepo.
Lors de l'installation, il est noté dans la documentation en ligne de cette extension d'effectuer un lien symbolique.
On se place dans le répertoire de base de MediaWiki, par exemple dans le répertoire "/web/wiki.39" et on effectue le lien:
cd /web/wiki.39 ln -s extensions/NSFileRepo/nsfr_img_auth.php
Mais dans ce cas, ce script ne fonctionne pas comme attendu et il faut effecturer une modification dans le script "extensions/NSFileRepo/nsfr_img_auth.php".
A la quatrième ligne hors commentaires et lignes vides, on remplace la ligne:
require __DIR__ . '/includes/WebStart.php';
par les lignes:
$baseDir = dirname( $_SERVER['SCRIPT_FILENAME'] ); require ( $baseDir . '/includes/WebStart.php' ); unset( $baseDir );
Car sinon il cherche le script "WebStart.php" dans le répertoire "/web/wiki.39/extensions/NSFileRepo/includes" au lieu de "/web/wiki.39/includes".
Par contre, si au lieu d'un lien symbolique, on fait un lien par inode (sans l'option "-s"):
cd /web/wiki.39 ln extensions/NSFileRepo/nsfr_img_auth.php
, la modification décrite ci-dessus n'est plus nécessaire.
MediaWiki 1.43
Script
Dans le script donné en début d'article, on remplace la version "1.39" par "1.43" aux trois endroits.
De même, la mise en place se fait dans le répertoire "/web/wiki.43".
PHP
Nous utilisons la version 8.3 de PHP.
Extension NSFileRepo
La remarque décrite ci-dessus est également valable.
Propriétaire et droits d'accès
Toute cette nouvelle arborescence doit être être adaptée pour pouvoir être utilisée par le service Web HTTPD.
On doit attribuer la propriété à l'utilisateur du service HTTPD, c'est à dire "apache", ici pour la version 1.39:
chown -R apache:apache /web/wiki.39
Ensuite on rectifie les droits d'accès:
chmod -R 540 /web/wiki.39 find web/wiki.39 -type f -print0 | xargs -0 chmod 440 chmod -R 740 /web/wiki.39/images find /web/wiki.39/images -type f -print0 | xargs -0 chmod 640 chmod -R 740 /web/wiki.39/cache find /web/wiki.39/cache -type f -print0 | xargs -0 chmod 640
On remarque que le répertoire "images" doit avoir tous les droits afin de pouvoir y mettre les documents téléchargés.
Si vous utilisez SELinux, n'oubliez pas d'ajouter le contexte approprié "httpd_sys_content_t".