20 avril 2023   |   De Jérôme Borg   |    Laravel

Homestead

Homestead

Laravel propose un environnement de développement local. Laravel Homestead est une box Vagrant officielle qui vous offre un environnement de développement sans vous obliger à installer PHP, un serveur Web et tout autre logiciel serveur sur votre machine locale.

Vagrant offre un moyen simple et élégant de gérer et de provisionner des machines virtuelles. 

Les boxs Vagrant sont entièrement jetables. Si quelque chose ne va pas, vous pouvez détruire et recréer la box en quelques minutes !

Homestead fonctionne sur n'importe quel système Windows, macOS ou Linux et inclut Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node et tous les autres logiciels dont vous avez besoin pour développer des applications Laravel étonnantes.

Documentation officielle

Pour installer Homestead, il faut d'abord installer Vagrant, et VirtualBox 6.1 ou Parallels 

A l'installation, sélectionner "Utiliser git Bash"

Ouvrez un terminal

vagrant box add laravel/homestead  
git clone https://github.com/laravel/homestead.git ~/Homestead  
cd Homestead  
bash init.sh

A l'aide d'un éditeur de texte, ouvrez sur Windows c:/Users/nom-utilisateur/homestead/Homestead.yaml, sur mac ~/homestead/Homestead.yaml, c'est le fichier de configuration de homestead

ip: "192.168.56.56" // l'adresse ip local de votre machine  
memory: 2048 // mémoire alloué  
cpus: 2 // processeurs alloués  
provider: virtualbox // provider

Les clés SSH, ne changez rien, sauf si vous maitrisez cette partie

authorize: ~/.ssh/id_rsa.pub  
  
keys:  
    - ~/.ssh/id_rsa

Ensuite on a le mapping, la correspondance du dossier sur la virtual box "map", et votre dossier de travail sur votre machine "to"

folders:  
    - map: ~/code  
      to: /home/vagrant/code

Par exemple ma configuration, évitez toujours de travailler sur le disque "system", si un crash se produit, vous perdriez tous vos travaux

folders:  
    - map: d:\00 - TRAVAUX\0000-homestead  
      to: /home/vagrant/code

Ensuite vient les sites, c'est a dire tous les sites web de votre box

sites:  
    - map: homestead.test  
      to: /home/vagrant/code/public

On  fait systématiquement correspondre un nom de domaine local a un dossier de travail, il faudra ajouter ces noms de domaine locaux a votre fichier hosts.

Sur macos ou linux /etc/hosts, sur pc C:\Windows\System32\drivers\etc\hosts a éditer en mode administrateur

On peut utiliser n'importe quel nom de domaine à condition qu'il n'existe pas sur internet, c'est pourquoi il est recommandé de les suffixer par .test ou .local

192.168.56.56 homestead.test

on peut également ajouter des options

- map: pma.test  
  to: /home/vagrant/code/phpmyadmin  
  type: apache  
  php: "7.4"  
  
- map: theblob.test  
  to: /home/vagrant/code/theblob/public  
  type: apache  
  php: "8.0"  
  schedule: true

Dans ces 2 exemples, j'ai besoin de version spécifique de php, je suis obligé d'utiliser type: apache et ensuite de spécifier la version de php

Dans le second exemple, mon projet laravel nécessite de "scheduler" certaines taches cron

Ensuite vient les bases de données

  databases:  
    - theblob  
    - sherpa

Enfin, les options de configurations

features:  
    - mariadb: false  
    - ohmyzsh: false  
    - webdriver: false

A présent, nous pouvons lancer la box, il faut se placer dans le dossier home/homestead de l'utilisateur loggé, lancez bash puis

cd ~  
cd homestead  
vagrant up

vagrant up va construire la box et le mappage la première fois et simplement lancer la box les autres fois.

A présent, dans votre navigateur a l'url http://homestead.test, vous devriez voir ce message d'erreur, c'est normal, a ce stade le dossier "/home/vagrant/code/public" n'existe pas. En fait c'est que tout fonctionne

Quelques commandes de vagrant

vagrant up // lance la box  
vagrant suspend // met la box en "pause"  
vagrant halt // stop la box  
vagrant ssh // permet de se connecter au serveur virtuel  
vagrant reload // relance la box  
vagrant reload --provision // relance la box et reconstruit la box, c'est obligatoire en cas de modification de Homestead.yaml

 

De Jérôme Borg
Le 20 avril 2023
Temps de lecture : 10 min
Jérôme Borg
Jérôme Borg

Développeur fullstack laravel/VueJs, formateur

Tous les articles de cet auteur
Articles recommandés
Le Crud
Le Crud
Jérôme Borg De Jérôme Borg | 11 avril 2023 | Lu : 21min
La validation
La validation
Jérôme Borg De Jérôme Borg | 24 avril 2023 | Lu : 15min