LINUX:MediaWiki - Récupération des paquets et mise en place

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour au menu de MediaWiki


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".




retour au menu de MediaWiki