Sous-système Windows pour Linux
Le sous-système Windows pour Linux permet aux développeurs d'exécuter l'environnement GNU/Linux - y compris la plupart des outils, utilitaires et applications en ligne de commande - directement sur Windows, sans modification, sans la surcharge d'une machine virtuelle.
Tu peux:
- Choisissez vos distributions GNU/Linux préférées dans le Windows Store.
- Exécutez des logiciels gratuits en ligne de commande courants tels que grep, sed, awk ou d'autres binaires ELF-64.
- Exécutez des scripts shell Bash et des applications de ligne de commande GNU/Linux, notamment :
- Outils : vim, emacs, tmux
- Langages : Javascript/node.js, Ruby, Python, C/C++, C# & F#, Rust, Go, etc.
- Services : sshd, MySQL, Apache, lighttpd
- Installez des logiciels supplémentaires à l'aide de votre propre gestionnaire de packages de distribution GNU/Linux.
- Invoquez des applications Windows à l'aide d'un shell de ligne de commande de type Unix.
- Appelez les applications GNU/Linux sous Windows.
Pour plus d'informations, visitez : Windows Subsustem for Linux Documentation.
Installation du sous-système Windows pour Linux.
L'installation du sous-système Windows pour Linux est bien décrite par le propre document de Microsoft Installer le sous-système Windows pour Linux. Au lieu de la distribution Ubuntu standard mentionnée dans le guide d'installation, recherchez et choisissez la dernière version d'Ubuntu 18.04 LTS.
Pour initialiser et mettre à jour l'installation d'Ubuntu, suivez Initialisation d'une distribution nouvellement installée. Cette étape peut être ignorée si vous avez déjà initialisé la distribution Ubuntu à l'étape précédente.
/mnt/c/
. Bien que cela ne soit pas obligatoire, il est préférable d'utiliser exactement la même casse de chemin de fichier lors de la création de liens symboliques.
Installation d'Apache.
Utilisez la commande suivante dans le shell bash pour installer Apache :
$ | sudo apt install apache2
Créez un dossier de projet pour vos sites Web. Pour les raisons mentionnées ci-dessus, ce dossier doit être en dehors du système de fichiers WSL. Vous pouvez utiliser par exemple : C:/Users/<Username>/Documents/Development/Web/webroot, ou simplement C:/webroot
.
Dans Ubuntu, créez un lien symbolique vers le dossier webroot
.
$ | sudo ln -s /mnt/c/your/path/to/webroot /var/www/webroot
Ouvrez le fichier de configuration de l'hôte virtuel par défaut d'Apache :
$ | sudo nano /etc/apache2/sites-available/000-default.conf
Maj
enfoncée et faites défiler vers le bas à l'aide de la touche ↓. Appuyez ensuite sur Ctrl+K
pour couper la sélection.
Insérez la configuration VirtualHost suivante :
1 | <VirtualHost *:80>
2 |
3 | ServerName localhost
4 |
5 | ServerAdmin webmaster@localhost
6 | DocumentRoot /var/www/webroot
7 |
8 | <Directory /var/www/>
9 | Options Indexes FollowSymLinks
10 | AllowOverride All
11 | Require all granted
12 | </Directory>
13 |
14 | ErrorLog ${APACHE_LOG_DIR}/error.log
15 | CustomLog ${APACHE_LOG_DIR}/access.log combined
16 |
17 | </VirtualHost>
Ctrl + O
et appuyez sur Entrée
pour confirmer. Quittez avec Ctrl+X
.
(Dans la barre de commandes : ^
signifie Ctrl
et M
signifie Alt
)
Ouvrez votre éditeur/IDE Windows préféré et créez un fichier index.html
dans votre dossier webroot avec le contenu suivant :
1 | <!DOCTYPE html>
2 | <html lang="en">
3 | <head>
4 | <meta charset="utf-8">
5 | <title>It works!</title>
6 | </head>
7 | <body>
8 | <h1>It works!</h1>
9 | </body>
10 | </html>
Démarrez le service Apache :
$ | sudo service apache2 start
Ouvrez http://localhost dans votre navigateur et vous devriez voir le texte « Ça marche ! ».
Pour que vos futurs sites Grav fonctionnent correctement, le module Apache rewrite
doit être activée.
$ | sudo a2enmod rewrite
Installation de PHP.
Utilisez la commande suivante pour installer la dernière version de PHP :
$ | sudo apt install php
Pour vérifier que PHP est installé et vérifier sa version, exécutez la commande suivante :
$ | php-v
Vous devriez obtenir une réponse semblable à celle-ci :
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (construit : 4 juillet 2018 16:55:24) ( NTS )
Copyright (c) 1997-2018 Le Groupe PHP
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Pour répondre aux exigences PHP de Grav, quelques extensions PHP supplémentaires doivent être installées :
$ | sudo apt install php-mbstring php-gd php-curl php-xml php-zip
Redémarrez Apache pour récupérer les modifications :
$ | sudo service apache2 restart
Installation de Grav.
Vous pouvez installer Grav depuis Windows ou depuis Ubuntu.
Option 1 : Windows.
Installez Grav en téléchargeant le package ZIP et en l'extrayant :
- Téléchargez le dernier et le meilleur package Grav ou Grav + Admin.
- Extrayez le fichier ZIP dans la racine Web que vous avez créée auparavant.
- Renommez le dossier extrait en
mysite
. - Ouvrez http://localhost/mysite dans le navigateur et vous devriez avoir une installation Grav fonctionnelle.
Option 2 : Ubuntu.
Exécutez les commandes suivantes pour installer Grav dans la racine Web par défaut d'Apache :
$ | wget -O grav.zip https://getgrav.org/download/core/grav/latest
$ | sudo apt install unzip # unzip is not installed by default on WSL/Ubuntu
$ | unzip grav.zip -d /var/www/webroot
$ | mv /var/www/webroot/grav /var/www/webroot/mysite
Ouvrez http://localhost/mysite dans le navigateur et vous devriez avoir une installation Grav fonctionnelle.
Pour d'autres options d'installation, visitez la documentation d'installation de Grav.
Installation de XDebug (facultatif).
Si vous êtes développeur et que vous souhaitez développer vos propres plugins et thèmes, vous devrez ~~probablement~~ inévitablement déboguer votre code à un moment donné...
Installez XDebug à l'aide de la commande suivante :
$ | sudo apt install php-xdebug
XDebug doit être activé dans php.ini
.
Ouvrez l'éditeur :
$ | sudo nano /etc/php/7.2/apache2/php.ini
Et ajoutez les lignes suivantes à la fin du fichier :
[XDebug]
xdebug.remote_enable = 1
Alt+/
pour accéder au bas du fichier.
Redémarrez Apache :
$ | sudo service apache2 restart
Activation du débogueur.
Pour commencer le débogage, vous devez d'abord activer le débogueur sur le serveur. Pour cela, vous devez définir un paramètre spécial GET/POST ou COOKIE. Vous pouvez le faire manuellement, mais il est beaucoup plus pratique d'utiliser une extension de navigateur. Il vous permet d'activer le débogueur en un clic. Lorsque l'extension est active, elle envoie directement le cookie XDEBUG_SESSION, au lieu de passer par XDEBUG_SESSION_START. Vous trouverez ci-dessous un tableau avec le lien vers l'extension appropriée pour votre navigateur.
Navigateur | Extension d'aide |
---|---|
Chrome | Xdebug Helper |
Firefox | Xdebug Helper ou Le Xdebug le plus simple |
Opera | Xdebug launcher |
Lorsque vous souhaitez activer/désactiver le débogage d'un site Web, activez simplement "Débogage" dans l'extension du navigateur.
Lancement du débogueur dans Visual Studio Code (facultatif).
Lorsque vous utilisez Visual Studio Code, les lanceurs de débogage PHP par défaut ne fonctionnent pas lorsque Apache/PHP s'exécute dans WSL, en raison des mappages de fichiers.
Insérez la configuration suivante dans une configuration de lancement PHP déjà créée dans .vscode/launch.json
:
1 | {
2 | "name": "LSW Listen for XDebug",
3 | "type": "php",
4 | "request": "launch",
5 | "port": 9000,
6 | "pathMappings": {
7 | "/mnt/c": "c:/",
8 | }
9 | }
Ajout d'hôtes virtuels supplémentaires (facultatif).
Au cours des différentes étapes du cycle de vie de notre site (développement, test, production) différentes configurations Grav peuvent être nécessaires. Prenons par exemple la mise en cache ou les pipelines d'actifs. Vous voudrez peut-être les désactiver pendant le développement et les activer lors des tests de performances. Pour plus d'informations, consultez la documentation sur la configuration automatique de l'environnement.
- Démarrez un éditeur en tant qu'administrateur et ouvrez le fichier
C:/Windows/System32/drivers/etc/hosts
. Vous pouvez, par exemple, ajouter les hôtes suivants :
127.0.0.1 mysite-dev
127.0.0.1 mysite-prod
Les hôtes définis dans le fichier d'hôtes Windows seront automatiquement disponibles dans /etc/hosts
dans WSL/Ubuntu.
-
Créez de nouveaux fichiers de configuration VirtualHost dans le dossier
/etc/apache2/sites-available
.$ | sudo nano /etc/apache2/sites-available/mysite-dev.conf
Collez ce qui suit dans l'éditeur :
1 | <VirtualHost *:80>
2 |
3 | ServerName mysite-dev
4 |
5 | ServerAdmin webmaster@localhost
6 | DocumentRoot /var/www/webroot/mysite
7 |
8 | <Directory /var/www/>
9 | Options Indexes FollowSymLinks
10 | AllowOverride All
11 | Require all granted
12 | </Directory>
13 |
14 | ErrorLog ${APACHE_LOG_DIR}/error.log
15 | CustomLog ${APACHE_LOG_DIR}/access.log combined
16 |
17 | </VirtualHost>
Répétez les commandes ci-dessus pour mysite-prod.conf
et utilisez ServerName mysite-prod
comme serveur.
Activez les nouveaux VirtualHosts dans la configuration Apache :
$ | sudo a2ensite mysite-*
$ | sudo service apache2 reload
$ | sudo service apache2 restart
Vous pouvez maintenant pointer le navigateur vers http://mysite-dev et il ouvrira l'installation de Grav sur C:/your/path/to/webroot/mysite
en utilisant les fichiers de configuration dans le dossier /user/mysite-dev/config/
.
Démarrer automatiquement Apache (facultatif).
Pour démarrer et arrêter Apache, des privilèges élevés sont requis. Et pour bénéficier des privilèges élevés, un mot de passe est demandé. Pour empêcher Ubuntu de demander un mot de passe, vous pouvez vous accorder des privilèges élevés permanents pour certains services.
Démarrez l'éditeur visudo pour modifier le fichier sudoer :
$ | sudo visudo -f /etc/sudoers.d/services
Copiez les lignes suivantes dans l'éditeur :
%sudo ALL=(root) NOPASSWD: /usr/sbin/service *
%wheel ALL=(root) NOPASSWD: /usr/sbin/service *
Apache peut maintenant être démarré avec des privilèges élevés sans fournir de mot de passe.
Pour démarrer Apache à chaque démarrage d'un shell Ubuntu, la commande sudo service apache2 start
doit être ajoutée au script de démarrage .bashrc
. Ce script est exécuté chaque fois que vous démarrez un terminal WSL.
$ | nano .bashrc
Ajoutez le script suivant à la fin du fichier :
1 | ## Start apache2 if not running
2 | status=`service apache2 status`
3 | if [[ $status == *"apache2 is not running" ]]
4 | then
5 | sudo service apache2 start
6 | fi
Et ajoutez ce qui suit à .bash_logout
pour arrêter Apache lors de la fermeture du shell bash.
1 | ## Stop apache2 if running
2 | status=`service apache2 status`
3 | if [[ $status == *"apache2 is running" ]]
4 | then
5 | sudo service apache2 stop
6 | fi
Trucs et astuces.
Émulateur de terminal Linux avec interface graphique.
Si vous n'êtes pas fan de l'expérience de terminal par défaut et que vous souhaitez installer un terminal graphique Linux "natif", vous pouvez consulter l'article Configuration d'un émulateur de terminal joli et utilisable pour WSL.
Plusieurs sites Web, une seule base de code Grav.
Si vous êtes comme moi et que plusieurs sites Web Grav sont déployés pour des projets distincts, vous voudrez peut-être lire la documentation sur les liens symboliques et sur la copie d'un projet pour créer une copie symbolique d'un seul noyau Grav.