« Mediawiki » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 9 : Ligne 9 :
== Backup ==
== Backup ==
Faire un [[Mediawiki#Backup_2|backup]] complet: fichiers + base de données
Faire un [[Mediawiki#Backup_2|backup]] complet: fichiers + base de données
== Download the release ==
<kode lang='bash'>
wget https://releases.wikimedia.org/mediawiki/1.35/mediawiki-1.35.1.tar.gz
tar xf mediawiki-1.35.1.tar.gz
</kode>


== Migration de la bdd ==
== Migration de la bdd ==

Version du 2 janvier 2021 à 14:20

Liens utiles

Mise à jour

Release notes

Backup

Faire un backup complet: fichiers + base de données

Download the release

Bash.svg
wget https://releases.wikimedia.org/mediawiki/1.35/mediawiki-1.35.1.tar.gz

tar xf mediawiki-1.35.1.tar.gz

Migration de la bdd

Bash.svg
# définir le SERVER_NAME dans le cas où plusieurs instances de mediawiki sont sur le même serveur
export SERVER_NAME=wiki1.domaine.fr

# mise à jour de la bdd
cd /usr/share/webapps/mediawiki
php maintenance/update.php

Custom skin

skins/MonoBook/includes/SkinMonoBook.php
function setupSkinUserCss( OutputPage $out ) {
    // ajouter le css custom
    $out->addStyle( $this->stylename . '/resources/custom.css', 'screen' );
    $out->addStyle( $this->stylename . '/resources/custom-mobile.css', 'screen' );
}

WikiEditor

debug

LocalSettings.php
$wgShowExceptionDetails = true;
error_reporting( -1 );
ini_set( 'display_errors', 1 );
Bash.svg
php maintenance/eval.php
> print $wgLocaltimezone
Europe/Paris

Reporter un bug

https://bugzilla.wikimedia.org/

Job

À chaque requête 1 tâche est prise dans la pile pour être exécutée.

  • $wgJobRunRate permet de changer le nombre de tâches à exécuter à chaque requête.
  • runJobs.php permet d’exécuter directement les taches de la pile.
Bash.svg
# execute all jobs manually
cd /usr/share/webapps/mediawiki
php maintenance/runJobs.php

# add a cron task to run all jobs periodically
# edit crontab for user www-data
sudo -u www-data crontab -e
# run runJobs.php every 5 minutes
*/5  *  *  *  * php /var/www/mediawiki/maintenance/runJobs.php
# --conf /var/www/mediawiki/LocalSettings-xxx.php  to target a specific LocalSettings
LocalSettings.php
# if sets to 0, jobs will not be done during ordinary apache requests.
# In this case, maintenance/runJobs.php should be run periodically.
$wgJobRunRate = 0;
Pour connaître le nombre de tâches dans la pile: api.php?action=query&meta=siteinfo&siprop=statistics&format=jsonfm

Forcer la mise à jour des catégories

Bash.svg
php maintenance/refreshLinks.php

Backup

Avant de réaliser un backup il faut geler le site afin que le backup soit cohérent.
Ensuite il faut réaliser un backup de la base de données et des fichiers.

Stopper les modifications du site

Php.svg
# Fichier LocalSettings.php
# Verrouille la base de données et affiche le message sur les pages d'édition
$wgReadOnly = 'Backup in progress, access will be restored shortly.';

Base de données

En ligne de commande

Bash.svg
mysqldump -u utilisateur -pmot_de_passe -rfichier.sql base_de_données

phpMyAdmin

Se connecter à la base de données via phpMyAdmin.
Aller dans le menu Export. Vérifier que Add DROP TABLE est bien coché, puis lancer l'export.

Script

backup_mediawiki.sh
#!/bin/bash

set -u
set -e
set -o pipefail

# configuration
wiki_path='/var/www/wiki'
backup_path='/root/backup/wiki'

# functions
freeze_website() {
    sed '2i\$wgReadOnly = "Backup in progress, access will be restored shortly.";' -i ${wiki_path}/LocalSettings.php
}

backup_files() {
    cd ${wiki_path%/*}
    tar cf - $(basename ${wiki_path}) | pigz > ${backup_path}/$(date +%Y-%m-%d-%H-%M-%S).tar.gz
    cd
}

backup_databases() {
    mysqldump mediawiki | pigz > ${backup_path}/$(date +%Y-%m-%d-%H-%M-%S)_wiki.sql.gz
}

unfreeze_websites() {
    sed '2d' -i ${wiki_path}/LocalSettings.php
}

rotate_backups() {
    find ${backup_path} -type f -mtime +7 -name '*.gz' -delete
}
##################################################

freeze_websites
backup_files
backup_databases
unfreeze_websites
rotate_backups

Réduire la taille de la base de données

Delete old revisions
Reduce size of the database

Bash.svg
# Supprimer l'historique des pages supprimées
php maintenance/deleteArchivedRevisions.php --delete

# Supprimer l'historique des pages
# php maintenance/rebuildall.php
php maintenance/deleteOldRevisions.php --delete

Réduire la taille des fichiers

  • Supprimer les fichiers de langue inutiles
    • languages/i18n/*.json
    • languages/i18n/exif/*.json
    • languages/messages/*.php
  • Supprimer les extensions inutiles extensions
    • CategoryTree
    • Cite
    • CiteThisPage
    • ConfirmEdit
    • Gadgets
    • InputBox
    • LocalisationUpdate
    • Poem
    • SpamBlacklist
    • TitleBlacklist
  • Supprimer la documentation docs
  • Supprimer les skins inutiles skins
  • Supprimer les fichiers de test tests

Erreurs

Plus de suggestions de recherche

RuntimeException from line 628 of /usr/share/webapps/mediawiki/includes/utils/UIDGenerator.php: bcmath or gmp extension required for 32 bit machines.
/etc/php/php.ini
extension=gmp

Votre session de connexion semble avoir des problèmes (MW 1.27)

Votre session de connexion semble avoir des problèmes ; cette action a été annulée en prévention d'un piratage de session. Veuillez cliquer sur « Précédent », rechargez la page d'où vous venez, puis réessayez. 

There seems to be a problem with your login session; this action has been canceled as a precaution against session hijacking. Go back to the previous page, reload that page and then try again.
LocalSettings.php
# Se produit lorsque CACHE_ACCEL est utilisé
$wgMainCacheType = CACHE_ACCEL;
# Il faut forcer le SessionCacheType à CACHE_DB, par défaut il hérite de MainCacheType
$wgSessionCacheType = CACHE_DB;

Fatal exception of type MWException

Afficher plus de détails:

LocalSettings.php
$wgShowExceptionDetails = true;

PHP Parse error

Le dossier mediawiki semble contenir des fichiers corrompus. Il faut retelecharger l'archive et réinstaller le dossier mediawiki.

Impossible de créer le dossier « mwstore://local-backend/local-public/... ».

Le compte du serveur Apache (http) n'a pas les droits d'écriture sur le dossier images et ses sous-dossiers.

Table searchindex is marked as crashed and should be repaired

Se connecter au serveur SQL via PhpMyAdmin et executer la requete

Mysql.svg
REPAIR TABLE searchindex;

Invalid argument supplied for foreach in geshi.php

Warning: Invalid argument supplied for foreach() in /home/users/bananeatomic/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php on line 4362
Php.svg
/* Ligne 4362 du fichier geshi.php : */
foreach ($this->language_data['STYLES']['ESCAPE_CHAR'] as $group => $styles)
Php.svg
/* Ne pas commenter/supprimer de sous section de STYLES. */
'STYLES' => array(
    ...
    /*'ESCAPE_CHAR' => array(
        ...
    ),*/
    ...

Warning: file_exists(): open_basedir restriction in effect. File ... is not within the allowed path(s)

Problème lors de l'upload d'un fichier.
Les fichiers sont uploadés dans upload_tmp_dir (/home/tmp), ce dossier doit être dans open_basedir (/home/users/bananeatomic:/tmp) ou un de ses sous-dossiers.

Correction : (re)définir « upload_tmp_dir » ou « open_basedir »

/etc/php/php.ini
; Temporary directory for HTTP uploaded files (will use system default if not specified).
upload_tmp_dir = "/home/users/bananeatomic/images/temp"

open_basedir = "/home/users/bananeatomic:/tmp"

Warning: file_exists(): open_basedir restriction in effect. File(/home/users/mywiki/skins/monobook/headbg.jpg) is not within the allowed path(s)

Problème avec une copie du skin monobook.
Le fichier « /home/users/mywiki/skins/monobook/headbg.jpg » est utilisé au lieu de « /srv/http/mywiki/skins/monobook/headbg.jpg »
Utiliser monobook ou modifier directement monobook corrige le problème.

File(/usr/bin/php) is not within the allowed path(s)

PHP Warning:  is_executable(): open_basedir restriction in effect.
File(/usr/bin/php) is not within the allowed path(s): (...) in /srv/http/bananeatomic/includes/Wiki.php on line 655

Mediawiki tente de faire lancer des actions en arrière-plan.
C'est juste un warning spécifiant que non, il n'est pas possible de lancer des actions en arrière-plan via l’exécutable php car il n'est pas dans les chemins des exécutables autorisés.

Bug corrigé dans la version 1.23.x

Call to undefined function mysql_error() in DatabaseMysql.php

PHP Fatal error:  Call to undefined function mysql_error() in .../includes/db/DatabaseMysql.php on line 326

La bibliothèque mysql pour php n'est pas chargée. Commentez mysqli.so et décommentez mysql.so:

/etc/php/php.ini
;extension=mysqli.so
extension=mysql.so
Mediawiki ne supporte pas mysqli ni pdo_mysql

Can't contact the database server: Access denied for user ...

Créer l'utilisateur et lui accorder les droits nécessaire.

DatabaseBase::factory no viable database extension found for type 'mysql'

/etc/php/php.ini
extension=mysql.so
extension=pdo_mysql.so

Erreur lors de la création de la miniature : Impossible d'enregistrer la vignette sur la destination

Error creating thumbnail: Unable to save thumbnail to destination

LocalSettings.php
$wgTmpDirectory = "$IP/images/temp";

Erreur lors de la création de la miniature : /bin/bash: /usr/bin/convert: No such file or directory

Bash.svg
# installer ImageMagick
sudo pacman -S imagemagic