Homestead
<p>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.</p>
<p>Vagrant offre un moyen simple et élégant de gérer et de provisionner des machines virtuelles. </p>
<p>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 !</p>
<p>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.</p>
<p><a href="https://laravel.com/docs/11.x/homestead" target="_blank" rel="noopener">Documentation officielle</a></p>
<p>Pour installer Homestead, il faut d'abord installer <a href="https://developer.hashicorp.com/vagrant/downloads" target="_blank" rel="noopener">Vagrant</a>, et <a href="https://www.virtualbox.org/wiki/Download_Old_Builds_6_1" target="_blank" rel="noopener">VirtualBox 6.1</a> ou <a href="https://www.parallels.com/products/desktop/" target="_blank" rel="noopener">Parallels </a></p>
<p>A l'installation, sélectionner "Utiliser git Bash"</p>
<p>Ouvrez un terminal</p>
<pre class="language-bash"><code>vagrant box add laravel/homestead
git clone https://github.com/laravel/homestead.git ~/Homestead
cd Homestead
bash init.sh</code></pre>
<p>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</p>
<pre class="language-php"><code>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</code></pre>
<p>Les clés SSH, ne changez rien, sauf si vous maitrisez cette partie</p>
<pre class="language-php"><code>authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa</code></pre>
<p>Ensuite on a le mapping, la correspondance du dossier sur la virtual box "map", et votre dossier de travail sur votre machine "to"</p>
<pre class="language-php"><code>folders:
- map: ~/code
to: /home/vagrant/code</code></pre>
<p>Par exemple ma configuration, évitez toujours de travailler sur le disque "system", si un crash se produit, vous perdriez tous vos travaux</p>
<pre class="language-php"><code>folders:
- map: d:\00 - TRAVAUX\0000-homestead
to: /home/vagrant/code</code></pre>
<p>Ensuite vient les sites, c'est a dire tous les sites web de votre box</p>
<pre class="language-php"><code>sites:
- map: homestead.test
to: /home/vagrant/code/public</code></pre>
<p>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.</p>
<p>Sur macos ou linux /etc/hosts, sur pc C:\Windows\System32\drivers\etc\hosts a éditer en mode administrateur</p>
<p>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</p>
<pre class="language-php"><code>192.168.56.56 homestead.test</code></pre>
<p>on peut également ajouter des options</p>
<pre class="language-php"><code>- 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</code></pre>
<p>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</p>
<p>Dans le second exemple, mon projet laravel nécessite de "scheduler" certaines taches cron</p>
<p>Ensuite vient les bases de données</p>
<pre class="language-php"><code> databases:
- theblob
- sherpa</code></pre>
<p>Enfin, les options de configurations</p>
<pre class="language-php"><code>features:
- mariadb: false
- ohmyzsh: false
- webdriver: false</code></pre>
<p>A présent, nous pouvons lancer la box, il faut se placer dans le dossier home/homestead de l'utilisateur loggé, lancez bash puis</p>
<pre class="language-php"><code>cd ~
cd homestead
vagrant up</code></pre>
<p>vagrant up va construire la box et le mappage la première fois et simplement lancer la box les autres fois.</p>
<p>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</p>
<p><img src="../../../files/post-body-1737882404.png"></p>
<p>Quelques commandes de vagrant</p>
<pre class="language-bash"><code>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</code></pre>
<p> </p>
De Jérôme Borg
Le 20 avril 2023
Temps de lecture : 10 min
Le 20 avril 2023
Temps de lecture : 10 min