Manuel:Exécuter MediaWiki avec Windows Subsystem pour Linux

This page is a translated version of the page Manual:Running MediaWiki on Windows Subsystem for Linux and the translation is 100% complete.

Cette documentation permet d'exécuter MediaWiki sous Windows 10 avec WSL (Windows Subsystem for Linux). Voir Manuel:Installer MediaWiki sous Windows pour la documentation sur l'exécution de MediaWiki directement sous Windows.

Contexte

Windows 10 inclut un niveau de compatibilité avec Linux, le sous-système Windows pour Linux, conçu pour aider les développeurs web qui ont besoin d'un environnement de développement Linux/Unix sur un ordinateur Windows. Ceci peut être utilisé pour exécuter MediaWiki comme si on était sur une machine Linux, avec moins de surcharge et une meilleure integration, comparé à la configuration et l'exécution d'une machine virtuelle.

Ceci peut en faire une bonne solution pour les ordinateurs Windows 10 ayant une RAM et des ressources CPU limitées. Néanmoins WSL nécessite une édition 64-bits de Windows 10 (x64 ou ARM64), et ne peut pas s'exécuter avec les installations x86 32-bit de Windows 10.

Notes de sécurité

MediaWiki est une application web, et en suivant ces instructions nous allons configurer un serveur web qui s'exécute sur votre ordinateur et qui peut être proposé aux autres ordinateurs du réseau. En particulier, notez que PHP et autre code Linux qui s'exécutent dans le serveur web peuvent avoir accès à votre disque C:\ Windows et sont capables de lire et de modifier les fichiers ou d'exécuter les programmes Windows.

Il est fortement recommandé d'utiliser ceci dans un but de développement seulement, et non pas pour les déploiements du serveur, et de limiter l'accès réseau au serveur web pour éviter d'ouvrir accidentellement le réseau à n'importe quoi. N'exécutez MediaWiki qu'avec les extensions en lesquelles vous avez confiance.

Versions WSL

Deux versions majeures de WSL sont disponibles : la version originale qui émule le Linux kernel ABI en tant que pilote Windows, et la version WSL2 plus récente qui utilise une machine virtuelle Hyper-V spécialisée pour exécuter un noyau Linux natif. Alors que MediaWiki fonctionne avec WSL1, la mise à jour de mai 2020 propose un passage possible vers WSL 2. Il est possible de mettre à jour gratuitement de WSL1 vers WSL2 et inversement aussi, de rétrograder.

WSL2 est compatible avec davantage de logiciels, mais peut compliquer un peu certains scénarios d'intégration car la machine virtuelle possède sa propre adresse IP, différente de localhost. (Les serveurs sont redirigés vers localhost, donc ceci fonctionne généralement pour configurer un serveur web.)

Notez que WSL2 nécessite que le matériel prenne en charge la virtualisation et utilise Hyper-V sous le capot, mais est disponible sous Windows 10 Home et Windows 10 Pro. WSL1 ne nécessite pas de virtualisation. Cela permettra aux développeurs de faire l'installation plus facilement sur les machines existantes sans dépenser de l'argent pour une mise à niveau Pro, mais il peut y avoir des problèmes de compatibilité avec d'autres logiciels de machines virtuelles comme VirtualBox (v6.0 est la première version pouvant coexister avec les produits basés sur Hyper-V).

Configuration

  • Allez au Panneau de configuration, Programmes et fonctionnalités, puis le lien du côté gauche Activez ou désactivez les fonctionnalités Windows, ou exécutez C:\Windows\System32\OptionalFeatures.exe.
    • Cochez « Windows Subsystem pour Linux » et, pour WSL2, « Plateforme de machine virtuelle »
    • laissez-le s'installer et redémarrez
  • Allez sur 'Microsoft Store' et cherchez la dernière distribution Linux « Ubuntu »
    • installez-la !
    • Debian est également disponible, mais peut s'avérer un peu différent sous certains aspects.
  • Cliquez sur l'icône « Ubuntu » du menu Démarrer ou entrez wsl dans une session PowerShell, (remarquez comment l'invite change de style entre Windows et Linux).
    • suivez les invites sur l'écran à propos de la définition d'un nom d'utilisateur Linux et du mot de passe
    • laissez-le s'extraire

Configuration de WSL

Pour utiliser le mode WSL2, quittez et exécutez dans une session PowerShell :

  • wsl --set-version Ubuntu 2

La conversion des systèmes de fichiers peut prendre quelques minutes.

Pour vérifier la version de WSL en cours d'utilisation, exécutez :

  • wsl -l -v

Configuration des dépendances

Assurez-vous d'abord que l'image du système est bien à jour : exécutez sudo apt update && sudo apt upgrade -y dans le terminal Ubuntu. Cela peut prendre quelques minutes après la première installation.

Installer les dépendances : sudo apt install apache2 composer git git-review imagemagick mysql-client mysql-server php php-apcu php-cli php-gd php-intl php-mbstring php-mysql php-xml zip

Démarrage des services

Il est possible que vous deviez démarrer les services à la main :

  • sudo service mysql start
  • sudo service apache2 start
    • avec WSL1, cela peut demander au pare-feu Windows, le numéro du port d'écoute. Autorisez-le mais limitez-vous aux réseaux privés par mesure de securité.

Il est possible que vous ayez a passer plusieurs étapes pour définir le mot de passe de root sur mysql :

  • Lancez mysql en tant que root :
    • sudo mysql
  • Exécutez dans le terminal mysql :
    • use mysql;
    • alter user 'root'@'localhost' identified by 'your-password-here'; - Si cela échoue, essayez à la place update user set authentication_string=password('your-password-here'), plugin='mysql_native_password' where user='root';.
    • create user 'your_name'@'localhost' identified by 'your-password-here';
    • create database 'database_name'; - Cela doit correspondre à la base de données wiki du processus d'installation
    • grant all on 'database_name'.* to 'your_name'@'localhost';
    • flush privileges;
    • exit
  • Vous pouvez maintenant utiliser le nom d'utilisateur 'root', le mot de passe 'your-password-here' lorsque vous vous connectez à partir de l'installeur

Configuration de MediaWiki

Copiez les éléments de Git comme vous le feriez d'un serveur Linux.

Apache sous Ubuntu est défini par défaut pour pointer sur /var/www/html pour docroot; vous pouvez y créer un sous-répertoire pour copier ou reconfigurer Apache avec un chemin personnalisé. /var/www/html/w est recommandé pour la cohérence avec la convention que /w/index.php soit le chemin vers le script principal.

Extensions

Par exemple (dans skins/):

N'oubliez pas d'exécuter composer update --no-dev dans le répertoire MW, et pour tout dossier d'extension où c'est nécessaire.

Exécutez l'installeur web dans un navigateur à http://localhost/w/; utilisez votre nom et la base de données ici pour l'installation.

Lorsque l'installeur vous demande de télécharger LocalSettings.php à la fin, enregistrez-le dans \\wsl$\Ubuntu\var\www\html\w ou équivalent et vous pourrez accéder à votre wiki !

File des tâches

Vous pouvez, ou avez besoin d'exécuter manuellement l'exécuteur de la file des tâches. Au mieux, ceci doit être fait par le serveur web, mais à la rigueur, vous pouvez lancer le terminal Ubuntu et exécuter :

  • cd /var/www/html/
  • php maintenance/runJobs.php

Autre configuration

Pour la plupart, l'environnement WSL va ressembler à tout autre système Ubuntu ou Debian, sauf que les services ne sont pas démarrés automatiquement et qu'ils devront être démarrés manuellement à chaque redémarrage. Voir le manuel pour les instructions générales concernant l'utilisation de ces systèmes opératoires.

Modifier les fichiers

A partir du côté Windows vous pouvez accéder aux fichiers Linux de \\wsl$\Ubuntu, donc les éditeurs de texte Windows qui respectent les caractères de fin de ligne d'Unix peuvent être utilisés pour fonctionner avec votre code et votre configuration.

Le code de Visual Studio possède également une extension de WSL distante qui peut s'intégrer plus directement dans l'environnement WSL, qui serait bien pour utiliser le linting PHP dans l'éditeur.

Néanmoins notez la mise en garde concernant la modification des fichiers Linux avec les applications Windows et les outils

Ou bien vous pouvez utiliser vos éditeurs favoris, basés sur le terminal.