Mediawiki Update Version 1.18.0 vers 1.18.1

De EjnTricks

L'installation initiale de MediaWiki a été faite à l'aide de la commande aptitude. Or aucune mise à jour n'a été réalisée automatiquement. Cette procédure décrit la montée de version réalisée manuellement sur la machine. La mise à jour est similaire au passage sous la version 1.18.0. Mais lors de cette installation, la stratégie a été modifiée afin de faciliter les prochaines mise à jour. L'objectif est de mettre en place un lien /var/lib/mediawiki pointant vers la version installée. De plus, les plugins et les contenus sont déportés dans un répertoire /var/datas/mediawiki


Hand-icon.png Votre avis

Current user rating: 42/100 (1 votes)

 You need to enable JavaScript to vote


Delete-file-icon.png Suppression version Ubuntu

Une première version avait été installée à l'aide de apt-get. Elle n'est plus nécessaire et la mise en place de MediaWiki est réalisée manuellement à présent. Le paquet est donc supprimé

#sudo apt-get remove mediawiki


Process-Icon.png Installation nouvelle version

L'objectif de cette installation est de maîtriser tous les fichiers et de faciliter les prochaines mises à jour. Les répertoires mis en place dans cet organisation sont:

  • /var/datas/mediawiki: Contient les extensions installées et le répertoire de téléversement.
  • /usr/share/mediawiki-XXX: Installation de la version.
  • /var/lib/mediawiki: Lien vers la version à prendre en compte.
  • /etc/mediawiki: Contient les configurations.

La première étape va permettre de mettre en place le répertoire commun à toutes les installations.

#sudo mkdir /var/datas/mediawiki
#sudo mkdir /var/datas/mediawiki/extensions
#sudo mkdir /var/datas/mediawiki/images

Ainsi ce répertoire ne sera plus modifié lors des prochaines mises à jour. Il faut donc reprendre les fichiers de la précédente installation, qui était une version 1.18.0.

#sudo cp -R /var/lib/mediawiki-1.18.0/extensions/MultiUpload /var/datas/mediawiki/extensions/
#sudo cp -R /var/lib/mediawiki-1.18.0/extensions/ReplaceText /var/datas/mediawiki/extensions/
#sudo cp -R /var/lib/mediawiki-1.18.0/extensions/skins /var/datas/mediawiki/extensions/
#sudo cp -R /var/lib/mediawiki-1.18.0/extensions/specialdeleteoldrevisions2 /var/datas/mediawiki/extensions/
#sudo cp -R /var/lib/mediawiki-1.18.0/extensions/SyntaxHighlight_GeSHi /var/datas/mediawiki/extensions/
#sudo cp -R /var/lib/mediawiki-1.18.0/images/* /var/datas/mediawiki/images

Afin de sécuriser les fichiers, les sécurités précédentes sont reproduites, à savoir:

  • 700 sur les répertoires.
  • 600 sur les fichiers.
  • Propriétaire www-data:www-data, l'instance de mediawiki étant déployée sous un serveur Apache lancé avec le compte www-data
#sudo chown www-data:www-data -R /var/datas/mediawiki/extensions
#sudo chown www-data:www-data -R  /var/datas/mediawiki/images
#sudo find /var/datas/mediawiki/extensions -type d -exec chmod 0700 {} \;
#sudo find /var/datas/mediawiki/extensions -type f -exec chmod 0600 {} \;
#sudo find /var/datas/mediawiki/images -type d -exec chmod 0700 {} \;
#sudo find /var/datas/mediawiki/images -type f -exec chmod 0600 {} \;


Command-icon.png Mise en place instance

Le fichier mediawiki-1.18.1.tar.gz est téléchargé, depuis http://www.mediawiki.org/wiki/Download, et placé dans le répertoire /usr/share. La décompression de ce tar va créé les fichiers à installer juste à côté de l'installation active:

#cd /usr/share
#sudo tar -xzf mediawiki-1.18.1.tar.gz
#sudo chown -R www-data:www-data /usr/share/mediawiki-1.18.1
#sudo rm -f mediawiki-1.18.1.tar.gz

Dans le paquet téléchargé et installé sous /usr/share/mediawiki-1.18.1, un fichier .htaccess est fourni au niveau du répertoire images. Celui-ci est donc recopié pour reproduire ce fonctionnement.

#sudo cp /usr/share/mediawiki-1.18.1/images/.htaccess /var/datas/mediawiki/images/
#sudo chown www-data:www-data /var/datas/mediawiki/images/.htaccess
#sudo chmod 600 /var/datas/mediawiki/images/.htaccess

Le lien /var/lib/mediawiki est ensuite mis en place pour pointer vers cette nouvelle version.

#sudo ln -s /usr/share/mediawiki-1.18.1 /var/lib/mediawiki
#sudo chown -h www-data:www-data /var/lib/mediawiki

Il référencer le fichier LocalSettings.php depuis /etc/mediawiki, dans la nouvelle instance.

#sudo ln -s /etc/mediawiki/LocalSettings.php /usr/share/mediawiki-1.18.1/LocalSettings.php
#sudo chown -h www-data:www-data /usr/share/mediawiki-1.18.1/LocalSettings.php

Il est nécessaire de s'assurer de modifier le contenu de ce fichier pour de nouveau pointer sur le lien symbolique.

# We define this to allow the configuration file to be explicitly
# located in /etc/mediawiki.
# Change this if you are setting up multisite wikis on your server.
# define('MW_INSTALL_PATH','/var/lib/mediawiki-1.18.0');
define('MW_INSTALL_PATH','/var/lib/mediawiki');

Les extensions et les contenus uploadés ont été déplacés, et il est nécessaire de les référencer dans la nouvelle instance. Concernant les extensions, cela consiste en la création de lien dans le répertoire extensions vers /var/datas/mediawiki/extensions, l'exemple dépend des plugins installés.

#sudo ln -s /var/datas/mediawiki/extensions/MultiUpload /usr/share/mediawiki-1.18.1/extensions/MultiUpload
#sudo ln -s /var/datas/mediawiki/extensions/ReplaceText /usr/share/mediawiki-1.18.1/extensions/ReplaceText
#sudo ln -s /var/datas/mediawiki/extensions/skins /usr/share/mediawiki-1.18.1/extensions/skins
#sudo ln -s /var/datas/mediawiki/extensions/specialdeleteoldrevisions2 /usr/share/mediawiki-1.18.1/extensions/specialdeleteoldrevisions2
#sudo ln -s /var/datas/mediawiki/extensions/SyntaxHighlight_GeSHi /usr/share/mediawiki-1.18.1/extensions/SyntaxHighlight_GeSHi
#sudo chown -h www-data:www-data /usr/share/mediawiki-1.18.1/extensions/MultiUpload
#sudo chown -h www-data:www-data /usr/share/mediawiki-1.18.1/extensions/ReplaceText
#sudo chown -h www-data:www-data /usr/share/mediawiki-1.18.1/extensions/skins
#sudo chown -h www-data:www-data /usr/share/mediawiki-1.18.1/extensions/specialdeleteoldrevisions2
#sudo chown -h www-data:www-data /usr/share/mediawiki-1.18.1/extensions/SyntaxHighlight_GeSHi

Ce qui donne le contenu suivant dans /usr/share/mediawiki-1.18.1/extensions

drwxr-xr-x  9 www-data www-data 4096 2012-03-10 15:48 ./
drwxr-xr-x 15 www-data www-data 4096 2012-03-10 15:42 ../
drwxr-xr-x  2 www-data www-data 4096 2012-01-11 21:49 ConfirmEdit/
drwxr-xr-x  2 www-data www-data 4096 2012-01-11 21:49 Gadgets/
lrwxrwxrwx  1 www-data www-data   43 2012-03-10 15:47 MultiUpload -> /var/datas/mediawiki/extensions/MultiUpload/
drwxr-xr-x  2 www-data www-data 4096 2012-01-11 21:53 Nuke/
drwxr-xr-x  2 www-data www-data 4096 2012-01-11 21:53 ParserFunctions/
-rw-r--r--  1 www-data www-data 1048 2010-10-30 13:43 README
drwxr-xr-x  2 www-data www-data 4096 2012-01-11 21:53 Renameuser/
lrwxrwxrwx  1 www-data www-data   43 2012-03-10 15:48 ReplaceText -> /var/datas/mediawiki/extensions/ReplaceText/
lrwxrwxrwx  1 www-data www-data   37 2012-03-10 15:48 skins -> /var/datas/mediawiki/extensions/skins/
lrwxrwxrwx  1 www-data www-data   58 2012-03-10 15:48 specialdeleteoldrevisions2 -> /var/datas/mediawiki/extensions/specialdeleteoldrevisions2/
lrwxrwxrwx  1 www-data www-data   53 2012-03-10 15:48 SyntaxHighlight_GeSHi -> /var/datas/mediawiki/extensions/SyntaxHighlight_GeSHi/
drwxr-xr-x  3 www-data www-data 4096 2012-01-11 21:53 Vector/
drwxr-xr-x  4 www-data www-data 4096 2012-01-11 21:53 WikiEditor/

Le dernier lien mis en place concerne le répertoire images, l'original est supprimé car il ne sera pas utilisé.

#sudo rm -rf /usr/share/mediawiki-1.18.1/images
#sudo ln -s /var/datas/mediawiki/images /usr/share/mediawiki-1.18.1/images
#sudo chown -h www-data:www-data /usr/share/mediawiki-1.18.1/images

Icon-database-process.png Mise à jour de la base de données

Suite à la précédente mise à jour, les droits d'accès sur le compte MySql sont mis à jour pour s'éviter toutes les tentatives.

mysql> GRANT CREATE ON wikidb.* TO 'wikiuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALTER ON wikidb.* TO 'wikiuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT INDEX ON wikidb.* TO 'wikiuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 ROWS affected (0.00 sec)

La mise à jour s'effectue par l'exécution du script update.php, situé dans le répertoire maintenance de l'installation:

L'exécution a été réalisée à partir du lien /var/lib/mediawiki, et non pas directement dans la version installée, validant ainsi la répartition des fichiers.

Les droits accordés, sur le compte d'accès à la base de données, ne sont pas nécessaires pour le bon fonctionnement du Wiki. Ils sont donc supprimés:

mysql> REVOKE CREATE ON wikidb.* FROM 'wikiuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> REVOKE ALTER ON wikidb.* FROM 'wikiuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> REVOKE INDEX ON wikidb.* FROM 'wikiuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 ROWS affected (0.00 sec)


Configuration App Web-Icon.png Mise à jour configuration Apache

Lors de la précédente mise à jour, l'alias mis en place pointait directement sur la version installée. Ce fonctionnement ayant été modifié, il faut modifier le répertoire pointé. Ce qui ne sera plus nécessaire lors de la prochaine installation, encore un avantage de cette organisation. Le fichier de configuration se trouve à l'emplacement /etc/mediawiki/apache.conf est les emplacements sont modifiés ainsi:

# Uncomment this to add an alias.
# This does not work properly with virtual hosts..
Alias /wiki /var/lib/mediawiki

<Directory /var/lib/mediawiki/>
        Options +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
</Directory>

# some directories must be protected
<Directory /var/lib/mediawiki/maintenance>
        Options -FollowSymLinks
        AllowOverride None
</Directory>
<Directory /var/lib/mediawiki/config>
        Options -FollowSymLinks
        AllowOverride None
</Directory>
<Directory /var/lib/mediawiki/upload>
        Options -FollowSymLinks
        AllowOverride None
</Directory>

Une sécurité est mise en place pour ne pas rendre disponible le répertoire maintenance depuis un accès internet. La configuration est automatiquement prise en compte après une relance du serveur.

#sudo apache2ctl graceful


Bug-icon.png Message d'erreur dans les logs

Sur cette mise à jour, l'emplacement de MediaWiki a été modifiée. Cependant, de nombreux messages d'erreur sont apparus au niveau des logs de Apache.

[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_75_ffffff_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_75_cccccc_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_75_e6e6e6_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_75_dadada_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_65_ffffff_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_55_fbf9ee_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_95_fef1ec_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-icons_222222_256x240.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-icons_888888_256x240.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-icons_454545_256x240.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-icons_2e83ff_256x240.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-icons_cd0a0a_256x240.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil
[Sat Mar 17 19:06:05 2012] [error] [client 82.230.154.123] PHP Warning:  filemtime(): stat failed for 
/var/lib/mediawiki-1.18.0/resources/jquery.ui/themes/default/images/ui-bg_flat_0_aaaaaa_40x100.png in 
/usr/share/mediawiki-1.18.1/includes/resourceloader/ResourceLoaderFileModule.php on line 380, 
referer: http://www.jouvinio.net/wiki/index.php/Accueil

Après de nombreuses recherches, installation de différents modules pour purger les caches etc etc, l'erreur a été identifiée au niveau de la table module_deps. Cette table est apparue à partie de la version 1.17.

Comme l'indique les traces, les fichiers sont recherchés sur la précédente installation, en version 1.18.0.

Pour des raisons inconnues, les données ne sont pas mises à jour au moment de l'installation de la version 1.18.1. Et il est constaté la donnée suivante:

| md_module      | md_skin  | md_deps
| jquery.ui.core | monobook | ["\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_ffffff_40x100.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_cccccc_40x100.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_e6e6e6_40x100.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_dadada_40x100.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_65_ffffff_40x100.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_55_fbf9ee_40x100.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_95_fef1ec_40x100.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_222222_256x240.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_888888_256x240.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_454545_256x240.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_2e83ff_256x240.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_cd0a0a_256x240.png","\/var\/lib\/mediawiki-1.18.0\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_0_aaaaaa_40x100.png"] |

Il semblerait donc que le problème provenait de ces données qui sont alors mises à jour pour pointer sur la nouvelle instance. Afin d'éviter de nouveau ce problème sur la prochaine installation, il est décidé de mettre l'emplacement du lien symbolique /var/lib/mediawiki.

Au cas où, une sauvegarde de la ligne est réalisée:

update <PREFIX>_module_deps set md_module='jquery.ui.core.bak' where md_module = 'jquery.ui.core';

Puis la nouvelle ligne est injectée

mysql> update <PREFIX>_module_deps set md_module='jquery.ui.core.bak' where md_module = 'jquery.ui.core';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> insert into <PREFIX>_module_deps(md_module, md_skin, md_deps) values ('jquery.ui.core', 'monobook',
'["\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_ffffff_40x100.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_cccccc_40x100.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_e6e6e6_40x100.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_75_dadada_40x100.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_65_ffffff_40x100.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_55_fbf9ee_40x100.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
bg_flat_95_fef1ec_40x100.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_222222_256x240.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_888888_256x240.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_454545_256x240.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_2e83ff_256x240.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-
icons_cd0a0a_256x240.png","\/var\/lib\/mediawiki\/resources\/jquery.ui\/themes\/default\/images\/ui-bg_flat_0_aaaaaa_40x100.png"]');
Query OK, 1 row affected (0.04 sec)

<PREFIX> doit être remplacé par le préfixe des tables de l'instance.

ATTENTION, la requête est découpée pour les besoins de lisibilité sur la page. La valeur injectée pour md_deps ne contient aucun retour chariot.