Laravel sur Mac : découvrez Valet et Homebrew
Publié le par Benjamin Crozat
Temps de lecture estimé : 7 minutes
Étant partisan du pragmatisme et ayant beaucoup de mal à supporter les contraintes d’un environnement basé sur Docker, je prêche régulièrement les bienfaits de Laravel Valet.
Cet outil officiel permet de mettre en place un environnement de développement Laravel (même Symfony, WordPress ou n’importe quel type de projet PHP) d’un simple claquement de doigts. En fonction de la vitesse de votre connexion internet et de votre machine, cela peut être réglé en l’espace de 5 minutes.
Installez le gestionnaire de packages Homebrew
Homebrew est un gestionnaire de packages pour macOS maintenu par la communauté. Si vous êtes familiers avec APT (Advanced Package Tool) sur Debian et ses dérivés, vous vous sentirez comme à la maison. Afin de l’installer, exécutez la commande Bash suivante :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Une fois exécutée, vous aurez peut-être à installer Xcode Command Line Tools avant d’aller plus loin. Je vous rassure, vous n’avez pas à vous soucier de sa fonction. Comme son nom l’indique, il installera sur votre machine quelques outils en ligne de commande dont Homebrew dépend (Git par exemple).
Installez les dépendances
Une fois l’installation de Homebrew terminée, nous pouvons enfin installer les outils qui nous intéressent.
PHP
Installez la dernière version de PHP (8.1 à l’heure où j’écris ces lignes).
brew install php
Vous aurez certainement besoin de quelques extensions PHP supplémentaires. Leur installation est aussi très simple :
pecl install redis
Composer
Plutôt que de suivre les instructions d’installation officielles de Composer, passons plutôt par Homebrew qui se charge de tout cela à notre place.
brew install composer
MySQL
Installez la dernière version de MySQL :
brew install mysql
Puis démarrez le service avant de vous y connecter via votre client préféré (TablePlus ou phpMyAdmin par exemple) :
brew services start mysql
L’installation par défaut vous permettra d’utiliser l’identifiant root sans mot de passe. Très pratique pour un environnement local. 👍
Node.js
Lorsque nous installons Node.js, le gestionnaire de packages NPM sera aussi de la partie.
brew install node
Redis
Installez la dernière version de Redis :
brew install redis
Tout comme MySQL, pensez à lancer le service après installation :
brew services start redis
Ensuitez, connectez-vous à Redis via la commande suivante sans mot de passe afin de vérifier son bon fonctionnement :
redis-cli
Ajoutez Valet et l’installeur Laravel
Valet et l’installeur officiel de Laravel sont des packages Composer. Vous avez certainement l’habitude d’installer des packages dans vos projets (exemple : composer require laravel/fortify
). Mais cette fois-ci, nous allons le faire de manière globale. Ce qui veut dire qu’ils ne seront rattachés à aucun projet.
composer global require laravel/valet laravel/installer
À l’issue de cette installation, nous devrions commencer à installer Valet avec la commande valet install
. Mais si vous essayez de l’exécuter, vous vous rendrez compte que votre terminal n’a absolument aucune idée de ce qu’il est censé faire.
L’astuce, c’est de spécifier le chemin complet vers le binaire comme ceci :
~/.composer/vendor/bin/valet install
Nous sommes d’accord, il est possible de faire mieux. Ce qui nous amène à l’étape suivante.
Ajoutez les binaires des packages Composer dans votre PATH
La variable d’environnement PATH
contient une liste de dossiers (séparés par :
). Chacun de ces dossiers contient des binaires et votre terminal saura, par exemple, que lorsque vous souhaiterez utiliser PHP en ligne de commande, il devra aller chercher le binaire php
dans /opt/homebrew/bin
ou autre dossier (si vous êtes sur un Mac Intel, cela sera différent).
echo $PATH
Dans notre cas, nous souhaitons lui dire d’également prendre en compte le dossier ~/.composer/vendor/bin
(où se trouvent les binaires valet
et laravel
).
Pour cela, nous allons ajouter le dossier à notre PATH comme ceci :
echo "export PATH=$PATH:$HOME/.composer/vendor/bin" >> ~/.bash_profile
Ensuite, rafraichissons notre environnement :
source ~/.bash_profile
Pour ceux utilisant Oh My Zsh, faites plutôt ça dans ~/.zshrc
.
Pour les plus curieux d’entre vous, décomposons ce que nous venons de faire :
-
export PATH=
permet de définir une variable d’environnement et de lui affecter la valeur de notre choix. -
export PATH=$PATH
permet d’affecter notre nouvelle variable PATH à la valeur de la variable PATH déjà définie. En gros, après cette commande, PATH sera égale àdossier1:dossier2:dossier3:…
. -
export PATH=$PATH:$HOME/.composer/vendor/bin
nous permet tout simplement de faire en sorte que notre variable PATH soit égale àdossier1:dossier2:dossier3:/Users/Homer/.composer/vendor/bin
Configurez Laravel Valet
Maintenant que nos binaires valet
et laravel
sont accessibles sans avoir à entrer leur chemin complet, configurons Valet en utilisant la commande suivante :
valet install
Ensuite, créons un dossier qui contiendra tous nos projets web. Pour ma part, je les mets tous dans un dossier Sites à la racine de mon dossier utilisateur.
mkdir ~/Sites
Rendez-vous dans ce nouveau dossier et demandons à Valet de rendre disponible chaque projet sur un domaine en .test :
cd ~/Sitesvalet park
À partir de là, tout devrait être OK. Vous devriez être en mesure d’exécuter un simple laravel new hello-world
et d’y accéder via l’URL locale de votre projet
Autorisez Valet à être exécuté sans privilèges (sudo)
Une chose assez fastidieuse que vous remarquerez au fur et à mesure que vous utiliserez Valet, c’est de constamment avoir à entrer votre mot de passe administrateur. Afin d’y remédier, il existe une simple commande pour que notre environnement fasse confiance à Valet.
valet trust
Autorisez l’accès à un site via HTTPS
Pouvoir accéder à un site local via HTTPS présente plusieurs avantages. Valet propose la commande secure
:
valet secure hello-world
Et pour revenir en arrière :
valet unsecure hello-world
Exécutez un site via une version différente de PHP
Dans le cas où l’un des projets sur lesquels vous travaillez requiert une version différente de PHP, sachez qu’il est possible de demander à Valet d’utiliser une autre version de PHP :
valet use php@8.0
En revanche, la plupart d’entre nous aimeraient changer la version de PHP seulement pour un site en particulier. Depuis peu, Valet permet de le faire :
valet isolate --site hello-world php@8.0
Bien sûr, il est aussi possible de revenir en arrière :
valet unisolate --site hello-world
Conclusion
La plupart des projets web n’ont pas besoin d’un environnement complexe.
Seulement PHP, MySQL, Redis ainsi deux ou trois autres outils.
Nul besoin d’avoir une ou plusieurs machines virtuelles gourmandes et relativement lentes qui mettront des bâtons dans les roues de votre votre processus créatif.
Dorénavant, vous avez un serveur web local léger et rapide avec la possibilité d’utiliser n’importe quelle version de PHP (ou de toute autre dépendance).
9 commentaires
Salut Benjamin, pour peu que tu couples Valet à PHP Monitor et là c'est le bonheur total !
Amitiés.
Fred
Merci pour ta recommandation Fred ! Il se trouve que j'avais déjà entendu parler de cette app, mais, je l'avais complètement oublié jusqu'à présent. Excellente recommandation !
Super article, mon environnement de travail devient trop contraignant donc je vais tester Valet. Tes explications sont claires et la mise en place a pas l’air trop compliquée ! Merci Benjamin 🙂
Aucun problème Jonathan ! N'hésite pas à revenir ici dans le cas où quelque chose ne fonctionne pas. Ça pourrait aider d'autres personnes à l'avenir.
Hello ! Vraiment top cet article. Par contre, après avoir installer Brew, php, Mysql, Composer, Valet et Nginx, j'ai des erreur dans mon terminal. J'utilise aussi Mamp dont les dossiers sont dans le même dossier (Sites) que ceux configurés avec valet à la racine de mon dossier utilisateur. Je l'ai ouvert alors que Mysql était lancé dans le terminal, ce ne serait pas ça qui pose problème ? Je n'arrive plus à avoir le status "started" avec la commande "brew services list". php fonctionne, car wordpress.test ouvre la page de config, donc c'est cool. Les erreurs sont-elle un problème ? J'ai essayé "brew services restart nginix" mais, j'ai toujours l'erreur. Un p'tit coup de main s'il vous plait 🙏 Merci beaucoup
@Pierrick Tu as essayé de quitter Mamp ? Il y a probablement conflit.
Oui biensur ! Faut-il supprimer Mamp à ton avis ? Je cherche une solutions mais rien trouvé fiable pour l'instant...
@Pierrick Avec Valet, tu as tout ce qu'il faut pour faire tourner n'importe quel projet. Tu ne devrais pas avoir besoin de Mamp.
Cela dit, avant de le supprimer, tu peux simplement le stopper.
Ok. Je te remercie @Benjamin. Je vais certainement passer sur Valet et le stopper ... Je pensais pas que Mamp pouvait interférer sans avoir démarré les serveurs... Erreur dans le terminal: Nginx Erreur 256 et dnsmasq erreur 512. Bonne fin de soirée à toi
Inscrivez-vous ou connectez-vous d'abord.