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.
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
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é.
salut, j’ai eu 2 problèmes:
1) mariadb-server remplace mysql-server
2) le port 80 était occupé, j’ai arreté le service « Service de publication World Wide Web » (https://www.easytutoriel.com/port-80-http-occupe-windows.html)
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.