Installer un environnement PHP et Laravel sur Mac avec Homebrew

Avatar de Benjamin Crozat.

Publié le par Benjamin Crozat

Temps de lecture estimé : 7 minutes

Homebrew et Laravel Valet permettent de déployer un environnement PHP sur votre machine en deux temps trois mouvements. Voici la marche à suivre.

É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 ~/Sites
valet 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).

4 commentaires

HappyToDev
il y a 1 mois

Salut Benjamin, pour peu que tu couples Valet à PHP Monitor et là c'est le bonheur total !

Amitiés.

Fred

Benjamin Crozat
il y a 1 mois

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 !

jonathan_lelong
il y a 1 mois

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 🙂

Benjamin Crozat
il y a 1 mois

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.

Besoin d'aide ? Envie de partager ?
Inscrivez-vous ou connectez-vous d'abord.

Ça vous a plu ?
Abonnez-vous à la newsletter !

Recevez régulièrement news, trucs et astuces à propos de Laravel et son ecosystème.

Autres articles à lire