Installer les Command Line Tools
$ xcode-select --install
Installer Homebrew
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Vérifier les conflits
$ brew doctor
Autoriser les liens entre les différents répertoires
$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/php
$ brew tap homebrew/apache
Si Homebrew est déja installé
$ brew update
Afin d'éviter les conflits nous allons d'abord désactiver la version d'apache installer par défaut sur macOS et installer la dernière version de Apache via Homebrew.
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
$ brew install httpd24 --with-privileged-ports --with-http2
A la fin de l'installation le message suivant apparait
$ brew /usr/local/Cellar/httpd24/2.4.23_2: 212 files, 4.4M, built in 1 minute 45 seconds
Gardé de côté le chemin /usr/local/Cellar/httpd24/2.4.25
nous allons en avoir besoin par la suite (le chemin peut changer suivant les versions)
$ sudo cp -v /usr/local/Cellar/httpd24/2.4.25/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
$ sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
$ sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
$ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
Apache est maintenant bien installé, pour vérifier cela allé sur votre localhost
**Quelques commandes utiles : **
$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl -k restart
Par défaut Apache pointe vers le dossier /Library/WebServer/Documents
, nous allons le faire pointer vers le dossier Sites
dans lequel se trouve nos sites de développement
$ open -e /usr/local/etc/apache2/2.4/httpd.conf
Chercher le terme DocumentRoot
et changer le chemin par :
# Ancien chemin
DocumentRoot "/usr/local/var/www/htdocs"
# Nouveau chemin
DocumentRoot "/Users/your_user/Sites"
De même que le Directory
<Directory "/Users/your_user/Sites">
Quelques paramètres apache a activer:
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
# Décommenter
LoadModule rewrite_module libexec/mod_rewrite.so
# Les droits ps: pour connaitre le votre user taper 'whoami' dans le terminal
User your_user
Group staff
Redémarrer Apache pour que les modifications soient prises en compte
$ sudo apachectl -k restart
$ brew install php56 --with-httpd24
$ brew unlink php56
$ brew install php70 --with-httpd24
Les fichiers de configuration sont situés ici :
/usr/local/etc/php/5.6/php.ini
/usr/local/etc/php/7.0/php.ini
Il faut ensuite lier Apache et PHP en éditant la conf Apache
$ open -e /usr/local/etc/apache2/2.4/httpd.conf
Les versions de PHP se sont ajoutées
LoadModule php5_module /usr/local/Cellar/php56/5.6.26_3/libexec/apache2/libphp5.so
LoadModule php7_module /usr/local/Cellar/php70/7.0.11_5/libexec/apache2/libphp7.so
Il faut les remplacer par :
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
Et ne garder qu'une version activée
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
Il faut aussi autoriser l'exécution de PHP sur le répertoire Sites
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Redémarer Apache
$ sudo apachectl -k restart
Pour vérifier que tout est correcte vous pouvez créer un fichier info.php à la racine du répertoire Sites
<?php phpinfo();
Installation de librairies PHP :
# OPcache et APCu
$ brew install php56-opcache
$ brew install php56-apcu
# Xdebug
$ brew install php56-xdebug
Installation du script Switch
$ cd /usr/local/bin
$ curl -L https://gist.github.com/w00fz/142b6b19750ea6979137b963df959d11/raw > /usr/local/bin/sphp
$ chmod +x /usr/local/bin/sphp
Update du ~/.bash_profile
$ sudo nano ~/.bash_profile
# Ajouter cette ligne
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
Mise à jour du ~/.bash_profile
source ~/.bash_profile
Editer le fichier de configuration Apache
$ open -e /usr/local/etc/apache2/2.4/httpd.conf
# Remplacer ces lignes
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
# Par
# Brew PHP LoadModule for `sphp` switcher
LoadModule php5_module /usr/local/lib/libphp5.so
#LoadModule php7_module /usr/local/lib/libphp7.so
On test ensuite le swich de version PHP
$ sphp 56
$ sphp 70
Connaitre la verison de PHP
$ php -v
Mise à jour de PHP et des package Homebrew
$ brew update
$ brew upgrade
$ brew install mariadb
$ mysql_install_db
Démarer MySQL
$ mysql.server start
Pour démarer MySQL automatiquement
$ brew services start mariadb
Pour gérer vos bases de données avec une interface utilisateur utiliser Sequel Pro
$ open -e /usr/local/etc/apache2/2.4/httpd.conf
Décommenter
LoadModule vhost_alias_module libexec/mod_vhost_alias.so
# Virtual hosts
Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf
Gestions des Virtual hosts
$ open -e /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf
Exemple d'url pointant sur le dossier sites
<VirtualHost *:80>
DocumentRoot "/Users/your_user/Sites"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/your_user/Sites/mon-site"
ServerName mon-site.dev
</VirtualHost>
Redémarer Apache
$ sudo apachectl -k restart
Modifier votre fichier Host
sudo nano /etc/hosts
Ajouter votre nouvelle url
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 mon-site.dev
Eviter les .local sous Mac Os (lien)!
Pour automatiser cela nous allons utiliser Dnsmasq
$ brew install dnsmasq
Configurer pour que les url en '.dev' pointe vers le serveur local
$ echo 'address=/.dev/127.0.0.1' > /usr/local/etc/dnsmasq.conf
Démarage automatique de Dnsmasq
$ sudo brew services start dnsmasq
Ajouter un dossier de résolution DNS
$ sudo mkdir -v /etc/resolver
$ sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/local'
Faire un test de ping : 'ping test.local'
Homebrew
macOS 10.12 Sierra Apache Setup: Multiple PHP Versions
macOS 10.12 Sierra Apache Setup: MySQL, APC & More...
MariaDB MAMP Pro slow name resolving with .local vhosts in Lion (fix)