Formation PUB030 : Laravel, 2019 Travailler avec Laravel

1.3 Installation de Homestead sous Windows pour développer en Laravel


Laravel, un framework PHP qui utilise le patron de conception MVC, peut être installé directement sur votre poste de travail et tourner dans un environnement de développement comme AMPPS ou EasyPHP. Cependant, pour faciliter votre développement, il est conseillé d’utiliser Homestead. Il s’agit d’un environnement pré-configuré qui sera déployé sur une machine virtuelle.

Note : si vous travaillez sous Mac, lisez plutôt cette fiche : Installation de Homestead sous Mac pour développer en Laravel.

Cet article vous indiquera la procédure détaillée à suivre pour installer Homestead sur un poste de travail Windows.

Votre code tournera sur une machine virtuelle Linux Ubuntu installée sur votre ordinateur.
Vos fichiers de code seront enregistrés directement sur votre poste de travail dans un dossier qui sera partagé sur votre machine virtuelle.
Votre éditeur sera installé sur votre poste de travail.

Les instructions et impressions d'écran correspondent aux versions suivantes, qui étaient les plus récentes au moment lors de la dernière mise à jour majeure de cet article (janvier 2019) :

  • VirtualBox 6.0.2
  • Vagrant 2.2.3
  • Homestead 7.20.0
  • Git 2.20.1

Note : si vous travaillez avec des versions différentes (et ce sera certainement le cas), vérifiez bien les compatibilités entre ces produits. Par exemple, au moment d'écrire ces notes, Vagrant était compatible avec VirtualBox 6.0 et moins.

  1. Vous avez d’abord besoin d’une machine virtuelle.

    Téléchargez et installez VirtualBox sur votre ordinateur (gratuit) : https://www.virtualbox.org/wiki/Downloads.

    Vous n’avez pas besoin de démarrer votre logiciel de virtualisation à ce stade. Ne créez pas non plus de machine virtuelle pour l’instant. Homestead le fera pour vous un peu plus loin.

  2. Pour que votre machine virtuelle puisse fonctionner, vous devez vous assurez que votre ordinateur permette la virtualisation. C'est généralement le cas mais voici tout de même comment vous en assurer.

    1. Redémarrez votre ordinateur puis appuyez sur F12 de façon répétée pendant le démarrage (sur certains ordinateurs, notamment les Lenovo, c'est plutôt la touche F1 qu'il faut utiliser (ou encore la touche Entrée suivie de F1)).
    2. Entrez dans les configurations du BIOS (les menus sont différents d'un ordinateur à l'autre).

      Sur un Dell, après avoir appuyé sur F12 :

      Bios Dell

      Sur un Lenovo, après avoir appuyé sur Entrée :

      Bios Lenovo

      puis sur F1 :

      Bios Lenovo

    3. Vous devez recherchez une option qui parle de Virtualization Technology. Sur certains ordinateurs, on parlera plutôt de VT-x.

      Sur ce DELL, l’option Enable Intel Virtualization Technology était activée par défaut.

      Virtualisation activée sur Dell

      Par contre, ce n'est pas le cas sur tous les ordinateurs, comme par exemple sur ce Lenovo.

      Bios Lenovo - virtualisation désactivée

  3. Vagrant est un outil qui permet de monter un environnement de développement reproductible, de façon automatisée et dans un environnement virtualisé. L’environnement sera monté à partir de fichiers virtualisés, de scripts ainsi que de fichiers de configuration regroupés dans ce qu’on appelle une boîte Vagrant. Vous utiliserez donc Vagrant pour monter votre environnement de développement sur votre machine virtuelle.

    Téléchargez et installez Vagrant sur votre ordinateur (Vagrant est gratuit et, si vous utilisez VirtualBox, vous n’aurez aucune extension à acheter) : http://www.vagrantup.com/downloads.html.

  4. Vérifiez si Vagrant a bien été installé sur votre ordinateur. Pour ce faire, ouvrez une fenêtre de commande sur votre ordinateur et tapez :

    Fenêtre de commande DOS

    vagrant -v

    Le système devrait répondre en vous donnant la version installée.

  5. Homestead est une boîte Vagrant, c’est-à-dire un regroupement de fichiers virtualisés, de scripts ainsi que de fichiers de configuration qui permettront à Vagrant de monter l’environnement de développement désiré.

    Vous êtes maintenant prêt à ajouter la boîte Homestead dans Vagrant.

    Pour télécharger Homestead, ouvrez une fenêtre de commande et lancez la commande :

    Fenêtre de commande DOS

    vagrant box add laravel/homestead --force

    Notez que le --force assure que la boîte sera téléchargée de nouveau dans le cas où elle existait déjà.

    Attention : cette étape peut être longue si vous n'avez pas accès à une connexion Internet rapide.

    vagrant box add laravel/homestead

  6. Git est sans contredit un outil indispensable pour gérer les versions de vos programmes. Vous n'auriez normalement pas besoin d'installer Git puisque la boite Vagrant se chargera de l'installer pour vous dans votre machine virtuelle. Cependant, si vous l'installez également sur votre ordinateur Windows, vous aurez accès à l'outil Git Bash, une fenêtre de commande mieux adaptée aux besoins actuels que celle de Windows. Vous pourrez notamment y utiliser des commandes du style Linux, telles que retrouvées un peu partout dans le monde Laravel sur les tutoriels et les forums de discussions.

    Git Bash sera utilisé pour le reste des manipulations de ce tutoriel. Pour l'installer :

    • Téléchargez Git : https://git-scm.com/downloads.
    • Il est intéressant de faire une vraie installation même si, pour l'instant, seul Git Bash nous intéresse. En effet, Git pourrait être utilisé pour gérer les versions d'autres programmes et documents qui ne sont pas sur une machine virtuelle.
    • Acceptez les valeurs par défaut dans l'ensemble des écrans proposés : Use Vim, Use Git from the commande line and also from 3rd-party software, Use OpenSSL library, Chechout Windows-style, commit Unix-style line endings, Use MinTTY, Enable file system caching et Enable Git Credential Manager.
  7. Lancez l’application Git Bash.

    Git Bash

  8. Vous avez téléchargé la boîte Homestead un peu plus tôt. Il faut maintenant l’installer, c’est-à-dire faire le nécessaire pour que l’environnement de développement soit créé dans une machine virtuelle.

    Commencez par faire un clone des scripts et des fichiers de configuration de Homestead disponibles sur Git à l’aide de la commande :

    Console Git Bash

    git clone https://github.com/laravel/homestead.git ~/Homestead

    Cloner Homestead

  9. Tel qu’indiqué dans le dernier paramètre de la commande git clone, ceci a créé un nouveau dossier nommé Homestead. Ce dossier est placé directement dans votre dossier personnel (C:\Users\monnom\Homestead).

    Fichiers créés par clonage Homestead

  10. Dans Git Bash, déplacez-vous dans le dossier Homestead :

    Console Git Bash

    cd ~/Homestead

  11. Les fichiers clonés incluent tous les fichiers versionnés (gestion des versions avec git). La commande checkout permet de rendre actifs les fichiers correspondant à une version particulière. Pour vous assurer de travailler avec la dernière version stable, retrouvez le numéro de cette version sur GitHub (https://github.com/laravel/homestead/releases) puis faites un checkout sur cette version. Notez que si le dernier commit date de quelques heures seulement, il se peut que vous deviez faire un checkout sur la version d'avant. Vous pouvez également demander la dernière version stable à l'aide du mot release.
    Console Git Bash

    git checkout release

  12. Pour lancer le script init.sh présent dans le dossier Homestead, entrez la commande :

    Console Git Bash

    bash init.sh

    Ce script créera le fichier Homestead.yaml dans un dossier Homestead placé dans votre dossier personnel (C:\Users\monnom\Homestead\Homestead.yaml).

    Note : si vous obtenez le message « 'bash' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. », c'est que vous êtes dans une fenêtre DOS et non dans une fenêtre Git Bash.

  13. Vous aurez besoin d’une clé SSH (Secure SHell) afin de permettre à votre ordinateur d’accéder à votre machine virtuelle. La clé SSH vous évitera d'avoir à vous authentifier sur votre machine virtuelle grâce à un échange de clés publiques et privées.

    Commencez par revenir à votre dossier personnel :

    Console Git Bash

    cd ~

    Pour générer la clé, entrez la commande :

    Console Git Bash

    ssh-keygen -t rsa -C 'moncourriel@mondomaine.com'

    Acceptez l’emplacement par défaut (Users/monnom/.ssh/id_rsa).

    Puisque vous travaillez dans un environnement de développement local, vous pouvez laisser la phrase de sécurité (passphrase) à blanc. La phrase de sécurité est en fait un mot de passe.

    Attention : si vous prévoyez utiliser cette même clé SSH pour gérer les versions de vos fichiers sur un serveur Git distant, il est conseillé d'entrer une phrase de sécurité. Cette phrase vous sera demandée lorsque vous voudrez envoyer ou récupérer des fichiers sur le serveur Git mais pas quand vous ouvrirez une console Vagrant SSH.

    Génération de la clé SSH

  14. À l’aide de l’éditeur de votre choix (personnellement, j'utlilise Geany pour ce genre de travail), ouvrez le fichier Homestead.yaml que vous retrouverez dans le dossier Homestead.

  15. Assurez-vous que les configurations sont les suivantes :

    1. provider : virtualbox (ou autre, selon votre environnement de virtualisation)
    2. authorize : le chemin et le fichier où votre clé SSH a été générée (devrait être OK si vous avez conservé la valeur par défaut)
    3. keys : même chemin que authorize, avec le nom du fichier de la clé privée (devrait être OK si vous avez conservé la valeur par défaut)
  16. Dans la section folders, la ligne map donne le chemin où vos fichiers seront stockés sur votre ordinateur. La ligne to, quant à elle, donne le dossier de votre machine virtuelle qui sera « mappé » sur ce dossier.

    Modifiez le nom du dossier sur votre ordinateur (par défaut, ~/code). Suggestion : utilisez un dossier placé sous Documents (ex : ~/Documents/CodeLaravel).

    Ex :

    Fichier Homestead.yaml

    folders:

        - map: ~/Documents/CodeLaravel

          to: /home/vagrant/code

    Prenez note que sur votre machine virtuelle, votre dossier personnel (~) correspondra au dossier /home/vagrant.

    Attention : dans le fichier Homestead.yaml, vous devez utiliser des espaces et non des caractères de tabulation. De plus, pour éviter que des caractères invisibles indésirables ne soient insérés, il est conseillé de ne pas faire de copier-coller à partir du Web pour y ajouter des lignes.

    Prenez note du nom de domaine local qui sera utilisé pour accéder à votre site Web (par défaut : homestead.test) et du nom du dossier qui lui est associé (par défaut : /home/vagrant/code/public).

    Fichier Homestead.yaml

    sites:

        - map: homestead.test

          to: /home/vagrant/code/public

    Remarquez que Homestead utilise maintenant l'extension .test et non plus .app comme c'était le cas avant 2018.

    C'est parce que depuis décembre 2017, Google Chrome exige que les noms de domaine qui se terminent par .app, .dev et .foo utilisent une clé SSL. Si vous tentez d'ouvrir un site qui a un tel nom de domaine sans passer par https, vous obtiendrez le message « Votre connexion n'est pas privée. NET::ERR_CERT_AUTHORITY_INVALID ».

  17. Si vous utilisez Vagrant 2.1.0 ou plus récent, vous pouvez configurer votre machine Homestead pour qu'elle fasse une copie de sécurité automatique de ses bases de de données avant d'être détruite lorsque la commande vagrant destroy est lancée. Il suffit d'ajouter, au bas du fichier Homestead.yaml, la configuration backup: true.
    Fichier Homestead.yaml

    ip: "192.168.10.10"
    memory: 2048
    cpus: 1
    provider: virtualbox

    authorize: ~/.ssh/id_rsa.pub

    backup: true

  18. Créez sur votre ordinateur le dossier où votre code sera stocké, tel que spécifié dans le fichier Homestead.yaml (ex : ~/Documents/CodeLaravel) :

    Console Git Bash

    mkdir ~/Documents/CodeLaravel

  19. Lorsque votre machine virtuelle sera fonctionnelle, vous pourrez accéder à son serveur Web à partir de l’adresse indiquée dans le fichier Homestead.yaml (192.168.10.10).

    Il est cependant conseillé d'utiliser un nom de domaine local. Pour y parvenir, ajoutez une entrée dans le fichier hosts de votre système (présent dans le dossier C:\Windows\System32\drivers\etc).

    Ce fichier peut être édité à l'aide d'un éditeur de texte de votre choix. Cependant, à moins que l'éditeur ait été exécuté en tant qu'administrateur, le fichier hosts ne peut pas être enregistré directement à son emplacement d'origine. Vous devrez le copier à un endroit où vous disposez des droits suffisants (ex : sur le bureau) puis vous l’ouvrirez avec votre éditeur.

    Ajoutez-y la ligne suivante :

    Fichier hosts

    192.168.10.10    homestead.test

    Une fois le fichier édité et enregistré, assurez-vous que son nom est bien hosts, avec un « s » et sans extension. Copiez-le ensuite à son emplacement original.

  20. VirtualBox a besoin de Java pour fonctionner (pas besoin du JDK, JRE est suffisant). Puisque Java n'est pas installé par défaut sous Windows, vérifiez s'il est installé en vous rendant dans le Panneau de configuration, option Programmes et fonctionnalités. Si vous ne voyez pas de programme nommé Java (ex : Java 8 Update 202), rendez-vous sur le site d'Oracle (https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) puis téléchargez et installez la dernière version de Java SE Runtime Environment (SE tient pour Standard Edition). Après l'installation, vous devrez redémarrer votre ordinateur pour que les modifications soient prises en compte.
  21. Vous êtes maintenant prêt à lancer votre machine virtuelle.

    Dans Git Bash, assurez-vous d'être dans le dossier Homestead :

    Console Git Bash

    cd ~/Homestead

    Pour démarrer vos serveurs, lancez la commande :

    Console Git Bash

    vagrant up

    Notez que la première fois que vous lancez cette commande, des fichiers seront importés sur votre poste de travail, ce qui rendra l'opération un peu longue. Ce sera plus rapide les fois suivantes.

    vagrant up

  22. Votre machine virtuelle est maintenant fonctionnelle, avec un serveur HTTP Ngnix et tout ce qu'il faut pour exécuter un programme PHP avec base de données MySQL, SQLite, PostgreSQL et plusieurs autres.

    Lorsque vous programmerez, vous travaillerez sur des fichiers qui sont placés directement sur votre ordinateur et non sur votre machine virtuelle­. Voici comment trouver le nom du dossier qui contiendra votre code.

    Dans le fichier Homestead.yaml, vous avez indiqué que le dossier /home/vagrant/code de votre machine virtuelle pointait sur le dossier Documents/CodeLaravel de votre ordinateur.

    Vous avez également dit que le site homestead.test utilisait les fichiers placés dans le dossier /home/vagrant/code/public de votre machine virtuelle.

    Si on croise ces deux configurations, on comprend que le site homestead.test utilise les fichiers placés dans le dossier Documents/CodeLaravel/public de votre ordinateur. Vous aurez probablement à créer le sous-dossier public.

    Vous pouvez donc tester votre machine virtuelle en créant un fichier nommé index.php dans le dossier Documents/CodeLaravel/public.

    Commencez par créer le dossier public.

    Console Git Bash

    mkdir ~/Documents/CodeLaravel/public

    Ajoutez ensuite le code suivant dans un fichier nommé index.php. Notez que ce code ne tire pas profit de Laravel. Il s’agit d’un simple fichier php qui tourne sur votre nouveau serveur pour des fins de tests. Vous pourrez installer les fichiers Laravel pour votre projet plus tard.

    Documents/CodeLaravel/public/index.php

    <!DOCTYPE html>

    <html>

    <body>

        <?php echo 'Hello World in ' . date("Y"); ?>

    </body>

    </html>

    Et pour tester le tout, ouvrez un navigateur et entrez-y l’URL http://homestead.test, tel que précisé dans le fichier Homestead.yaml.

    Si votre navigateur vous affiche des résultats de recherche plutôt que votre site Web, assurez-vous d'écrire le http:// devant le nom de domaine local.

    Hello World

  23. Vous n’aurez probablement jamais besoin de lancer votre environnement de virtualisation (VirtualBox ou VMWare) pour travailler. En effet, vos fichiers de code seront placés dans le dossier créé plus tôt sur votre ordinateur et vous accéderez à votre base de données à distance, comme vous le feriez sur n’importe quel serveur. Quelques commandes devront être lancées dans la machine virtuelle mais il sera plus rapide de passer par une console SSH sur votre ordinateur.

    Si vous désirez tout de même vous connecter à votre machine virtuelle, le code d’usager Ubuntu et son mot de passe sont tous deux « vagrant ».

  24. Si vous désirez connaître l’état de votre machine virtuelle, entrez la commande suivante :

    Console Git Bash

    vagrant global-status

    vagrant global-status

  25. Lorsque vous serez prêt à refermer votre machine, vous pourrez le faire à l’aide de :

    Console Git Bash

    vagrant halt

    vagrant halt

    Il est également possible de détruire la machine virtuelle avec la commande :

    Console Git Bash

    vagrant destroy

    Attention : les fichiers de vos projets sont stockés directement sur votre ordinateur mais votre base de donnée, elle, réside physiquement sur la machine virtuelle et sera détruite en même temps que la machine vituelle.

    Avant de détruire une machine virtuelle, assurez-vous donc d'avoir en main un script SQL ou encore les fichiers de migration et de seeds à jour pour pouvoir la recréer.

    Une machine ainsi détruite pourra être rebâtie aussi facilement que si on l’avait refermée avec halt. Les fichiers de votre projet seront intacts mais vous devrez recréer la base de données à l'aide de votre script SQL ou de vos fichiers de migration et de seeds.

Pour plus d'information

« Quick Tip: Get a Homestead Vagrant VM Up and Running ». SitePoint. https://www.sitepoint.com/quick-tip-get-homestead-vagrant-vm-running/

« Three ways to fix the https error for .dev and .app domains in your Chrome ». UPDIVISION. https://updivision.com/blog/post/three-ways-to-fix-the-https-error-for-dev-and-app-domains-in-your-chrome

« How to Install Laravel Homestead on Windows ». Tree house. http://blog.teamtreehouse.com/laravel-homestead-on-windows

« What Is Vagrant and Why Should I Care? ». 24 Ways. https://24ways.org/2014/what-is-vagrant-and-why-should-i-care/

« How to Setup SSH Public-Key Authentication ». Scotch IO. https://scotch.io/tutorials/how-to-setup-ssh-public-key-authentication

« Tutoriel Vagrant ». SUPINFO International University. https://www.supinfo.com/articles/single/6606-tutoriel-vagrant

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre