Installer un serveur Web LAMP (Apache, MySQL, PHP) sur WSL 2
Sommaire
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 :
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
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.
Merci pour votre tuto 🙂