Help
Difference between revisions of "Documentation opérationelle Mediawiki"
Poslovitch (talk | contribs) |
|||
(One intermediate revision by the same user not shown) | |||
Line 339: | Line 339: | ||
Suivi de la procédure jusqu'au setup de nginx, attention à changer la destination des clés SSL Let's Encrypt (lingualibre.org -> dev.lingualibre.org). Créer une config nginx dédiée ? | Suivi de la procédure jusqu'au setup de nginx, attention à changer la destination des clés SSL Let's Encrypt (lingualibre.org -> dev.lingualibre.org). Créer une config nginx dédiée ? | ||
− | + | == See also == | |
+ | {{Technicals}} | ||
[[Category:Lingua Libre:Help]] | [[Category:Lingua Libre:Help]] |
Latest revision as of 20:47, 28 December 2023
Installation du site LinguaLibre.org avec Mediawiki version 1.35
Installation
Installation de MediaWiki version 1.35
Lingua Libre utilisait jusqu'au début 2021 la version 1.31 de Mediawiki, la dernière version LTS, qui arrive en fin de vie en juin 2021 (voir Version lifecycle sur Mediawiki), la nouvelle version LTS est la 1.35 (prévu pour durer jusqu'en septembre 2023). Ce passage de 4 versions implique des incompatiblités dans les extensions spécifiques à Lingua Libre qui doivent être résolues.
Dans un second temps, il y aurait sans doute une passe à refaire pour vérifier que toutes les fonctionnalités de l'existant était bien utiles et corrects (par exemple, les diverses d'URL .fr / .org / .wikimedia.fr etc.).
Installation de Mediawiki en soi
- se connecter en SSH au serveur OVH
- il existe plusieurs façons d'installer Mediawiki
- la méthode Docker est déconseillée (elle n'est pas vraiment prévue pour la production)
- méthode Git ou dossier compressé : tar.gz
Dans cette documentation, on utilise la méthode Git, à préférer pour le suivi sur le long terme, celle-ci permet de voir les fichiers modifiés.
Caractéristiques du serveur :
- 2 CPU et 8 Go de RAM
- Ubuntu 20.04.2 LTS
- Linux 5.4.0-67-generic
En tant qu’utilisateur dans le groupe users (sudo adduser nom-utilisateur users)
Pré-requis :
- On commence par faire les mises à jour du serveur :
sudo apt update sudo apt -y upgrade
- Installation de Nginx, MySQL MariaDB, PHP, Mediawiki :
sudo apt install -y nginx (déjà installé) sudo apt install -y mariadb-server MariaDB 1:10.3.25-0ubuntu0.20.04.1
- attention notamment à PHP (version 7.4.3 ou supérieure mais pas 8) : Compatibility
sudo apt install -y php7.4-fpm php7.4-mysql php7.4-gd php7.4-xml php7.4-zip php7.4-curl php7.4-apcu php7.4-intl sudo apt install -y npm sudo apt install -y composer sudo apt install -y ffmpeg sudo add-apt-repository ppa:ondrej/php (pour obtenir la version 7.4.9+ spécifique dont Mediawiki a besoin) sudo apt update sudo apt upgrade
Pour MediaWiki 1.35, il a été utilisé PHP 7.4.16 provenant du PPA de ondrej.
Installer Let’s Encrypt : https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx
sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot sudo certbot --nginx
- Entrer l’email de contact
- Accepter les CGV https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
- Accepter ou refuser les newsletters de l’EFF (refusé en l’occurrence)
Configurer nginx : mettre le fichier nginx/lingualibre.org du dépôt operations (branche nouveau-serveur pour l’instant) dans /etc/nginx/sites-enabled/lingualibre.org, puis `sudo systemctl restart nginx.service`
Obtenir le dernier dump SQL :
- scp -p user@serveur:2020-05-29-llbackup.zip .
- cat 2020-05-29-llbackup.sql|sudo mysql
cd /opt sudo chmod g+w . sudo chgrp users . git clone https://github.com/lingua-libre/operations.git mkdir -p /opt/mediawiki/1.35 Créer un mot de passe aléatoire avec : head -c 1000 /dev/random|sha1sum Créer un secret pour wgSecretKey avec : head -c 1000 /dev/random|sha256sum sudo mysql > CREATE USER lingualibre@localhost IDENTIFIED BY 'mot de passe aléatoire'; > GRANT ALL ON lingua_libre_v2.* TO lingualibre@localhost; sudo /opt/operations/deploy.sh Mediawiki Release [REL1_31]: REL1_35 System user [www-data]: nom-utilisateur Path [dev.lingualibre.org]: /opt/mediawiki/1.35 database name: lingua_libre_v2 database user: lingualibre database password: mot de passe aléatoire wiki secret key: (voir sur https://www.mediawiki.org/wiki/Manual:$wgSecretKey) OAuth consumer key: OAuth consumer secret:
Lancer la mise à jour de la base de données (opération à faire après chaque màj) :
sudo -u www-data php maintenance/update.php --quick
Remplacer le fichier LocalSettings local par celui du github : https://github.com/lingua-libre/operations/blob/master/mediawiki-config/LocalSettings.php
Vérifier le fonctionnement du site MediaWiki.
En cas de problèmes (page blanche, Fatal exception of type "Error"), ajouter au LocalSettings.php les lignes suivantes pour activer le débug :
error_reporting( -1 ); ini_set( 'display_errors', 1 ); $wgShowExceptionDetails = true; $wgShowDBErrorBacktrace = true; $wgShowSQLErrors = 1;
Problèmes possibles
Class 'Wikibase\DataModel\Entity\ItemId' not found error
Liens utiles : https://stackoverflow.com/questions/67236687/class-wikibase-datamodel-entity-itemid-not-found-wikibase-installation, https://phabricator.wikimedia.org/T197868
S'assurer qu'il existe le fichier composer.local.json dans /opt/mediawiki/1.35, et ce dernier doit contenir (au moins) :
{ "extra": { "merge-plugin": { "include": [ "extensions/Wikibase/composer.json" ] } } }
Puis faire
composer update --no-dev
. Puis
sudo -u www-data php maintenance/update.php --quick
Installation du Blazegraph
Pour installer le Blazegraph :
Suivre la documentation suivante : https://github.com/wikimedia/wikidata-query-rdf/blob/master/docs/getting-started.md
Pré-requis : Java et Maven
sudo apt-get install -y openjdk-8-jdk maven
(note : openjdk-8-jre ne suffit pas)
note à changer dans le getting-started : plus un unzip mais tar xfz service-*-dist.tar.gz
dans RWStore.properties, modifier le paramètre : com.bigdata.journal.AbstractJournal.file=lingualibre.jnl
Pour obtenir le dump .ttl (avant l’étape de munge dans la doc), il faut utiliser sur le Wikibase
php extensions/Wikibase/repo/maintenance/dumpRdf.php|gzip > wikibase.ttl.gz
Ajouter dans /opt/wikidata-query-rdf/dist/target/service-*-SNAPSHOT le fichier prefixes.conf disponible dans le repo Git "operations".
Installer nginx : sudo apt install nginx-light
Supprimer /etc/nginx/sites-enabled/default
Créer /etc/nginx/sites-enabled/blazegraph avec :
``` proxy_cache_path /var/cache/nginx keys_zone=blazegraph:50m; server { listen 9000 default_server; listen [::]:9000 default_server; location /bigdata/ { proxy_cache blazegraph; proxy_cache_methods GET HEAD POST; proxy_cache_key $scheme$proxy_host$request_uri$request_body; proxy_http_version 1.1; proxy_cache_valid 200 302 10m; add_header 'Access-Control-Allow-Origin' '$http_origin' always; add_header 'Access-Control-Allow-Methods' 'GET' always; add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Vary' 'Origin' always; proxy_set_header X-BIGDATA-MAX-QUERY-MILLIS "310000"; proxy_set_header X-BIGDATA-READ-ONLY "yes"; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:9999; } location /datasets/ { root /home/www; autoindex on; } } ```
Créer le fichier /etc/default/wdqs-blazegraph avec le contenu :
``` HEAP_SIZE=24g ```
Créer le service systemd blazegraph.service en créant le fichier /usr/local/lib/systemd/system/blazegraph.service avec le contenu provenant du dépôt operations dossier systemd/blazegraph.service.
Et activer blazegraph.service avec :
sudo systemctl daemon-reload sudo systemctl start blazegraph.service sudo systemctl enable blazegraph.service
Lancer l’updater avec `./runUpdate.sh -n wdq -- --wikibaseUrl https://dev.lingualibre.org --entityNamespaces 0,122 --conceptUri https://dev.lingualibre.org >/var/log/blazegraph/updater.log 2>/var/log/blazegraph/updater.err`
Créer le service systemd de l’updater en créant le fichier /usr/local/lib/systemd/system/updater.service avec le contenu provenant du dépôt operations dossier systemd/updater.service.
Optimisation Blazegraph : passer par l’IP privée pour arriver sur le serveur lingualibre.org en ajoutant
10.42.0.50 lingualibre.org
dans /etc/hosts sur le serveur où tourne le Blazegraph
Annexe : versions spécifiques d’extensions MediaWiki
Le tableau suivant indique les modifications par rapport aux versions officielles des extensions ou les spécificités utiles aux futures mises à jour.
Extension | Branche officielle | Commit officiel | Date commit officiel | Commit déployé | Commentaires | |
---|---|---|---|---|---|---|
Commit différent de l’officiel | ||||||
InputBox | REL1_35 | 7a552539 | 2021-05-11T02:00:56Z | 96de7095 | Ajouté un cherry-pick de 253eb5e pour supprimer un warning dans la console. Ce cherry-pick ne sera plus utile à partir de la branche REL1_37 mais reste nécessaire pour la branche REL1_36 (fusionné peu après la coupure REL1_36). | |
MultimediaViewer | REL1_35 | f0de2f8a | 2021-05-11T20:30:33Z | 3dc8e160 | Ajouté un cherry-pick de I3f689eea version 3 (actuellement en cours de relecture) pour supprimer un warning dans la console. | |
OAuthAuthentication | master | da1098db | 2021-04-13T18:17:22Z | ac62a114 | Ajouté I0bf0d4e0 (version 4) qui met fortement à jour le code pour l’adapter notamment à AuthManager (mécanisme d’authentification standard de MediaWiki créé en MW 1.27), il intègre l’adaptation de OAuthAuthentication à MW 1.35 et en partie à 1.36 et 1.37. Ce patch est une actualisation du patch I0bf0d4e0 (version 32) de Tgr. Lorsque LinguaLibre utilisait MediaWiki 1.31, c’était I0bf0d4e0 (version 25, 7d7ddc41) qui était utilisé. | |
Wikibase | REL1_35 | 38d1b49e | 2021-05-11T20:30:33Z | 83f882ff | Ajouté un cherry-pick de I0aee7d47 pour supprimer un warning dans la console. Ce cherry-pick ne sera plus utile à partir de la branche REL1_36. | |
Commit officiel | ||||||
RecordWizard | master | 42ade479 | 2021-05-27T17:28:29+02:00 | 42ade479 | Lors de la mise à jour 1.35, il est apparu que la bibliothèque de sérialisation JS d’items Wikibase avait été modifiée en retirant certaines fonctions utilisées par RecordWizard au moment de la création de l’item Wikibase (voir cette discussion vers le 30 mars 2021). Aussi, la librairie en question a été forkée et est déclarée en tant que sous-module Git de l’extension RecordWizard. |
Exploitation
Gestion des services
Sur le serveur frontend :
sudo systemctl status nginx.service
sudo systemctl status php7.4-fpm.service
sudo systemctl status mariadb.service
Sur le serveur backend :
sudo systemctl status blazegraph.service
sudo systemctl status updater.service
Pour chacun des services, on pourra utiliser les commandes classiques systemd :
sudo systemctl start ….service
sudo systemctl stop ….service
sudo journalctl -e -u ….service (affichage des derniers logs)
Points particulier à vérifier
- l'apparence globale, pour repérer le manque de feuilles de style et la présence des messages systèmes (record, aboutwmfr, contact, …)
- tester le fonctionnement des outils, en particulier l'outil principal "RecordWizard" et s'assurer qu'à la fin le fichier est correctement importé sur Wikimédia Commons
- tester le Blazegraph et sa réactivité
- vérifier dans la console l'absence de message d'erreurs
Suggestion: stocker les extensions sur Gerrit Wikimedia plutôt que sur Github, permettrait peut-être une meilleure mise à jour (plus visible pour les devs qui feraient des brakings changes).
OAuth
Réinitialiser les tokens OAuth :
- pour tous les utilisateurs : SQL :
DELETE FROM oauthauth_user;
- pour un utilisateur : SQL :
DELETE FROM oauthauth_user WHERE oaau_username = 'Seb35';
Déconnecter de force les utilisateurs :
- tous les utilisateurs : SQL :
UPDATE user SET user_token = '';
- un utilisateur : SQL :
UPDATE user SET user_token = '' WHERE user_name = 'Seb35';
Pour une version de développement ou si les identifiants et mots de passe OAuth ont été perdus, il faut en recréer en faisant le demande sur cette page : Special:OAuthConsumerRegistration/propose
Voir aussi la documentation complète d'OAuth sur Extension:OAuth
Installation d'une instance de développement (dev.lingualibre.org)
Suivi de la procédure jusqu'au setup de nginx, attention à changer la destination des clés SSL Let's Encrypt (lingualibre.org -> dev.lingualibre.org). Créer une config nginx dédiée ?