author | since | tags |
---|---|---|
Emmanuel Château-Dutier |
2017-01-28 |
mac, localhost |
Comme le système d’exploitation Mac OS repose sur un noyau Linux, on peut facilement configurer un serveur local sur sa machine sans avoir recours à des logiciels comme MAMP pour disposer d’un environnement de développement. La création d’un serveur local est très aisée et ne nécessite que quelques instructions en ligne de commande.
Rmq : Ce Guide est valable pour Sierra
Créer un répertoire personnel qui sera servi en local (ce répertoire n’est plus créé par défaut).
mkdir ~/Sites # créer un répertoire Sites
echo "<html><body><h1>Mon site fonctionne !</h1></body></html>" > ~/Sites/index.html # crer un fichier index.html dans le répertoire Sites
Cette page devra être visible à l’adresse http://localhost/~username
Notre serveur sera propulsé par Apache HTTP Serveur. Nous allons le configurer avec un fichier d’utilisateur.
Pour commencer, il vous faut connaître votre nom d’utilisateur
whoami # afficher son nom d’utilisateur
On créer ensuite un fichier de configuration
cd /etc/apache2/users # aller dans le répertoire de configuration d’Apache
sudo vim username.conf # remplacez `username` par votre nom utilisateur
On entre dans ce fichier la configuration du répertoire, et un renseigne la configuration du répertoire en remplaçant username
par son nom d’utilisateur mac.
<Directory "/Users/username/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
ou bien, en fonction de la configuration choisie
<Directory "/Users/emmanuelchateau/Sites/">
AddLanguage fr .fr
AddHandler perl-script .pl
PerlHandler ModPerl::Registry
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Require host localhost
</Directory>
Le répertoire doit être accessible en lecture pour Apache
sudo chmod 644 username.conf # remplacer username par son nom d’utilisateur
Le 6 donne les droits d’écriture et de lecture au propriétaire du fichier. Les deux 4 restreignent l’accès en lecture seule au Group et Other.
Aller dans etc/apache2
, et activer les modules http voulus.
Faites d’abord une copie du fichier de configuration
cd ..
pwd # vous devez vous trouver dans `/etc/apache2`
cp httpd.conf httpd.conf.bak # faire une copie de sauvegarde du fihier de configuration par défaut
Dans le fichier http.conf
un certain nombre modules doivent être activés : les lignes doivent être décommantées en enlevant le #
.
Ouvrir le fichier avec sudo et retirer les # du début des lignes suivantes :
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
Include /private/etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
éditer le http-userdir.conf
situé dans le répertoire extra
cd /etc/apache2/extra
sudo cp httpd-userdir.conf httpd-userdir.conf.bak # faire une copie de sauvegarde
Puis éditer httpd-userdir.conf
, en décommandant la ligne suivante :
Include /private/etc/apache2/users/*.conf
sudo apachectl restart
Rendez-vous avec votre navigateur sur http://localhost/~username (en remplaçant username par votre nom d’utilisateur). Bravo, vous avez configuré votre serveur local !
En créant des hôtes virtuels vous pouvez exactement dire à Apache où regarder pour servir un contenu spécifique en fonction des directives de nom de serveur liées dans le block VirtualHost. Par exemple pour que l’adresse toto.dev
serve le répertoire ~/Sites/toto
.
Faîtes une copie de sauvegarde de etc/apache2/extra/httpd-vhosts.conf
Puis remplacez le contenu du fichier par
#Virtual Host Entry for foo.dev
<VirtualHost *:80>
DocumentRoot "/Users/john/Sites/foo"
ServerName foo.dev
ErrorLog "/private/var/log/apache2/foo-error_log"
CustomLog "/private/var/log/apache2/foo-access_log" common
</VirtualHost>
#Virtual Host Entry for bar.dev
<VirtualHost *:80>
DocumentRoot "/Users/john/Sites/bar"
ServerName bar.dev
ErrorLog "/private/var/log/apache2/bar-error_log"
CustomLog "/private/var/log/apache2/bar-access_log" common
</VirtualHost>
Après avoir sauvé, mettez à jour la liste des hôtes dans /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
#Local dev sites
127.0.0.1 foo.dev
127.0.0.1 bar.dev
Redémarrer Apache
sudo apachectl restart
PHP n’est plus activé par défaut sur les versions récentes de Mac OS X. Vous devez l’activer.
sudo vim /etc/apache2/httpd.conf
Décommenter la ligne suivante :
#LoadModule php5_module libexec/apache2/libphp5.so
en retirant le #
(avec vim, taper la touche x à l’endroit du caractère pour l’effacer, quittez vim avec :wq
.
Permettre l’interprétation de PHP en ajoutant en haut de votre fichier http-vhosts.conf
#Enable PHP interpretation within HTML files
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
Redémarrez apache
Pour vérifier que tout fonctionne, créez un fichier php de test dans votre répertoire de travail
<?php
$greeting = 'Hello, PHP World!';
echo '<h1>' . $greeting . '</h1>';
?>
- https://web.archive.org/web/20161018141829/http://digitalshore.io/local-web-development-environment-apache-macos-sierra-10-12/
- voir https://websitebeaver.com/set-up-localhost-on-macos-high-sierra-apache-mysql-and-php-7-with-sslhttps
- https://www.lullabot.com/articles/setting-up-my-mac-without-mamp (2013) intéressant notamment pour les sockets, mais le problème n’existe peut-être plus avec Sierra
- https://www.hongkiat.com/blog/osx-apache-mysql-php-part-1/
- https://www.hongkiat.com/blog/osx-apache-mysql-php-part-2/
- Sur Linux, voir http://fr.open-lamp.com/installer-et-configurer-un-serveur-web-sous-linux-debian-ou-ubuntu/
PHP Big Sur
https://discussions.apple.com/docs/DOC-250003138
https://getgrav.org/blog/macos-bigsur-apache-multiple-php-versions