Laisser un commentaire

Se passer de MAMP sous Mac (stack MAMP native)

Les Macs ont tout ce qu’il faut pour se passer de MAMP. Apache et PHP sont déjà préinstallés sur le système, il n’y a plus qu’à mettre MySQL.

Avant de rentrer dans les détails, force est de constater que MAMP s’est considérablement étoffé et amélioré au fil des ans. Il permet aujourd’hui de dynamiquement choisir différentes versions de PHP, de switcher entre Apache et Nginx, il supporte le HTTPS, possède un serveur DNS permettant de tester depuis d’autres appareils et bien d’autres choses.

Certains trouveront donc forcément un intérêt dans l’usage de MAMP ou d’une solution équivalente ; je me dois de mentionner XAMPP, son alternative open source.

Par ailleurs, si vous travaillez sur du front-end, vous n’avez tout simplement pas besoin de l’artillerie lourde. Une bonne config de npm doit suffire à vos besoins, tout sera alors à porté d’un npm run x

Enfin, pour ceux qui veulent du MAMP natif, voici comment faire.

Installer MySQL

Deux options s’offrent à nous :

Pour la première solution, rendez-vous sur cette page. J’opterai ici pour la seconde car ça nous permet plus de flexibilité.

J’utiliserai ici Homebrew et j’installerai MariaDB, un fork de MySQL réputé pour être plus performant. Homebrew est plus moderne et rend l’installation bien plus simple qu’avec Macports.

brew install mariadb

Homebrew possède ses propres commandes pour lancer et stopper des services.

# Pour lancer Maria
brew services run mariadb

# Et pour le stopper
brew services stop mariadb

À partir de la version 10.4 de MariaDB, la connexion en tant qu’utilisateur root requiert un mot de passe si vous n’êtes pas root aussi sur le système.

Dans le cas où l’on veuille un utilisateur sql root accessible sans mot de passe, on se connectera en root avec sudo puis on changera le mot de passe de l’utilisateur root de la base de données. Je sens qu’un petit exemple vous aidera à y voir plus clair.

# On se connecte à MySQL en root avec sudo (sinon erreur)
sudo mysql -u root

# Une fois dans MySQL, on modifie le mdp de root
ALTER USER 'root'@'localhost' IDENTIFIED BY '';

J’ai ici tout simplement supprimé le mot de passe (c’est pour un usage local de développement seulement), mais vous pouvez bien entendu mettre le mot de passe qui vous fera plaisir !

Apache

Lorsque vous avez des besoins de serveur web très simple, sachez tout de même que PHP possède un serveur web intégré. Il se lance en une ligne de commande.

php -S localhost:8080

Par ailleurs, WordPress via sa CLI, permet de directement lancer un serveur web basé sur le serveur intégré de PHP.

php wp-cli server --host=localhost --port=8080

Ça va aller beaucoup plus vite car Apache est déjà installé. Il suffit de se rendre dans le fichier de config /etc/apache2/httpd.conf et de l’éditer avec votre outil de prédilection.

Commencez par activer php et rewrite au besoin. Pour cela, faites une recherche et dé-commentez rewrite_module et php7_module, ils sont côte à côte.

Par défaut, DocumentRoot pointe vers /Library/WebServer/Documents. Nous n’allons pas nous encombrer à modifier cela et nous allons plutôt activer les vhost. Cela nous permettra plus de souplesse en nous permettant notamment de configurer plusieurs sites en parallèle (via par exemple des noms virtuels en jouant avec /etc/hosts). On fait donc une petite recherche pour trouver la ligne Include /private/etc/apache2/extra/httpd-vhosts.conf et on la dé-commente.

Ensuite, il n’y a plus qu’à aller dans /etc/apache2/extra/httpd-vhosts.conf pour ajuster la conf à nos besoins. Si vous ne savez pas comment paramétrer un vhost, c’est par là que ça se passe.

On est tout bon, il n’y a plus qu’à démarrer Apache avec un petit coup de apachectl start et on l’arrêtera avec apachectl stop. En route vers localhost et roule ma poule !

DNS

Historiquement, on pouvait configurer des noms de domaine bidon dans /etc/hosts afin de faire pointer les noms de domaine sur le localhost tout en ayant plusieurs VHost. Cependant, avec l’émergence du DNS chiffré <abbr title=”DNS over HTTPS>DoH et DoT, le fichier hosts est bypassé.

La solution à ce problème est d’utiliser un serveur DNS permettant de dynamiquement configurer l’ip correspondant à un nom d’hôte. J’utilise pour cela NextDNS, ce service vous protégera du tracking au passage.

Dans l’interface d’administration de NextDNS, rendez-vous dans “paramètre” puis “réécriture”. Vous n’avez alors plus qu’à spécifier le nom de domaine de votre choix et de la faire matcher avec une ip locale.

Par ailleurs, cette technique permettra de facilement configurer un nom de domaine pour que vous puissiez tester de vos appareils mobiles. Il suffit pour cela de faire résoudre un nom de domaine de test vers l’ip locale de votre ordinateur de développement.

Vous avez maintenant une configuration 100% offrant des possibilités avancées !

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```