Installer un serveur Web LAMP (Apache, MySQL, PHP) sur WSL 2

I. Présentation

Dans ce tutoriel, nous allons installer un serveur Web sur WSL 2 (Windows Subsystem for Linux 2), à partir d'une distribution Ubuntu (Linux). L'objectif étant d'avoir un serveur LAMP complet basé sur Apache2, MySQL et PHP.

Pour ce dixième épisode de ma série d'articles au sujet de WSL, nous allons mettre en œuvre un rôle sur une distribution Linux. Puisque WSL 2 intègre un noyau Linux complet, c'est l'occasion de monter un serveur Web facilement, sans devoir monter sa propre machine virtuelle, et sans devoir installer WAMP ou XAMPP sur sa machine Windows directement.

Comme nous avons pu le voir, on peut facilement accéder aux données de notre machine Linux depuis Windows, ce qui sera pratique au quotidien ! Du coup, avec WSL 2, on a tout ce qu'il faut à disposition pour monter un serveur Web le temps du développement, avant de le basculer en production sur un serveur dédié à cet usage.

Si l'idée vous plaît, vous n'avez plus qu'à suivre les étapes ci-dessous.

II. Installation du serveur LAMP sur Ubuntu via WSL

Je pars du principe que WSL 2 est déjà actif et que vous avez déjà une distribution Ubuntu 20.04 installée également. Pour ma part, je me trouve sur Windows 10 pour réaliser les manipulations.

wsl -l -v

Je vais démarrer ma distribution Ubuntu et directement accéder à sa console.

wsl -d Ubuntu

Commençons par mettre à jour le cache des paquets :

sudo apt update

Puis, mettons à jour les paquets en eux-mêmes pour partir sur une bonne base :

sudo apt upgrade

Une fois cette première étape franchie, passons à l'installation des paquets nécessaires à la mise en œuvre d'un serveur LAMP sous Ubuntu.

Pour faciliter l'installation des paquets Apache2, MySQL et PHP, ainsi que certains modules, nous allons directement utiliser le meta package "lamp-server". Cela va éviter d'installer les composants séparément, mais cela fonctionnerait aussi.

Voici la commande à exécuter (le caractère "^" à la fin est important) :

sudo apt-get install lamp-server^

Sur la copie d'écran ci-dessous, vous pouvez voir tous les paquets qui seront installés :

Serveur LAMP WSL 2

III. S'assurer du bon fonctionnement du serveur Web

Une fois que l'installation des paquets est effectuée, on peut démarrer notre serveur Web Apache2 :

sudo service apache2 start

D'ailleurs, il est livré avec une page index.html très basique, mais qui va permettre de s'assurer que le serveur Web est joignable. Ce fichier est disponible dans le répertoire "/var/www/html", qui correspond au répertoire du site par défaut d'Apache2.

ls /var/www/html/

Depuis la machine Windows, nous pouvons accéder à la page d'accueil de notre site Web via un navigateur :

http://localhost

Serveur Apache avec WSL

Pour vérifier que notre moteur de script PHP est bien actif lui aussi, on peut créer un fichier phpinfo.php (ou un autre nom) à la racine de notre site Web :

sudo nano /var/www/html/phpinfo.php

Dans ce fichier, indiquez le code suivant :

<?php
phpinfo();
?>

La fonction phpinfo() permet d'afficher la configuration actuelle de PHP sur notre serveur. Elle est très intéressante et riche en information. Il faudra penser à supprimer ce fichier quand votre site deviendra public : les informations ne doivent pas être à la disposition de n'importe qui...

Si l'on retourne sur la machine Windows 10 et que l'on accède à notre page phpinfo.php, on voit bien que ça fonctionne !

http://localhost/phpinfo.php

Pour éditer la configuration du site par défaut d'Apache2, il faut s'attaquer au fichier suivant :

sudo nano /etc/apache2/sites-available/000-default.conf

Quant à la partie MySQL 8.0, elle mérite aussi un peu d'attention. Commençons par démarrer le service :

sudo service mysql start

La commande ci-dessous va permettre d'obtenir la version actuelle de MySQL que l'on a déployé sur notre distribution Ubuntu :

sudo mysql -V
mysql Ver 8.0.25-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

Ensuite, nous allons exécuter une opération de sécurisation de notre instance MySQL en exécutant la commande suivante :

sudo mysql_secure_installation

Un assistant va s'exécuter et vous allez avoir le droit à un interrogatoire ! 😉

Première étape : le composant "Validate Password", que je vous recommande d'activer en indiquant "y". Il va permettre entre autre d'imposer une politique de mots de passe au niveau de votre MySQL. Ensuite, il faut choisir une politique de validation des mots de passe entre LOW (0), MEDIUM (1) et STRONG (2).

Une fois que c'est fait, vous devrez définir le mot de passe "root" de l'instance MySQL : un mot de passe complexe à ne surtout pas perdre !

S'en suit une série de questions... Pour sécuriser au minimum votre instance MySQL, je vous recommande de répondre "Oui" ("y") à toutes les questions. Par exemple, cela va permettre d'empêcher les accès anonymes et de désactiver les connexions distantes avec l'utilisateur "root".

Une fois que c'est fait, vous pouvez accéder à la ligne de commande MySQL grâce à la commande suivante :

sudo mysql -u root -p

Il ne reste plus qu'à saisir le mot de passe "root" de MySQL.

Notre serveur LAMP sur Ubuntu, via WSL 2 (et Windows 10) est en place ! Il ne reste plus qu'à configurer le serveur Web comme on pourrait le faire dans une machine virtuelle classique. Libre à vous de déployer votre application favorite sur ce serveur : WordPress, Nextcloud, etc... Ou développer votre propre projet.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5471.Voir tous les posts

One thought on “Installer un serveur Web LAMP (Apache, MySQL, PHP) sur WSL 2

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.