Installation d’Apache / MySQL / PHP sur Windows 10 avec WSL (Windows subsystem for linux)

Temps de lecture estimé: 5 minutes

Comme je l’annonçais précédemment, j’ai changé de PC et je voulais aussi changer d’environnement de dev.

Windows 10 permet maintenant d’avoir un sous-système Windows pour Linux (WSL – Windows subsystem for Linux).

Installation de WSL

La procédure pour installer un système de base est assez simple et décrite ici.

En résumé, il faut ouvrir PowerShell en tant qu’administrateur et exécuter:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 

Puis redémarrer l’ordinateur lorsqu’on y est invité.

Aller ensuite sur le Microsoft store et installer la distribution de votre choix. Moi j’ai choisi d’installer une distrib Ubuntu.

Ubuntu sur le Microsoft Store

Voilà!!! Après l’installation, le paramétrage du sous-système et la création d’un utilisateur de base, on a accès au meilleur des 2 mondes!!

Cmder

Bon par contre l’invite de commande n’est pas assez pratique à mon goût. Alors je vais le pluguer à mon interface de console préférée!! Cmder.

Je télécharge la dernière version full depuis le site.

Je crée un répertoire Cmder dans %APPDATA% (C:\Users\antho\AppData\Roaming pour moi), dans lequel je vais mettre le contenu de l’archive téléchargée.
J’exécute ensuite Cmder.exe

C:\Users\antho\AppData\Roaming\Cmder

J’avais déjà mes préférences de mon autre PC, donc j’ai repris mon ancien fichier ConEmu.xml pour récupérer mes raccourcis, préférences (notamment le quake mode) et je l’ai placé dans:

%APPDATA%\Cmder\vendor\conemu-maximus5\ConEmu.xml 

Je vais ensuite dans:

%APPDATA%\Microsoft\Windows\Start Menu\Programs

et je crée un raccourci avec:

%APPDATA%\Cmder\vendor\conemu-maximus5\ConEmu64.exe
/Icon "%APPDATA%\cmder\icons\cmder.ico" /Single /Title Cmder
/LoadCfgFile "%APPDATA%\Cmder\vendor\conemu-maximus5\ConEmu.xml"

Ensuite pour lancer un bash Ubuntu avec Cmder, il suffit d’ajouter une tache Win + Alt + T ou par l’interface.

Pour l’icône, on peut utiliser celui du bash Ubuntu (ou tout autre qui te fera plaisir):

/icon "%USERPROFILE%\AppData\Local\lxss\bash.ico"

Et la commande à exécuter, c’est le bash WSL:

%windir%\system32\bash.exe ~ -cur_console:p

On n’oublie pas de sauvegarder, et boummm!! Alt + Shift + 9 et ça ouvre un bash Ubuntu.

Apache / MySQL / PHP

Maintenant que je suis confortable, je peux m’atteler à l’installation d’une stack LAMP (Linux / Apache / MySQL / PHP).
L’inconvénient de cette méthode (tout comme avoir un wampserver sur son Windows), c’est qu’il faut lancer les services manuellement.

Donc pour commencer, comme d’hab, mise à jour du système:

sudo apt update && sudo apt upgrade

Serveur web Apache

Pour Apache, c’est assez simple, il suffit de l’installer et de le lancer:

 sudo apt install apache2

Puis:

sudo service apache2 start

Et on peut dès à présent accéder à:

http://localhost/ 

Serveur MySQL

Pour les bases de données, on passe à MySQL. Tout comme Apache, On l’installe:

sudo apt install mysql-server

Et là on va se confronter aux premières difficultés!!
Il faut réinitialiser le mot de passe de l’utilisateur root MySQL.
Pour ça, on édite le fichier de config du serveur MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 

Et juste en dessous de la section [mysqld], il faut ajouter:

skip-grant-tables

On (re)démarre le serveur:

sudo service mysql restart

À l’heure où j’écris ces quelques lignes, il y a un bug qui affiche:

No directory, logging in with HOME=/
mkdir: cannot create directory ‘//.cache’: Permission denied
-su: 19: /etc/profile.d/wsl-integration.sh: cannot create //.cache/wslu/integration: Directory nonexistent

On ne va pas se mentir… Ça n’a pas grande importance…

Revenons à nos moutons. Maintenant que le serveur MySQL est lancé en mode Open Bar, on peut ensuite se connecter au serveur sans authentification et changer le mot de passe de l’utilisateur root dans la base de données mysql:

mysql -u root -p
 
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("") where User='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 
mysql> flush privileges;
mysql> quit; 

Maintenant qu’on a initialisé le mot de passe root, on retourne dans le fichier de config enlever la ligne skip-grant-tables:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Suivi d’un restart:

sudo service mysql restart

Et là c’est bon on peut se connecter au serveur MySQL sans encombre.

PHP, git, nodeJs, composer etc …

On finit par installer le reste avec:

sudo apt install git nodejs npm libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-mcrypt php-mysql php-xml php-zip composer php-bz2 python

Je vais avoir besoin de yarn mais mieux vaut l’installer via npm et non apt:

sudo npm install -g yarn

Pour aller plus loin

PhpMyAdmin

Pour aller un peu plus loin, je vais créer un virtual host pour phpmyadmin (et l’installer à partir du dépôt github).
Je commence par télécharger la dernière version stable de PhpMyadmin depuis le dépôt dans un dossier pma (lui même dans /mnt/c/Users/antho/dev_workspace ):

git clone --branch=STABLE https://github.com/phpmyadmin/phpmyadmin.git pma

Une fois le dépôt cloné, on se place dans le répertoire pma et on installe les dépendances avec composer et yarn:

 cd pma/
 composer update --no-dev 
 yarn install 

VirtualHost

Je vais maintenant créer un virtualhost pour accéder à PhpMyAdmin en tapant http://pma.local/ dans mon navigateur.
Pour ça, on crée un fichier de conf de virtualhost dans le dossier de conf d’Apache:

sudo nano /etc/apache2/sites-available/pma.local.conf

Puis j’y colle:

<VirtualHost *:80>
         ServerName pma.local
         DocumentRoot /mnt/c/Users/antho/dev_workspace/pma
         <Directory  "/mnt/c/Users/antho/dev_workspace/pma">
                 Options +Indexes +Includes +FollowSymLinks +MultiViews
                 AllowOverride All
                 Require local
         </Directory>
 </VirtualHost>

J’enregistre et je quitte nano puis j’active le vhost et je recharge Apache:

sudo a2ensite pma.local
service apache2 reload

En parallèle sur Windows, je n’oublie pas de modifier (en tant qu’administrateur) le fichier host (C:\Windows\System32\drivers\etc\hosts) pour y ajouter une ligne:

127.0.0.1 pma.local  

Voilà, à cette étape on peut accéder à la page de setup de PhpMyAdmin:

http://pma.local/setup/ 

Une fois le paramétrage effectué, on exporte le fichier de config généré en cliquant sur le bouton download.
Vu que je l’installe sur mon filesystem Windows (sans la gestion de droit Linux), j’ajoute une ligne au début de mon fichier de config:

$cfg['CheckConfigurationPermissions'] = false;

Et je le place à la racine du dossier pma. Voilà! On peut se connecter avec l’utilisateur root:

http://pma.local/

L’étape complémentaire serait d’activer les options avancées:

Et de créer un utilisateur non root (éventuellement, vu qu’on reste dans un environnement de dev…)

Bon! C’est maintenant terminé! J’ai un nouvel environnement de dev configuré sur mon PC qui va me permettre de développer et tester tout un tas de nouveaux projets.

J’espère que cet article t’aura permis de voir une possibilité de développer et configurer un serveur sur Windows avec un peu plus de facilité que Wampserver. 
N’hésite pas à me le dire en commentaire ou me dire comment toi tu t’organises de ton côté.

Partagez l'article:
FacebookTwitterEmailLinkedIn

2 réflexions au sujet de « Installation d’Apache / MySQL / PHP sur Windows 10 avec WSL (Windows subsystem for linux) »

    1. Bonjour Emmanuel! j’avoue que pour MariaDB, j’ai en effet choisi MySql, mais ça devrait être MariaDB dans l’idéal.
      Pour le port 80, étrange …
      Merci en tout cas pour ton retour.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

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