macOS Big Sur : Créer un environnement de développement en local sans MAMP

Par facilité et peut être par habitude d’avoir procédé de la même manière sur Windows, nous courrons installer MAMP (Apache, Sql et Php) lorsque nous configurons notre nouveau Macbook ou que nous le réinitialisons. Le faire de cette manière est dommage dans un sens où macOS incorpore déjà Apache et Php. En ce sens, et si nous profitions pour décrire dans cet article la manœuvre?

1. Activer Apache

Big Sur incorpore déjà la fonctionnalité de serveur Web à l’aide d’Apache. Pour l’utiliser nous allons simplement paramétrer le service succintement.

Pour procéder nous utiliserons tout au long du tutoriel le Terminal que vous retrouverez dans /Applications/Utilitaires/Terminal.app

Pour ceux qui ne sont pas familiers avec l’application, elle est simple d’utilisation. Dès son ouverture un prompteur attends que vous lui donniez des instructions sous forme de commandes. Copiez-collez les commandes qui suivront en frappant la touche Entrée pour valider.

Nous utiliserons parfois le préfixe sudo à la saisie des commandes pour accorder l’accès admin de votre ordinateur, renseignez alors le mot de passe de votre compte.

Pour démarrer Apache

sudo apachectl start

Pour l’arrêter si nécessaire

sudo apachectl stop

Pour connaître la version Apache utilisée

httpd -v

La version Apache embarqué dans Big Sur est Apache/2.2.46

Après avoir démarré Apache, ouvrez votre navigateur et saisissez l’adresse http://localhost

Vous devriez obtenir ce résultat

Si jamais la page affichait autre chose, vous pouvez lancer un débug simple avec

apachectl configtest

Toute erreur y sera reportée.

 

2. Racine du serveur web

La racine du serveur web est l’endroit sur votre disque dur où seront stockés vos sites internet, on les voit souvent sous l’appellation public_html chez un hébergeur ou même htdocs sur Mamp par exemple.

Historiquement macOS propose deux racines avec 1 dossier côté système et l’autre dossier côté utilisateur. Vous pouvez vous contenter du dossier système ou faire quelques réglages supplémentaires pour que chaque utilisateur ait son propre dossier.

Racine Système

La racine système est affiché par défaut à l’adresse

http://localhost

Les fichiers sont stockés dans

/Library/WebServer/Documents/

Racine Utilisateur

Pour faire fonctionner ce mode et donc réaliser les réglages supplémentaires dont nous parlions plus haut, il va falloir dans un premier temps créer le dossier ~/Sites

Nous allons ensuite ajouter un fichier « utilisateur.conf » dans

/etc/apache2/users/

Vous le nommerez suivant votre nom d’utilisateur macOS, vous trouverez l’information en saisissant dans le Terminal

whoami

Lancez le Terminal et remplacez « utilisateur » par votre propre nom d’utilisateur :

cd /etc/apache2/users
sudo vim utilisateur.conf

Copiez ici le contenu suivant en pressant d’abord la touche « i » pour passer en mode insertion et en sauvegardant ensuite après avoir frappé la touche « Esc » puis saisi « :wq » pour enregistrer le fichier.

Pour plus d’informations concernant l’utilisation de vim, reportez vous à sa documentation : https://doc.ubuntu-fr.org/vim

<Directory "/Users/utilisateur/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require host localhost
</Directory>

Les permissions du fichier devraient correspondre à :

-rw-r--r--   1 root  wheel  298 Nov 28 16:47 utilisateur.conf

Si ce n’est pas le cas saisissez dans le Terminal…

sudo chmod 644 utilisateur.conf

Ouvrez maintenant le fichier https.conf dans lequel nous allons activer certains modules :

sudo vim /etc/apache2/httpd.conf

Assurez vous de décommenter les lignes suivantes, il suffit d’enlever le « # » qui les précèdent :

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Vous pouvez sauvegarder le fichier sans le quitter en saisissant dans vim « :w »

Nous allons décommenter la ligne suivante :

LoadModule php7_module libexec/apache2/libphp7.so

Et également la ligne suivante qui permet l’usage des dossiers utilisateurs :

Include /private/etc/apache2/extra/httpd-userdir.conf

Nous pouvons alors quitter le fichier en le sauvegardant.
Ouvrez ensuite le fichier de configuration Apache suivant :

sudo vim /etc/apache2/extra/httpd-userdir.conf

Et décommentez la ligne :

Include /private/etc/apache2/users/*.conf

Sauvegardez, puis quittez le fichier.

 

Redémarrez Apache pour que les modifications soient prises en compte :

sudo apachectl restart

Dès lors la racine utilisateur sera accessible à l’adresse :

http://localhost/~utilisateur/

3. Réécriture .htaccess et mod rewrites

Si vous comptez utiliser la racine système localisé dans /Library/WebServer/Documents il convient d’autoriser n’importe quel .htaccess qui y sera utilisé pour écraser les paramètres par défaut. Vous pouvez modifier ce réglage en remplaçant ligne 217 le réglage AllowOverride à All

sudo vim /etc/apache2/httpd.conf

Vous pouvez afficher les numéros de lignes sur Vim en saisissant :

:set number

Et décommentez la ligne :

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

 

4. PHP

PHP 7.3.24 est embarqué dans macOS Big Sur, il vous suffit de décommenter la ligne suivant dans le httpd.conf :

sudo vim /etc/apache2/httpd.conf
LoadModule php7_module libexec/apache2/libphp7.so

Redémarrez Apache pour que les réglages soient pris en compte :

sudo apachectl restart

Pour vérifier et tester PHP, vous pouvez créer un fichier info.php avec le contenu suivant :

 <?php phpinfo(); ?>

… que vous placerez dans la racine que vous avez choisie pour votre installation, utilisateur ou système.

Comme vous pouvez le constater, Apple prévoit de supprimer PHP dans la prochaine version de macOS, à savoir Monterey. Pour contourner il nous faudra utiliser Homebrew et ainsi pouvoir utiliser n’importe quelle version de PHP.

php -v
WARNING: PHP is not recommended
PHP is included in macOS for compatibility with legacy software.
Future versions of macOS will not include PHP.
PHP 7.3.24-(to be removed in future macOS) (cli) (built: Dec 21 2020 21:33:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.24, Copyright (c) 1998-2018 Zend Technologies

 

5. Installer MySQL

MySQL n’est pas pré-embarqué dans macOS, nous allons devoir l’installer directement depuis le site https://dev.mysql.com/downloads/mysql/

Choisissez en fonction de votre processeur, ARM pour les M1 et x86 pour les Macbook avec un processeur Intel.

L’inscription n’est pas obligatoire pour le téléchargement, vous pouvez sauter cette étape et lancer directement le téléchargement.

Lancez le fichier .dmg et suivez les diverses étapes de l’installation.

Au moment de choisir le type de cryptage, sélectionnez la deuxième option. Depuis la version 8 il arrive que certains programmes comme PhpMyAdmin ne parviennent pas à se connecter avec les cryptages basés sur SHA256, cela vous évitera donc des problèmes de connexion.

 

Ajoutez ensuite un mot de passe au compte root. Sur Mamp nous retrouvons souvent root/root, ici il vous sera demandé un mot de passe à 8 caractères minimum.

 

Ajouter un raccourci MySQL au terminal de commandes

Pour vous éviter le chemin complet vers MySQL lorsque vous souhaiterez l’utiliser dans le terminal de commandes, nous allons l’ajouter.

Si vous utiliser Zsh ouvrez le fichier :

cd ; vim .zshrc

et ajoutez y la ligne suivante :

export PATH="/usr/local/mysql/bin:$PATH"

La première commande vous amène à la racine de votre dossier utilisateur puis ouvre sous Vim le fichier de configuration Zsh nommé .zshrc

Une fois la modification apportée, enregistrez en tapant dans Vim « :wq » et copiez dans votre terminal la ligne suivante :

source ~/.zshrc

Elle aura pour fonction de rafraîchir la fenêtre et prendre ainsi en considération la modification.

Des réglages apparaissent dans vos préférences système macOS.

En cas de problème avec l’installation et si vous devez recommencer, n’hésitez pas à utiliser le bouton « Uninstall ». D’autres réglages sont disponibles dans l’onglet Configuration, ils concernent les chemins d’accès de MySQL.

Réparer le MySQL Socket error

Corrigez l’erreur de socket 2002. Il s’agit de refaire la liaison car macOS ne va pas chercher au bon endroit. MySQL le place dans /tmp alors que macOS pense le trouver dans /var/mysql. Le Socket autorise la communication bi-directionnelle entre client/serveur.

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

6. Installer PhpMyAdmin

Après avoir corriger l’erreur de socket dans le paragraphe précédent, téléchargez phpMyAdmin https://www.phpmyadmin.net/downloads/ dézippez le fichier .zip et déplacez le dossier dans votre racine utilisateur.

Créez le dossier config

mkdir ~/Sites/phpmyadmin/config

Changez les permissions

chmod o+w ~/Sites/phpmyadmin/config

Démarrez la configuration depuis votre navigateur

http://localhost/~utilisateur/phpmyadmin/setup/ ou
http://localhost/phpmyadmin/setup/

Notabene : Si vous avez fait le choix d’utiliser la racine système, pensez à réaliser les étapes précédentes au bon endroit, à savoir /Library/WebServer/Documents/

Vous devez créer un nouveau serveur en cliquant sur new server.

Dans l’onglet Authentification renseignez le mot de passe enregistré lors de l’installation de MySQL ainsi que le username par défaut root. Enregistrez et vous pouvez considérer que c’est terminé.

Maintenant en vous rendant sur http://localhost/~utilisateur/phpmyadmin/ vous retrouverez l’interface classique permettant de créer et gérer des bases de données.

 

7. Permissions

Pour ne rencontrer aucun problème de permissions avec vos installations, il est préférable d’autoriser l’écriture de votre dossier racine.

Imaginons que vous ayez un projet de site internet dans ~/Sites/site-test

sudo chmod -R a+w ~/Sites/site-test

Si jamais vous souhaitez plus de sécurité,  plutôt que d’autoriser l’écriture à tous, vous pouvez définir Apache _www comme propriétaire du dossier et de l’ensemble de ses sous-dossiers et fichiers.

sudo chown -R _www ~/Sites/site-test

Si jamais vous utilisez la racine système :

sudo chown -R _www /Library/WebServer/Documents/site-test