Open main menu

MediaWiki-Vagrant

This page is a translated version of the page MediaWiki-Vagrant and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎italiano • ‎português • ‎português do Brasil • ‎Ελληνικά • ‎русский • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어
Aperçu visuel de Vagrant
Logo de Vagrant pour MediaWiki
Bryan Davis explique dans une interview à Wikimania ce qu'est MediaWiki Vagrant.
TechTalk sur MediaWiki - Vagrant par Bryan Davis et Dan Duvall
Diapositives de TechTalk sur MediaWiki - Vagrant par Bryan Davis et Dan Duvall

MediaWiki - Vagrant est un environnement de développement de MediaWiki portable. Il se compose d'un ensemble de scripts de configuration pour Vagrant et VirtualBox qui automatisent la création d'une machine virtuelle pour exécuter MediaWiki. Parce que la configuration est orientée développement facile plutôt que vers la sécurité, MediaWiki-Vagrant n'est pas recommandé pour les wikis accessibles publiquement.

La machine virtuelle que MediaWiki-Vagrant crée fait qu'il est facile d'apprendre, de modifier et d'améliorer le code de MediaWiki : des informations de débogage utiles sont affichées par défaut, et les différents outils de développement sont mis en place spécifiquement pour inspecter et interagir avec le code MediaWiki, y compris un débogueur puissant et un interpréteur interactif. Le meilleur de tous, car la configuration est automatisée et contenue dans un environnement virtuel, les erreurs sont alors faciles à corriger.

Exigences du système

CPU 
processeur x86 64-bit
OS 
Linux, macOS, or Windows
Memoire
au moins 4 GiB de RAM totale sur votre système, de préférence 8 GiB ou plus, pour exécuter à la fois le système d'exploitation hébergé ainsi que la VM. Ne pas essayer d'exécuter cela sur un système n'ayant seulement que 2 GiB de RAM car cela va éventuellement échouer.
Disque 
doit avoir plusieurs gigaoctets de libre sur le disque primaire (partition /home pour Linux, disque C: pour Windows). Notez en particulier que les images disque de la VM seront rangées par défaut dans votre répertoire racine (home).
Réseau 
une connection active au réseau avec suffisamment de bande passante pour télécharger les mises à jour Linux Debian et le code source MediaWiki
Temps d'installation 
entre 20 minutes et 2 heures, selon les situations et en fonction des problèmes que vous rencontrez.

Démarrage rapide

(Si vous installez MediaWiki-Vagrant à partir de la distribution USB, suivez les étapes du fichier README plutôt que les cinq premières étapes.)

  1. Téléchargez Git
  2. (Linux seulement) Installez NFS s'il ne l'est pas déjà. Sous Ubuntu, utilisez sudo apt-get install nfs-kernel-server. Fedora vient habituellement avec NFS installé; si ce n'est pas le cas, exécutez sudo dnf install nfs-utils.
  3. Téléchargez la dernière version de VirtualBox.[1]
  4. Téléchargez la dernière version de Vagrant.[2]
  5. Récupérez le code et créez votre machine :
    $ git clone --recursive https://gerrit.wikimedia.org/r/mediawiki/vagrant
    
    (Ceci va cloner à la racine de votre répertoire utilisateur.)
    $ cd vagrant
    $ ./setup.sh
    
    Quand il sera demandé, entrez votre nom d'utilisateur Gerrit (recommandé), ou pressez simplement Enter.
    Si vous voulez utiliser une branche de diffusion plutôt que la dernière version, vous pouvez le préciser maintenant avec vagrant hiera mediawiki::branch REL1_27
    $ vagrant up
    
  6. Activez les fonctionnalités additionnelles de MediaWiki, par exemple :
    $ vagrant roles list
    $ vagrant roles enable monobook --provision
    
  7. Lorsque Vagrant a terminé de configurer votre machine, accédez à http://dev.wiki.local.wmftest.net:8080/ pour trouver votre instance MediaWiki. Vous pouvez vous connecter avec le nom d'utilisateur Admin et le mot de passe vagrant.
vagrant up échoue si le fournisseur par défaut de VirtualBox est utilisé et que le nombre de CPUs virtuelles sur l'ordinateur excède 32. Utilisez vagrant config vagrant_cores <nombre de coeurs> pour assigner moins de 32 coeurs à la machine virtuelle.
Cela peut prendre une heure ou plus avant que le premier vagrant up soit terminé.
The Admin account password is not correctly set on installation as of September 2019. You will have to manually set a password by logging in with vagrant ssh and running mwscript maintenance/changePassword.php --user=Admin --password=vagrant

Si vous utilisez Windows

Téléchargez Git pour Windows et exécutez les commandes git dans son interface système Git Bash. Au lieu de setup.sh, exécutez setup.bat à partir d'une fenêtre cmd.exe.

Si vous utilisez le shell WSL compatible Linux sous Windows 10: exécutez les commandes avec vagrant.exe au lieu de vagrant. Lancez vagrant.exe config --required au lieu de ./setup.bat, qui ne fonctionne pas dans le shell bash Linux

Le compte qui exécute Vagrant aura probablement besoin des droits pour « Créer des liens symboliques » (la manière la plus facile de les avoir est d'exécuter en tant qu'administrateur).

Problèmes de démarrage

Si vos questions ne trouvent pas de réponses ici, IRC est une bonne option, en particulier le canal #wikimedia-tech connect.

Tout hôte

  • Vous pouvez essayer d'installer les versions de VirtualBox et de Vagrant que votre distribution Linux vous fournit. Si vous utilisez une version récente de Debian ou Ubuntu, essayez sudo apt-get install virtualbox vagrant pour installer les packages pour VirtualBox et Vagrant.
  • Si vous obtenez des erreurs de vagrant up , installez à la place les versions les plus récentes de VirtualBox et de Vagrant.
  • Si vous obtenez un message d'erreur tel que "Couldn't open file $CLONED_REPOSITORY/trusty-cloud", essayez la commande suivante : vagrant up --provider=virtualbox
  • Si vous avez des erreurs de "puppet" vous pourriez avoir besoin d'initialiser les sous-modules de "puppet", dans le répertoire vagrant exécutez git submodule update --init
    • Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class
  • Utilisez http://127.0.0.1:8080/info.php pour vérifier que le serveur Apache/PHP est en cours d'exécution.

Vous pourriez vouloir comparer la sortie de la première exécution de vagrant up dans votre terminal avec cet échantillon. La configuration initiale peut prendre un certain temps; si elle semble se bloquer quelque part, mais sans avoir d'erreurs, il suffit de lui laisser un peu temps.

  • Si vous obtenez des avertissements que vos "Guest Additions" dans la VirtualBox ne sont pas à la bonne version, vous pouvez essayer d'installer le plugin vagrant-vbguest qui les met à jour automatiquement.
  • Vagrant perd rarement la liaison avec votre VM. Cet article parle des façons de les contourner (par exemple l'attachement d'un ancien disque dur virtuel vers le nouveau profil)
  • Assurez-vous que le dépôt vagrant/mediawiki est à jour :
$ cd vagrant/mediawiki
$ git pull
  • Assurez-vous que vous ayez bien activé la virtualisation dans le BIOS. Parfois, cela se trouve dans les paramètres de sécurité.
  • Assurez-vous que vos paramètres de codage de langue soient bien en UTF-8. Si vous obtenez "invalid byte sequence in US-ASCII", essayez de (re) paramétrer vos variables d'environnement LANG et LC_ALL avec des valeurs convenables.

Par exemple :

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
  • Quelques fois vous pouvez réparer des installations cassées (par exemple si on vous répond "No wiki found..." en exécutant vagrant destroy; vagrant up ce qui va reconstruire la machine virtuelle sans répéter les parties du processus d'installation qui prennent le plus de temps.
Si vous avez supprimé toute les anciennes VM, vous verrez un message d'erreur comme "...le chemin contient des composants qui ne sont pas des répertoires ou qui sont inexistants..." et vagrant up ne se terminera pas correctement. Si vous utilisez NFS (sur un hôte dont le système opérationnel n'est pas Windows), vous devriez corriger cela en supprimant /etc/exports : saisissez sudo rm -i /etc/exports Vagrant va recréer le fichier /etc/exports la prochaine fois que vous l'exécuterez. vagrant up.
MediaWiki-Vagrant ne fonctionnera pas sur un hôte qui ne prend pas en charge VT-X, car il est prévu pour fonctionner avec un invité 64bit (machine virtuelle). MediaWiki-Vagrant doit fonctionner sur une machine virtuelle 64 bits, en partie parce qu'il utilise des paquets deb de la production WMF qui sont uniquement compilés pour l'architecture amd64.

Spécifique à Windows

  • Si vous êtes sous Windows et que vous obtenez le message "La machine invité est entrée dans un état non valide" - "Extinction", essayez de télécharger une version de VirtualBox 4.3.15 (there is a known problem with 4.3.14 on Windows). Si cela ne vous aide pas, vérifiez que vous ayez bien activé le paramètre "Hardware Virtualization Technology" (VT-x ou AMD-V) dans le BIOS. La virtualisation du matériel est nécessaire, il ne s'agit pas d'une simple option pour améliorer les performances. (Pour certains ordinateurs portables, il est nécessaire d'enlever le câble d'alimentation et la batterie pendant 30 secondes [1]).
  • VirtualBox est incompatible avec Hyper-V de Microsoft. Si vous avez Hyper-V d'activé – ce qui peut être le cas par défaut si vous avez installé Visual Studio – vous obtiendrez les erreurs ci-dessus en essayant de démarrer une machine virtuelle dans VirtualBox. Il y a trois possibilités :
    • A l'invite du système, exécutez bcdedit /set hypervisorlaunchtype off pour arrêter Hyper-V et redémarrez. Pour redémarrer Hyper-V, remettez la valeur auto au lieu de off
    • Désactivez Hyper-V grâce à l' "Ajout/Suppression de fonctionnalités Windows" dans le Panneau de contrôle puis, redémarrez. Cela va vous permettre de faire fonctionner VirtualBox, mais vous empêche d'utiliser toute VM Hyper-V que vous pourriez avoir, comme par exemple les émulateurs de téléphone Windows.
    • Ou, utilisez le fournisseur Hyper-V pour Vagrant au lieu de VirtualBox. Cela peut être instable.

Spécifique au Mac

  • Erreurs NFS Pour éviter les erreurs NFS lors de l'installation, assurez vous que le pare-feu accepte bien les connexions : Apple > Préférences Système > Sécurité et confidentialité > Pare-feu > Options de pare-feu. Vous aurez besoin de DéCOCHER la case "Bloquer toutes les connexions entrantes" et probablement aussi de DéCOCHER "Activer le mode furtif" pour pouvoir accepter les éléments suivants : netbiosd, nfsd, rpc.lockd, rpc.rquotad, rpcbind et VBoxHeadless. Notez que vous devrez peut-être redémarrer votre ordinateur et changer le statut à "Autoriser les connexions entrantes" pendant quelques vagrant up. Après l'installation, vous allez pouvoir à nouveau COCHER "Bloquer toutes les connexions entrantes" et "Activer le mode furtif" maintenant que les règles de pare-feu ont été mises à jour.
    • Sinon, vous pouvez désactiver les partages NFS via le vagrant config nfs_shares off.

Debian et Ubuntu

  • MediaWiki-Vagrant utilise NFS pour partager certains dossiers avec la machine hôte (votre ordinateur). Vous devez configurer votre ordinateur comme un "serveur NFS", voir par exemple Ubuntu instructions. Sous Debian, sudo apt-get install nfs-kernel-server fonctionnera ; vous aurez peut-être aussi besoin de modprobe nfsv3. Notez que le serveur NFS de Debian ne démarre pas sans une entrée dans /etc/exports. Si sudo rpcinfo -p ne montre pas que les services "nfs" sont en cours d'exécution, c'est que c'est probablement le cas. L'ajout de votre répertoire personnel (home) en dernière ligne de /etc/exports puis /etc/init.d/nfs-kernel-server restart sera généralement suffisant pour outrepasser ce problème de la poule et de l'oeuf.
  • Les partages NFS utilisés par MediaWiki-Vagrant ne peuvent pas être exécutés à partir d'un répertoire crypté, ce qui peut être le cas si vous êtes sous Ubuntu, et que vous utilisez un répertoire personnel chiffré. Pour exécuter MediaWiki - Vagrant vous pouvez soit :
    • Déplacez le répertoire MediaWiki-Vagrant vers un volume non crypté (par exemple /opt) avant l'exécution de vagrant up .
    • Sinon, vous pouvez également désactiver les partages NFS via vagrant config nfs_shares off
  • L'installation de NFS semble parfois se bloquer (la commande initiale vagrant up se bloque sur "Mounting NFS shared folders"). Essayez de redémarrer le démon NFS sur l'hôte, ça peut aider (voir #5802).
  • Si vous obtenez des erreurs de redirection de port qui disent que les ports sont en cours d'utilisation, vous devrez peut-être ouvrir une Virtual Box, supprimer entièrement la machine virtuelle, et ré-essayer.

Fedora

  • Si vous obtenez Network 10.11.12.13 is not available. après avoir exécuté vagrant up, désactivez SELinux via sudo setenforce 0 ou corrigez votre configuration SELinux.
  • Si vous obtenez The provider for this Vagrant-managed machine is reporting that it is not yet ready for SSH. après avoir exécuté vagrant roles enable mediawiki --provision, assurez-vous d'avoir initialisé le fournisseur explicitement, par exemple via vagrant destroy suivi de vagrant up --provider=virtualbox
  • Si vous obtenez mount.nfs: mount to NFS server '10.11.12.13:download-directory/vagrant' failed: RPC Error: Unable to receive, exécutez vagrant config nfs_shares

Utilisation de base

 
Capture d’écran

L'outil de ligne de commande vagrant sur la machine hôte fournit plusieurs sous commandes pour contrôler votre machine virtuelle. Vous en avez déjà utilisé une : vagrant up, qui tourne sur la machine virtuelle. Comme la plupart des sous commandes vagrant, vous devez l'exécuter à partir du répertoire MediaWiki-Vagrant ou l'un de ses enfants. Lorsque vous l'exécutez pour la première fois, Vagrant va chercher une image système et configurer le logiciel nécessaire pour l'exécution de MediaWiki. Cela peut prendre 1 à 2 heures d'utilisation du CPU avec une connexion à large bande, mais ça ne se produira qu'une fois. Si vous exécutez à nouveau vagrant up par la suite, ça va tout simplement démarrer la machine.

vagrant ssh démarre un shell interactif de connexion sur la machine virtuelle. Il va vous connecter en tant qu'utilisateur vagrant; L'accès root est disponible via sudo, qui s'utilise sans avoir recours à un mot de passe. Parce que la machine virtuelle est entièrement intégrée (sandboxed) au sein de votre ordinateur, elle est configurée pour la commodité, pas pour la sécurité. En règle générale, chaque fois que vous rencontrerez une demande de mot de passe, le mot de passe à saisir sera vagrant.

Lorsque vous vous connectez, vous devriez voir une bannière MediaWiki colorée et quelques rappels de commandes utiles.

La commande phpsh va démarrer un interpréteur PHP interactif avec le code de base de MediaWiki déjà chargé. Vous pouvez saisir du code, appuyer sur la touche 'entrée', et le code sera évalué immédiatement. Si vous commencez une ligne avec '=', la valeur calculée sera affichée. Tapez ? pour une aide rapide ou help start pour obtenir des instructions supplémentaires.

Le dossier /vagrant correspond au dossier MediaWiki-Vagrant de ​​votre machine hôte, et son contenu est partagé. Le code de MediaWiki est installé dans /vagrant/mediawiki. Cela vous permet d'utiliser l'environnement normal de votre éditeur sur votre machine hôte pour modifier le code de MediaWiki qui s'exécute sur votre machine virtuelle.

Faire la mise à jour

Utilisez vagrant git-update pour garder à jour vos dépôts Git, les bibliothèques externes, et le schéma de base de données. Cette commande est équivalente à l'utilisation de

  1. git pull dans core et tous les répertoires d'extension et de thèmes (skins)
  2. composer update pour veiller à ce que les dernières bibliothèques "Composer-managed" soient disponibles.
  3. Et pour finir, le script update.php.

Vous devez aussi de temps en temps (ou quand c'est nécessaire pour une nouvelle fonctionalité) mettre à jour MediaWiki-Vagrant lui-même, ce que ne fait pas vagrant git-update . Exécutez:

git pull

… dans votre répertoire racine de MediaWiki-Vagrant. Ceci prendra effet quand vous exécuterez :

vagrant provision

… (tout de suite ou plus tard).

  Avertissement : Si vous faites des mises à jour à partir de git manuellement, vous devrez peut-être exécuter composer update pour télécharger les bibliothèques externes requises par MediaWiki. Vous pouvez exécuter le script checkComposerLockUpToDate.php pour voir si composer update est nécessaire.
Certains projets ont des dépendances NPM, souvent pour des motifs liés uniquement au développement, et qui ne sont pas installées par Composer. On peut les trouver approximativement avec find -not \( -name node_modules -prune \) -name package.json et les installer manuellement selon les besoins après une mise à jour en exécutant npm install dans chacun des répertoires désirés.

Déconnectez-vous de votre machine virtuelle en tapant logout ou en appuyant sur CTRL + D. Maintenant que vous êtes de nouveau dans une invite de commande standard, vous pouvez exécuter vagrant halt pour arrêter la machine virtuelle et vagrant up pour la redémarrer. vagrant destroy supprimera les fichiers de la machine virtuelle; cette commande est utile si vous voulez remettre l'instance dans son état d'origine (vous aurez besoin d'exécuter vagrant up à nouveau pour instancier une nouvelle machine virtuelle).

Utilisation des rôles

MediaWiki-Vagrant met en place une instance MediaWiki de base par défaut, mais cela demande aussi de savoir comment configurer une gamme de logiciels complémentaires, y compris certaines extensions populaires de MediaWiki et leurs dépendances. Ces piles de logiciels optionnels sont communément appelées «rôles» et MediaWiki-Vagrant offre une interface en ligne de commande simple et puissante pour les gérer.

$ vagrant roles list
# Affiche une liste des rôles disponibles.

$ vagrant roles enable role
# Activer les "rôles" pour cette machine.

$ vagrant roles disable role
# Désactiver les "rôles" pour cette machine.

$ vagrant provision
# Une fois terminée l'activation/désactivation des rôles, lancez ceci pour que les modifications prennent effet.

Regardez une petite screencast montrant comment utiliser les rôles. Vous obtiendrez plus d'informations avec Rôles sur certains rôles.

Si vous ajoutez de nombreux rôles, vous devrez peut-être augmenter la mémoire disponible sur la VM Vagrant. En particulier, la mise en place du rôle "browsertests" qui implique la compilation du ffi ruby Gem qui est une tâche gourmande en mémoire; si elle plante essayez de libérer de la mémoire dans la machine virtuelle ou d'augmenter son allocation mémoire (bug 53864).

Voir la section #Authoring roles|Création des rôles ci-dessous si vous êtes intéressé pour ajouter des rôles à MediaWiki-Vagrant.

Problèmes avec des rôles spécifiques

Centralauth

Il y a des rôles qui nécessitent une attention particulière, le rôle centralauth n'exécute pas les migrations de base de données automatiquement via Puppet et exige leur exécution à la main. Si vous obtenez des erreurs en provisionnant ce rôle, essayez d'exécuter ce script à partir de l'extension et de voir les erreurs qui s'affichent en sortie :

mwscript extensions/CentralAuth/maintenance/migrateAccount.php --username 'Admin' --auto

Une fois que vous aurez obtenu une erreur plus concrète, vous aurez probablement besoin de savoir qu'elle est la migration à faire tourner parmi celles-ici :

extensions/CentralAuth/db_patches

Wikidata

Un simple vagrant roles enable wikidata && vagrant provision ne fonctionnera pas. Voici un ensemble complet de commandes pour définir le rôle Wikidata et le rendre opérationnel.

 $ vagrant up
 $ vagrant git-update
 $ vagrant ssh
 $ sudo apt-get update && sudo apt-get upgrade
 $ composer selfupdate --update-keys
 $ composer config --global process-timeout 9600

Déconnectez vous de Vagrant, puis vous pouvez joyeusement exécuter :

 $ vagrant roles enable wikidata
 $ vagrant provision

Notez que la première disposition peut rechigner, laissant penser à un échec. Cependant, si vous utilisez une deuxième disposition, vous verrez que tout se passe bien.

Vous pouvez ensuite afficher dans votre navigateur http://wikidata.wiki.local.wmftest.net:8080/. Pour créer un nouvel élément wikidata chargez http://wikidata.wiki.local.wmftest.net:8080/wiki/Special:NewItem et pour créer une nouvelle propriété allez sur http://wikidata.wiki.local.wmftest.net:8080/wiki/Special:NewProperty

Comment importer un dump Wikidata

La commande Vagrant import-dump, qui importe un fichier XML dans MediaWiki, ne gère pas les wikis autres que celui par défaut (voir phab:T183274#3893785). Vous devez exécuter le script importDump.php à l'intérieur du dialogue Vagrant.

Voici la procédure pour importer des dumps XML.

 $ mkdir wikidata_dumps
 $ cd wikidata_dumps
  • téléchargez les blocs pages-articles. Par exemple :
 $ wget https://dumps.wikimedia.org/wikidatawiki/latest/wikidatawiki-latest-pages-articles10.xml-p5264684p6341661.bz2
  • autoriser l'importation d'entités Wikibase (voir phab:T72898#1588002). Ajoutez la ligne suivante à votre LocalSettings.php:
 $wgWBRepoSettings['allowEntityImport'] = true;
  • le script BASH suivant peut vous aider à suivre le processus. Vous pouvez le recopier dans un fichier import_wikidata.sh . Notez que la ligne surlignée appelle le script actuel d'importation :
#!/usr/bin/env bash

chunks=$(find wikidata_dumps -type f)
for chunk in $chunks
do
    now=$(date)
    echo "$now: started import of $chunk" >> wd_import.log
    echo "-------------------------------------------" >> wd_import.log
    bzcat $chunk | mwscript importDump.php --wiki=wikidatawiki --uploads --debug --report 10000 2>>wd_import.log
    now=$(date)
    echo "-------------------------------------------" >> wd_import.log
    echo "$now: completed import of $chunk" >> wd_import.log
    echo "===========================================" >> wd_import.log
done
  • connectez vous à l'intérieur du dialogue Vagrant et lancez le script. Les messages de débogage devraient y apparaître :
 $ vagrant ssh
 $ cd /vagrant
 $ sudo chmod +x import_wikidata.sh
 $ ./import_wikidata.sh 
  • vous pouvez suivre le journal de progression depuis l'extérieur du dialogue Vagrant :
 $ tail -f wd_import.log

Pour aller plus loin

Copie du noyau MediaWiki en local

Il se peut que vous ayez parfois envie de recommencer à zéro en supprimant l'ensemble du répertoire vagrant ou en nettoyant le répertoire vagrant/mediawiki. Afin d'accélérer le processus de provisionnement de vagrant, vous pourrez peut-être envisager de garder un clone local d'un noyau MediaWiki à jour que vous pouvez copier dans vagrant/mediawiki.

par exemple, en supposant que vous clonez un dépôt MediaWiki dans ~/projets/mediawiki/ :

# clonez et stockez une copie propre du noyau MediaWiki dans ~/projets/mediawiki/core
cd ~/projects/mediawiki/
git clone ssh://<your-gerrit-username>@gerrit.wikimedia.org:29418/mediawiki/core

# clonez une copie propre de vagrant dans ~/projets/mediawiki/vagrant
cd ~/projects/mediawiki
git clone ssh://<your-gerrit-username>@gerrit.wikimedia.org:29418/mediawiki/vagrant

# créez le sous-répertoire mediawiki si il n'existe pas
cd ~/projects/mediawiki/vagrant
mkdir ~/projects/mediawiki/vagrant/mediawiki

# copiez le noyau MediaWiki "propre" dans le répertoire "propre" vagrant/mediawiki
cp -r ~/projects/mediawiki/core/ ~/projects/mediawiki/vagrant/mediawiki

Mise à jour des dépôts clonés

Mettre à jour les dépôts clonées aussi souvent que possible / nécessaire.

cd ~/projects/mediawiki/core
git pull

cd ~/projects/mediawiki/vagrant
git pull
git submodule update --init --recursive

Ou de mettre à jour tous les dépôts clonés :

vagrant git-update

Recharger Vagrant

Si vous changez la configuration (par exemple la vagrant_ram, votre site web VM/MediaWiki se bloque, ou un problème apparaît, vagrant reload peut résoudre la situation. Cela va redémarrer votre invité. Certains rôles nécessitent aussi un rechargement, qui devrait se produire automatiquement.

Quand activer les rôles

Activez les rôles seulement après avoir exécuté avec succès votre premier vagrant up.

Notez que vagrant destroy ne réinitialisera pas les rôles autorisés. Vérifiez bien d'avoir désactivé tous les rôles après avoir lancé vagrant destroy, puis exécutez vagrant up. ensuite, vous pouvez réactiver les rôles que vous voulez et exécuter vagrant provision.

Vagrant derrière un proxy

Si vous êtes derrière un proxy, Vagrant pourrait faire apparaître quelques errors. Vous pouvez installer vagrant-proxyconf. C'est un plugin qui permet à votre machine virtuelle d'utiliser les proxy spécifiés. C'est un guide d'installation rapide. Pour une documentation plus détaillée, vous pouvez également regarder here.

Installez le plugin :

vagrant plugin install vagrant-proxyconf

Pour configurer les paramètres de proxy pour tous les logiciels sur tous les ordinateurs virtuels vagrant, ajoutez les lignes suivantes à votre $VAGRANT_HOME/Vagrantfile (par défaut ~/.vagrant.d/Vagrantfile).

Vagrant.configure("2") do |config|
  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.http     = "http://192.168.0.2:3128/"
    config.proxy.https    = "http://192.168.0.2:3128/"
    config.proxy.no_proxy = "localhost,127.0.0.1,.example.com"
  end
  # ... other stuff
end

Remplacez les adresses avec l'IP et le numéro de port de votre serveur proxy. Utilisez l'option config.proxy.no_proxy pour sortir la liste de tous les sites/domaines pour lesquels vous pourriez vouloir contourner le proxy. Par exemple,

config.proxy.no_proxy = "localhost,127.0.0.1,.example.com,.someinternaldomain.com"

Maintenant, lorsque vous exécutez un vagrant up, il ne devrait plus y avoir d'avertissements.

Pour désactiver le plugin, mettez config.proxy.enabled à false ou à une chaîne vide (""). Vous pouvez également le désactiver pour des applications spécifiques. Par exemple,

config.proxy.enabled         # => toutes les applications sont activées (par défaut)
config.proxy.enabled = true  # => toutes les applications sont activées
config.proxy.enabled = { svn: false, docker: false }
                             # => des applications spécifiques sont activées.
config.proxy.enabled = ""    # => toutes les applications sont désactivées
config.proxy.enabled = false # => toutes les applications sont désactivées

Préparation de MediaWiki-Vagrant

Vous envisagerez peut-être d'utiliser un script d'interface système (shell) comme mw-vagrant-prep pour préparer un répertoire pour une installation de MediaWiki-Vagrant.

Débogage

Provisionnement

Vous pouvez déboguer le processus de provisionnement en exécutant

PUPPET_DEBUG=1 vagrant provision

PHP

Vous pouvez déboguer PHP avec Xdebug. Déboguer en PHP est différent des autres type de débogage côté client. Votre IDE écoute les connexions entrantes, et lorsque vous accédez au serveur avec un navigateur, un entête spécial indique à PHP de se connecter à votre IDE. Voir MediaWiki-Vagrant/Advanced usage#MediaWiki debugging using Xdebug and an IDE in your host pour plus d'informations.

HHVM

Voir Manual:How to debug#HHVM pour déboguer sous HHVM.

Chrome

  • Pour les utilisateurs de Chrome, vous devriez récupérer XDebug Helper, et éventuellement Clear Cache, HTTP headers, et Mod Headers. Configurez la suppression du cache pour recharger automatiquement après la suppression, et définissez des raccourcis clavier (e.g. Ctrl+R pour suppression & rechargement, Ctrl+Shift+D pour activer/désactiver XDebugger)

Firefox

  • Les utilisateurs de Firefox devraient regarder easy Xdebug.
  • Installez et configurez un IDE compatible xdebug sur votre machine (Eclipse, PhpStorm, Emacs, etc.)
  • Dans l'IDE, commencez par écouter la connexion de débogage entrante.
  • Dans l'IDE, mettez un point d'arrêt à l'endroit qui vous intéresse.
  • Activez XDebug dans le navigateur et accédez à votre installation vagrant (http://127.0.0.1:8080/...)

Fichiers de journalisation (log)

Les fichiers de journalisation (logs) de mediawiki peuvent être trouvés dans /vagrant/logs. Il y a des fichiers de journalisation (log) pour Apache dans /var/log/apache2/, mais il semble qu'il ne soient pas écris. Il y a un fichier de journalisation (log) pour HHVM dans /var/log/hhvm/. Les notifications, les avertissements, les erreurs et les exceptions non traitées de PHP sont enregistrés par HHVM dans le syslog que vous pouvez voir dans /var/log/syslog. Le fichier de journalisation (log) des requêtes MySQL peut être obtenu en saisissant SET GLOBAL general_log = 'ON'; dans un client, puis en regardant dans /var/lib/mysql/*.log.

Exécution et débogage des tests unitaires

Pour « excécuter » les tests PHPUnit pour TOUTES les extensions :

$ vagrant ssh
$ cd /vagrant/mediawiki
$ sudo -u www-data php tests/phpunit/phpunit.php --wiki wiki

Pour exécuter les tests unitaires avec une seule extension :

$ sudo -u www-data env "PHP_IDE_CONFIG=serverName=mwvagrant" "CIRRUS_REBUILD_FIXTURES=yes" "XDEBUG_CONFIG=idekey=netbeans-xdebug" php tests/phpunit/phpunit.php --wiki=wiki --stop-on-failure --stop-on-error extensions/ExtensionName/tests/phpunit/

Vous pouvez ajouter "path/to/tests/to/run".

Certains tests peuvent nécessiter d'être exécutés par l'utilisateur propre pour créer des fichiers de verrouillage, par conséquent cette commande est exécutée comme "utilisateur" www-data qui gère les requêtes Web.

Pour la construction de rapports de coouverture, voir Manual:PHP unit testing/Code coverage#MediaWiki-Vagrant.

Le débogage des tests de phpunit est un petit peu plus compliqué. Cette méthode est un peu "hacky", mais peut être utilisé le temps que l'interpréteur à distance de débogage s'améliore (par exemple dans PHPStorm 8 EAP ). Cette solution de contournement vous permet d'exécuter des tests unitaires MediaWiki depuis le navigateur.

  • Télécharger le fichier phpunit.phar à la racine de votre répertoire vagrant.
  • Créez un fichier php unittest.php dans la racine du mediawiki. Ne faites pas de validation (commit) pour ce fichier dans le dépôt. Collez le code suivant dedans :
unittest.php 
<html><body><pre>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once 'includes/WebStart.php';
$_SERVER['argv'] = array(
	'--configuration', '/vagrant/mediawiki/tests/phpunit/suite.xml',
	'/vagrant/mediawiki/extensions/JsonConfig/tests/phpunit/JCObjContentTest.php',
);
require_once '/vagrant/mediawiki/tests/TestsAutoLoader.php';
require_once '/vagrant/phpunit.phar';
PHPUnit_TextUI_Command::main(false);
  • Dans le fichier ci-dessus, changez le paramètre "argv" par le nom de votre fichier de test.
  • Apache fait correspondre la racine du répertoire de MediaWiki à /w. Donc, naviguez jusqu'à http://127.0.0.1:8080/w/unittest.php pour exécuter ce fichier.
  • Suivez les instructions #Debugging pour attacher votre débogueur.

Exécuter les tests du navigateur

Voir Manual:JavaScript unit testing .

Ce lien pointe vers une documentation obsolète; toute personne pouvant aider à décrire la manière de tester MediaWiki est bienvenue à contribuer : Quality_Assurance/Browser_testing/Running_tests#Running_VisualEditor_browser_tests_via_Vagrant

Pousser les validations (commit)

Si vous utilisez MediaWiki-Vagrant pour le développement, vous aurez probablement envie de pousser certains "commits" dans le noyau MediaWiki ou dans un dépôt d'extensions à l'aide de git review. Par défaut, toutes les commandes distantes pointent vers les URL https://. Pour éviter leur redéfinition au cas par cas, exécutez :

$ git config --global url."ssh://<username>@gerrit.wikimedia.org:29418/".insteadOf "https://gerrit.wikimedia.org/r/"

Vous devez aussi avoir vos clés ssh dans ~/.ssh.

Comment puis je faire pour ... ?

Vérifiez la version de PHP et les paramètres.
http://127.0.0.1:8080/info.php
Modifier le fichier LocalSettings.php?
Tout d'abord, vérifiez qu'il n'y a pas de rôle (vagrant list-roles) qui fait déjà ce que vous avez besoin. Sinon, créez un fichier dans settings.d/. Voir le fichier README et le fichier d'exemple 00-debug.php.
Mettre à jour le code MediaWiki ?
Le plus simple est d'utiliser vagrant git-update à partir de l'hôte. Ou, pour simplement mettre à jour le code sans les dépendances, vous pouvez utiliser régulièrement les commandes git fetch, pull, etc. dans les répertoires vagrant/mediawiki et vagrant/mediawiki/extensions/"SomeExtension". Vous pouvez exécuter ces commandes sur la machine virtuelle, mais l' accès aux fichiers sera plus rapide sur la machine hôte. MediaWiki-Vagrant tire le code (pull) à partir de la branche master de Git lorsque vous mettez initialement en place et/ou ajoutez un rôle, mais ne met pas automatiquement le code à jour après cela.
Exécutez l'interpréteur PHP MediaWiki.
Connectez vous en ssh à vagrant et exécutez mwscript eval.php. Vous pourriez avoir besoin de l'exécuter avec sudo.
Exécutez l'interpréteur SQL MediaWiki
Connectez vous en ssh à vagrant et exécutez mwscript sql.php. Vous pourriez avoir besoin de l'exécuter avec sudo.
Mettre à jour les paquets logiciels de la machine virtuelle ?
vagrant provision ne met pas à jour les paquets "système" de la machine virtuelle. Lorsque vous vous connectez en ssh via vagrant, le message d'ouverture de session vous informera que :
"NN packages peuvent être mis à jour.
NN mises à jour sont des mises à jour de sécurité."
Dans "vagrant ssh" :
  • pour mettre à jour tous les paquets, saisissez sudo apt-get update && sudo apt-get upgrade
  • pour "l'installation automatique des mises à niveau de sécurité (et autres)", semblable à des instances Cloud VPS, entrez sudo unattended-upgrade
  • pour mettre à jour les mêmes paquets qui sont sur ​​les serveurs WMF de production... "TODO"
Personnalisez Vagrant.
Vous ne devriez jamais avoir besoin de changer directement le fichier Vagrantfile. Il y a différents aspects de vagrant que vous pouvez personnaliser :
* Les réglages système (utilisateur git, ports, ram, ip, redirection de port) peuvent être personnalisés via le fichier .settings.yaml. Voir vagrant config --help et vagrant forward-port --help pour les instructions. Ainsi par exemple vous pouvez exécuter vagrant forward-port 1234 80 pour activer la redirection des ports de l'hôte:1234 vers le client:80.
* Effectuez des étapes supplémentaires après le chargement du fichier Vagrantfile en créant un fichier appelé "Vagrantfile-extra.rb" et en le plaçant dans le même dossier que Vagrantfile. Il sera chargé automatiquement. En cas de conflit, les valeurs du fichier «extra» remplaceront les valeurs de ce fichier. Voir l'exemple dans "support/ directory".
Ajouter du code Puppet personnalisé ?
Ceci est idéal si vous souhaitez travailler sur votre propre site MediaWiki localement et laisser le MediaWiki-Vagrant installer vos dépendances pour vous. C'est idéal si vous avez votre propre "fork". Il y a une distinction entre un rôle et ce cas d'utilisation. Les rôles sont destinés à être installés dans un ordre quelconque et sans rupture. Si votre "fork" a besoin d'appels différents et cause des problèmes avec les rôles, créez votre propre classe et appelez ce que vous avez besoin, y compris les rôles.
Pour ce faire, placez votre code puppet personnalisé dans puppet/modules/local/manifests/myown.pp avec votre propre classe, comme ce qui suit :
class local::myown {
    include ::role::svg
}

Pour appliquer votre classe, ajoutez la dans la clé "classes" dans puppet/hieradata/local.yaml. Vous pouvez créer le fichier s'il n'existe pas.

classes:
  - local::myown

Ensuite, exécutez vagrant provision pour appliquer la modification via Puppet.

Mettre à jour MediaWiki-Vagrant lui-même ?
(Par exemple, pour utiliser de nouveaux rôles.) Dans un terminal, accédez au répertoire vagrant sur l'ordinateur hôte et saisissez une commande standard git comme git pull --ff-only. En général, vous voulez exécuter vagrant provision après la mise à jour pour appliquer les nouveaux changements de Puppet à votre machine virtuelle.
Exécuter les applications GUI sur la machine virtuelle ?
Si vous avez un serveur X d'installé, connectez vous en SSH dans la machine virtuelle en utilisant ssh --X pour activer le transfert de X. (Les utilisateurs de Mac doivent mettre à jour avec la dernière version de XQuartz.)
Comme alternative, vous pouvez exécuter la machine virtuelle en mode graphique, ce qui vous permet d'interagir avec la machine virtuelle comme si elle avait un affichage physique. Pour activer le mode GUI, créez un fichier appelé Vagrantfile-extra.rb dans le dossier racine du dépôt, avec ceci commme contenu :
Vagrant.configure('2') do |config|
    config.vm.provider :virtualbox do |vb|
        vb.gui = true
    end
end
Enregistrez le fichier et lancez vagrant halt suivi de vagrant up. L'affichage de la machine virtuelle apparaîtra dans une fenêtre sur votre bureau.
Ajuster les ressources allouées à la VM ?
Si vous souhaitez allouer plus ou moins de CPU/RAM à la machine virtuelle, voir vagrant config --help

pour les instructions.

Alternativement, vous pouvez le faire en créant Vagrantfile-extra.rb (voir support/ dir pour un exemple) :

Vagrant.configure('2') do |config|
    config.vm.provider :virtualbox do |vb|
        # See http://www.virtualbox.org/manual/ch08.html for additional options.
        vb.customize ['modifyvm', :id, '--memory', '768']
        vb.customize ['modifyvm', :id, '--cpus', '2']
    end
end
Changer l'éditeur utilisé pour les messages "git commit" ?
git config --global core.editor "vim"
Définir un nom d'hôte personnalisé ?

Allez à Horizon, cliquez sur Web Proxies, et entrez un nom d'hôte DNS, par exemple <hostname> Affichez votre nouveau wiki sur « http://<hostname>/wiki/ »

Faire pointer le nom d'hôte personnalisé vers la page d'accueil de mon rôle vagrant au lieu de la page d'accueil wiki ?

Créez un fichier local.yaml dans le répertoire /vagrant/puppet/hieradata. Dans ce dernier, ajouter :

<rolename>::vhost_name:<hostname>
role::mediawiki::hostname: localhost

Exécutez vagrant provision.

Exécuter une branche de MediaWiki autre que celle du master ?
Configurez la clé "mediawiki::branch" dans puppet/hieradata/local.yaml. Vous pouvez créer le fichier s'il n'existe pas.
mediawiki::branch: "wmf/1.24/wmf18"
Ce changement doit être fait AVANT d'exécuter vagrant up pour la première fois. Si vous décidez de le faire plus tard, faites le changement, détruisez votre VM actuelle avec vagrant destroy -f, supprimez votre "mediawiki checkout" existant et enfin construisez une nouvelle VM avec vagrant up.
Vagrant est conçu pour fonctionner avec la branche principale (Master), et peut ne pas fonctionner parfaitement, ou pas du tout avec les anciennes versions du noyau et/ou des extensions [3].
Exécuter MediaWiki sous HHVM plutôt que sous Zend PHP?
  • Pour convertir tous les wikis de votre instance MediaWiki-Vagrant vers HHVM: vagrant roles enable hhvm && vagrant provision

Utilisation avancée

Paramètres MediaWiki

Comme une alternative à la gestion de tous les paramètres MediaWiki dans un seul grand fichier LocalSettings.php ,pensez à regrouper vos configurations par composant ou thème, et à la création d'un fichier PHP séparé dans settings.d/ pour chaque groupe. Il est donc assez facile de garder vos paramètres organisés, pour désactiver provisoirement des configurations spécifiques, et pour partager les paramètres avec d'autres.

MediaWiki chargera automatiquement tous les fichiers PHP dans settings.d/ dans l'ordre lexical. Vous pouvez contrôler l'ordre dans lequel vos configurations sont définies en ayant l'habitude d'ajouter un préfixe à deux chiffres pour chaque nom de fichier.

Par exemple :

    settings.d/
    ├── 10-RunFirst.php
    ├── 20-SomeExtension.php
    └── 99-RunLast.php

Notez que les fichiers de paramètres dans settings.d/puppet-managed sont automatiquement créés et détruits en réponse à votre configuration Puppet. Ne mettez pas vos paramètres personnalisés ici, parce que Puppet va les effacer ou les remplacer. Gardez vos fichiers de paramètres personnalisés dans settings.d/ à la place.

Drapeaux Vagrant

vagrant config --list affiche une liste de tous les drapeaux Vagrant actuels.

Après le ./setup.sh initial, dans votre répertoire vagrant, vous pouvez ensuite initialiser un des drapeaux vagrant qui apparait dans la liste de configuration, par exemple vagrant config nfs_shares no

File d'attente des tâches

Si vous testez quelque chose qui doit désorganiser la file d'attente, vous devrez peut-être augmenter le nombre d'exécuteurs de tâches. Actuellement, cette option n'est pas disponible dans LocalSettings.php, mais doit être définie dans le fichier de configuration du programme d'exécution du travail.

  1. Ouvrir puppet/modules/mediawiki/templates/jobrunner.json.erb
  2. Modifier la valeur pour la clé 'runners' de 1 vers la valeur désirée (disons, 4)
  3. Re-provisionner avec vagrant --provision
  4. Attention cela va créer une différence entre votre code et celui du Master de Git

Voir les instructions ci-dessus pour ajuster le nombre de coeurs (core) de la CPU convenablement (hautement recommandé pour les tâches dépendant de la CPU telles que le transcodage video).

Espace supplémentaire de stockage

Par défaut, il y a relativement peu de place sur la partition racine (root) de la VM. Si vous envisagez de tester le téléversement et le traitement de gros fichiers image ou vidéo, cela peut être insuffisant.

Etapes manuelles:

  • Arrêter la machine virtuelle (vagrant halt)
  • Ouvir le gestionnaire de VirtualBox
  • Sélectionner la VM et aller dans les paramètres (Settings)
    • Sous Storage, selectionner "Controller: SATA" et cliquez sur l'icône "Add hard disk" pour ajouter un disque.
    • Sélectionner le type par défaut d'image disque.
    • Renommer le disque 'VagrantImageSpace' ou similaire, et attribuez lui assez d'espace (disons, 80GB) -- par défaut le fichier commencera petit et grossira en fonction de l'utilisation courante, donc donnez lui l'espace correspondant à ce que vous pourriez avoir besoin
    • Fermer les dialogues et redémarrez la VM (vagrant up)
  • Exécuter vagrant ssh pour obtenir un shell dans le terminal
    • Exécuter sudo fdisk /dev/sdb pour définir les nouvelles partitions...
    • Répondre n, p, 1, et faire Entrer deux fois pour la taille par défaut
    • Entrer w pour enregistrer la talbe des partitions
  • Exécuter sudo mke2fs /dev/sdb1 pour créer le système de fichiers
  • Exécuter sudo vi /etc/fstab pour modifier les points de montage
    • Ajouter à la fin, la ligne: /dev/sdb1 /srv/images ext4 errors=remount-ro 0 2
    • enregistrer et sortir
  • Exécuter sudo mount /srv/images pour monter le système de fichiers
  • Exécuter sudo chown www-data:www-data /srv/images pour définir les droits sur les fichiers
  • Sortir du shell exit
  • Redémarrer (reboot) la VM (vagrant halt; vagrant up)

Création des rôles

La machine virtuelle créée par MediaWiki-Vagrant ressemble à l'environnement de production de Wikimedia sur les points clés, et elle utilise le même outil —Puppet— c'est ce que l'équipe des opérations techniques de Wikimedia utilise pour gérer les serveurs de production et les instances Cloud VPS de Wikimedia. Puppet est un outil de gestion de configuration qui fournit un langage spécifique aux domaines pour traduire les configurations logicielles de manière déclarative. Les fichiers contenant le code de Puppet sont appelés « manifestes ». Lorsque Puppet fonctionne, il interprète les manifestes que vous déclarez et configure la machine en conséquence. Un rôle Vagrant est un ensemble de manifestes de Puppet.

Le code de base de Puppet pour MediaWiki-Vagrant contient des abstractions qui le rendent facile pour automatiser la configuration des extensions MediaWiki et des logiciels connexes. Si vous êtes un développeur travaillant sur un projet de logiciel relatif à MediaWiki, vous êtes encouragés à soumettre un patch avec un rôle de Puppet pour votre projet. L'ajout d'un rôle Vagrant pour votre projet permet aux autres développeurs d'accéder facilement à votre travail. L'utilisation d'une machine virtuelle configurée en tant que "bac à sable" de développement pour votre projet réduit le risque d'erreurs de type "ça marche chez moi" qui résultent souvent des développeurs distants géographiquement et travaillant avec des environnements incompatibles.

La meilleure façon de commencer avec des rôles personnalisés est de regarder comment les rôles existants sont mis en œuvre dans puppet/modules/role/manifests/*.pp . Ces rôles dépendent de modules de Puppet dans puppet/modules (habituellement, foo::bar { ... } est traduit en appel à puppet/modules/foo/manifests/bar.pp) et utilise les fichiers et les modèles des autres répertoires de puppet/modules/role/*/rolename/ . Le code de Puppet est généralement bien documenté et contient des exemples qui démontrent son bon usage.

Quelques uns des modules Puppet les plus utiles:

Installer une instance dans Cloud VPS

Vous pouvez utiliser MediaWiki-Vagrant du Cloud VPS pour installer MediaWiki sur une instance du Cloud VPS de Wikimedia et activer les rôles MediaWiki-Vagrant à l'intérieur.

Bogues

Si vous repérez un bug dans MediaWiki-Vagrant, prenez le temps de nous le signaler. Tout d'abord , assurez-vous que le bug est pas un bug de Vagrant ou VirtualBox connu en recherchant le Vagrant issue tracker on GitHub et le VirtualBox bugtracker. Si ce n'est pas le cas, allez-y et soumettez le bogue dans Wikimedia Phabricator. Décrivez clairement le problème et incluez les étapes pour le reproduire chaque fois que c'est possible.

Liens

Remarques

  1. Si vous êtes sur Fedora, ne suivez pas les instructions d'Oracle. Au lieu de cela, activez les dépôts RPMfusion (par exemple via la configuration de Apper), puis exécutez sudo dnf install VirtualBox VirtualBox-kmodsrc akmod-VirtualBox kmod-VirtualBox (note : c'est sensible à la casse et parfois sensible à la version ! si vous ne trouvez pas le paquet, recherchez dans Apper à la place). Vous pouvez aussi suivre ce guide. Il est possible que vous puissiez obtenir une erreur à propos de votre noyau qui serait trop récent. Si c'est le cas, installez akmods-VirtualBox, et exécuter akmods sudo pour vous assurer que le module soit compilé.
  2. If you are on Ubuntu 16.04, do not install Vagrant using apt-get. Instead, download it on the Vagrant web site. Using the version from APT will cause setup.sh to fail. On Fedora, you can run sudo dnf install vagrant instead.
  3. Vagrant dependent on MediaWiki 1.21+