Help

Difference between revisions of "Documentation opérationelle Mediawiki"

(+)
 
(mise en forme)
Line 3: Line 3:
 
== Méthode d'installation de la version 1.35 en repartant sur les bases existantes (version 1.31). ==
 
== Méthode d'installation de la version 1.35 en repartant sur les bases existantes (version 1.31). ==
  
LinguaLibre utilisait jusqu'à maintenant la version 1.31 de Mediawiki, la dernière version LTS, qui arrive en fin de vie en juin 2021 (voir https://www.mediawiki.org/wiki/Version_lifecycle ), la nouvelle version LTS est la 1.35 (prévu pour durer jusqu'en septembre 2023).
+
LinguaLibre 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 https://www.mediawiki.org/wiki/Version_lifecycle ), 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 à Lingualibre qui doivent être résolues.
 
Ce passage de 4 versions implique des incompatiblités dans les extensions spécifiques à Lingualibre qui doivent être résolues.
  
Line 26: Line 26:
 
* On commence par faire les mises à jour du serveur :
 
* On commence par faire les mises à jour du serveur :
  
 +
<pre>
 
sudo apt update
 
sudo apt update
 
sudo apt -y upgrade
 
sudo apt -y upgrade
 +
</pre>
  
 
* Installation de Nginx, MySQL MariaDB, PHP, Mediawiki :
 
* Installation de Nginx, MySQL MariaDB, PHP, Mediawiki :
  
 +
<pre>
 
sudo apt install -y nginx (déjà installé)
 
sudo apt install -y nginx (déjà installé)
 
sudo apt install -y mariadb-server
 
sudo apt install -y mariadb-server
 
MariaDB 1:10.3.25-0ubuntu0.20.04.1
 
MariaDB 1:10.3.25-0ubuntu0.20.04.1
 +
</pre>
  
 
* attention notamment à PHP (version 7.4.3 ou supérieure mais pas 8) : https://www.mediawiki.org/wiki/Compatibility  
 
* attention notamment à PHP (version 7.4.3 ou supérieure mais pas 8) : https://www.mediawiki.org/wiki/Compatibility  
  
 +
<pre>
 
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 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 npm
Line 45: Line 50:
 
sudo apt update
 
sudo apt update
 
sudo apt upgrade
 
sudo apt upgrade
 +
</pre>
  
 
Pour MediaWiki 1.35, il a été utilisé PHP 7.4.16 provenant du PPA de ondrej.
 
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
 
Installer Let’s Encrypt : https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx
 +
<pre>
 
sudo snap install core; sudo snap refresh core
 
sudo snap install core; sudo snap refresh core
 
sudo snap install --classic certbot
 
sudo snap install --classic certbot
 
sudo ln -s /snap/bin/certbot /usr/bin/certbot
 
sudo ln -s /snap/bin/certbot /usr/bin/certbot
 
sudo certbot --nginx
 
sudo certbot --nginx
 +
</pre>
  
 
* Entrer l’email de contact
 
* Entrer l’email de contact
Line 61: Line 69:
  
 
Obtenir le dernier dump SQL :
 
Obtenir le dernier dump SQL :
    scp -p user@serveur:2020-05-29-llbackup.zip .
+
* scp -p user@serveur:2020-05-29-llbackup.zip .
    cat 2020-05-29-llbackup.sql|sudo mysql
+
* cat 2020-05-29-llbackup.sql|sudo mysql
  
 +
<pre>
 
cd /opt
 
cd /opt
 
sudo chmod g+w .
 
sudo chmod g+w .
Line 89: Line 98:
 
OAuth consumer key:  
 
OAuth consumer key:  
 
OAuth consumer secret:
 
OAuth consumer secret:
 +
</pre>
  
 
Lancer la mise à jour de la base de données (opération à faire après chaque màj) :
 
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
+
<pre>
 +
sudo -u www-data php maintenance/update.php --quick
 +
</pre>
  
 
Remplacer le fichier LocalSettings local par celui du github :  https://github.com/lingua-libre/operations/blob/master/mediawiki-config/LocalSettings.php
 
Remplacer le fichier LocalSettings local par celui du github :  https://github.com/lingua-libre/operations/blob/master/mediawiki-config/LocalSettings.php
Line 100: Line 112:
 
Pré-requis : Java et Maven
 
Pré-requis : Java et Maven
  
    sudo apt-get install -y openjdk-8-jdk maven
+
<pre>
 +
sudo apt-get install -y openjdk-8-jdk maven
 +
</pre>
  
    (note : openjdk-8-jre ne suffit pas)
+
(note : openjdk-8-jre ne suffit pas)
  
 
note à changer dans le getting-started : plus un unzip mais tar xfz service-*-dist.tar.gz
 
note à changer dans le getting-started : plus un unzip mais tar xfz service-*-dist.tar.gz
Line 109: Line 123:
  
 
Installer nginx : sudo apt install nginx-light
 
Installer nginx : sudo apt install nginx-light
 +
 
Supprimer /etc/nginx/sites-enabled/default
 
Supprimer /etc/nginx/sites-enabled/default
 +
 
Créer /etc/nginx/sites-enabled/blazegraph avec :
 
Créer /etc/nginx/sites-enabled/blazegraph avec :
 +
<pre>
 
```
 
```
 
server {
 
server {
Line 132: Line 149:
 
}
 
}
 
```
 
```
 +
</pre>
 +
 
Créer le fichier /etc/default/wdqs-blazegraph avec le contenu :
 
Créer le fichier /etc/default/wdqs-blazegraph avec le contenu :
 +
<pre>
 
```
 
```
 
HEAP_SIZE=24g
 
HEAP_SIZE=24g
 
```
 
```
 +
</pre>
 +
 
Créer le service systemd blazegraph.service en créant le fichier /usr/local/lib/systemd/system/blazegraph.service avec le contenu :
 
Créer le service systemd blazegraph.service en créant le fichier /usr/local/lib/systemd/system/blazegraph.service avec le contenu :
 +
<pre>
 
```
 
```
 
[Unit]
 
[Unit]
Line 155: Line 178:
 
WantedBy=basic.target
 
WantedBy=basic.target
 
```
 
```
 +
</pre>
 +
 
Et activer blazegraph.service avec :
 
Et activer blazegraph.service avec :
 +
<pre>
 
     sudo systemctl daemon-reload
 
     sudo systemctl daemon-reload
 
     sudo systemctl start blazegraph.service
 
     sudo systemctl start blazegraph.service
 
     sudo systemctl enable blazegraph.service
 
     sudo systemctl enable blazegraph.service
 +
</pre>
 +
 
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`
 
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 :
 
Créer le service systemd de l’updater en créant le fichier /usr/local/lib/systemd/system/updater.service :
 +
<pre>
 
```
 
```
 
[Unit]
 
[Unit]
Line 180: Line 209:
 
WantedBy=basic.target
 
WantedBy=basic.target
 
```
 
```
 +
</pre>
  
 
Pour obtenir le dump .ttl (avant l’étape de munge dans la doc), il faut utiliser sur le Wikibase
 
Pour obtenir le dump .ttl (avant l’étape de munge dans la doc), il faut utiliser sur le Wikibase
Line 193: Line 223:
  
 
Sur le serveur frontend :
 
Sur le serveur frontend :
 +
<pre>
 
     sudo systemctl status nginx.service
 
     sudo systemctl status nginx.service
 
     sudo systemctl status php7.4-fpm.service
 
     sudo systemctl status php7.4-fpm.service
 
     sudo systemctl status mariadb.service
 
     sudo systemctl status mariadb.service
 +
</pre>
  
 
Sur le serveur backend :
 
Sur le serveur backend :
 +
<pre>
 
     sudo systemctl status blazegraph.service
 
     sudo systemctl status blazegraph.service
 
     sudo systemctl status updater.service
 
     sudo systemctl status updater.service
 +
</pre>
  
 
Pour chacun des services, on pourra utiliser les commandes classiques systemd :
 
Pour chacun des services, on pourra utiliser les commandes classiques systemd :
 +
<pre>
 
     sudo systemctl start ….service
 
     sudo systemctl start ….service
 
     sudo systemctl stop ….service
 
     sudo systemctl stop ….service
 
     sudo journalctl -e -u ….service (affichage des derniers logs)
 
     sudo journalctl -e -u ….service (affichage des derniers logs)
 +
</pre>
  
 
=== Points particulier à vérifier ===
 
=== Points particulier à vérifier ===

Revision as of 14:08, 20 May 2021

Installation de Mediawiki version 1.35 pour LinguaLibre

Méthode d'installation de la version 1.35 en repartant sur les bases existantes (version 1.31).

LinguaLibre 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 https://www.mediawiki.org/wiki/Version_lifecycle ), 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 à Lingualibre 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
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

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

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

Installer nginx : sudo apt install nginx-light

Supprimer /etc/nginx/sites-enabled/default

Créer /etc/nginx/sites-enabled/blazegraph avec :

```
server {
    listen 9000 default_server;
    listen [::]:9000 default_server;

    location /bigdata/ {
        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 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 :

```
[Unit]
Description=Run Blazegraph
Wants=network-pre.target local-fs.target
Requires=network-pre.target local-fs.target

[Service]
Type=simple
ExecStart=/opt/wikidata-query-rdf/dist/target/service-0.3.70-SNAPSHOT/runBlazegraph.sh
ProtectSystem=true
ProtectHome=true
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictRealtime=yes

[Install]
WantedBy=basic.target
```

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 :

```
[Unit]
Description=Run Blazegraph updater
Wants=network-pre.target local-fs.target
Requires=network-pre.target local-fs.target

[Service]
Type=simple
ExecStart=/opt/wikidata-query-rdf/dist/target/service-0.3.70-SNAPSHOT/runUpdate.sh -n wdq -- --wikibaseUrl https://lingualibre.org --entityNamespaces 0,122 --conceptUri https://lingualibre.org --apiPath /api.php
ProtectSystem=true
ProtectHome=true
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictRealtime=yes

[Install]
WantedBy=basic.target
```

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

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

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 : https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose

Voir aussi la documentation complète d'OAuth sur https://www.mediawiki.org/wiki/Extension:OAuth