Installer et configurer Apache, MySQL et PHP sur OS X Mountain Lion

Anthony Nelzin-Santos |

Le déploiement d'un environnement de développement de sites web MAMP n'est pas particulièrement compliqué, mais la procédure a changé avec OS X Mountain Lion. Voici la marche à suivre sous OS X 10.8.



Vous utilisez OS X Lion ? Suivez notre pas-à-pas : « créer un environnement de développement Web sous Mac »



La version courte



La solution la plus directe est MAMP : autonome, elle ne dépend pas des outils livrés par Apple dans OS X. Difficile de faire plus simple : une fois installé, MAMP se gère par le biais d'une interface graphique qui permet de démarrer les serveurs (Apache / MySQL) et d'ouvrir la page d'accueil qui offre notamment l'accès à un phpMyAdmin. On place les sites en PHP dans le dossier Applications/MAMP/htdocs/, et on y accède à l'adresse http://localhost:8888.



MAMP



Si vous êtes plus familier avec la ligne de commande sans pour autant aimer les complications, vous préférerez peut-être installer XAMPP, qui a l'avantage d'embarquer le serveur FTP ProFTPD et prend en charge Perl. Alors qu'on démarre MAMP avec une interface graphique, XAMPP se lance avec la commande /sudo Applications/XAMPP/xamppfiles/xampp start. Il est donc un tout petit plus compliqué à utiliser, même si le fonctionnement quotidien est assez similaire : on accède par exemple aux sites à l'adresse http://localhost.



La version longue



Ces deux solutions ont l'avantage d'être faciles et rapides à mettre en place, mais elles ajoutent une application supplémentaire. Or OS X embarque un serveur Apache et prend en charge le PHP — mais ils ne sont pas activés par défaut.



Activer Apache



Pour activer le serveur Apache dans les précédentes versions d'OS X, il suffisait d'activer le partage web dans les Préférences système. Apple a retiré cette interface graphique dans Mountain Lion, mais le serveur HTTP est toujours présent. Pour démarrer Apache, il faut désormais entrer la commande suivante dans le Terminal : sudo apachectl start (donnez votre mot de passe administrateur).



Apache



Pour l'arrêter, on tapera sudo apachectl stop et sudo apachectl restart pour le redémarrer. La version 2.2.22 installée dans OS X 10.8.2 n'est pas la plus récente de toutes. Pour vérifier le fonctionnement d'Apache, essayez tout simplement de vous rendre à l'adresse http://localhost avec votre navigateur.



Ça marche !



Vous pouvez placer les fichiers de votre site dans le dossier /Library/WebServer/Documents/. Dans les précédentes versions d'OS X, vous pouviez aussi les placer dans le dossier ~/Sites/, mais celui-ci n'est plus présent dans Mountain Lion. Néanmoins, si vous le créez manuellement, il sera reconnu par OS X 10.8.



Si vous avez hérité d'un dossier ~/Sites/ d'une précédente version d'OS X que vous avez mise à jour, il faudra effectuer une petite manipulation pour qu'il soit pris en compte par l'Apache de Mountain Lion. Dans le Terminal, passez les commandes suivantes en remplaçant votrenomdutilisateur par… votre nom d'utilisateur (le court, c'est-à-dire le nom de votre maison) :



cd /etc/apache2/users
sudo nano votrenomdutilisateur.conf



Dans l'éditeur qui s'ouvre, insérez les lignes suivantes :



<Directory "/Users/votrenomdutilisateur/Sites/">
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>





Enregistrez les modifications avec ^O puis fermez l'éditeur avec ^X, puis redémarrez Apache. Vous pouvez alors accéder aux fichiers du dossier ~/Sites/ en accédant à l'adresse http://localhost/~votrenomdutilisateur. En indiquant un autre chemin que /Users/votrenomdutilisateur/Sites/, vous pourrez potentiellement ajouter le dossier que vous voulez à la configuration Apache — ce qui peut être utile si vous travaillez dans une Dropbox par exemple.



Activer PHP



Pour activer PHP, il faut décommenter une ligne dans le fichier de configuration du serveur HTTP Apache. Dans le Terminal, entrez la commande sudo nano /etc/apache2/httpd.conf. Vous trouverez dans le premier tiers du document la ligne #LoadModule php5_module libexec/apache2/libphp5.so. Supprimez simplement la dièse (le symbole du commentaire), enregistrez les modifications avec ^O puis fermez l'éditeur avec ^X, et, enfin, redémarrer Apache.





Si vous souhaitez aussi utiliser Perl, décommentez la ligne #LoadModule perl_module libexec/apache2/mod_perl.so.



Installer MySQL



Le système de gestion de bases de données MySQL n'est pas inclus dans OS X, il faut donc l'installer. Téléchargez la version « Mac OS X ver. 10.6 (x86, 64-bit) » sur le site de MySQL. Vous aurez alors trois éléments à installer : MySQL lui-même, son panneau de préférences qui permet de le gérer en interface graphique, et de quoi le faire démarrer en même temps que le Mac. Pour ouvrir ces éléments, effectuez un clic-droit > Ouvrir : ils ne sont pas signés et refuseront sinon de s'ouvrir.



Sur l'écran suivant, cliquez sur « No thanks, just start my download! », pour passer l'étape de création d'un compte.



Il vous faut effectuer quelques modifications pour que MySQL soit parfaitement pris en charge. Dans le Terminal, entrez la commande cd pour revenir à votre dossier utilisateur puis nano .bash_profile. Dans l'éditeur qui s'ouvre, ajoutez la ligne export PATH="/usr/local/mysql/bin:$PATH", puis enregistrez les modifications avec ^O et fermez l'éditeur avec ^X. Vous devez alors entrer la commande source ~/.bash_profile.



Enfin, assignez un mot de passe à votre installation MySQL avec la commande /usr/local/mysql/bin/mysqladmin -u root password 'votremotdepasse'.



Installer phpMyAdmin



Pour installer phpMyAdmin, suivez notre précédent guide sur la question (l'URL d'installation est désormais http://localhost/~votrenomdutilisateur/phpMyAdmin).



Notre conseil



Vous avez alors une installation complète d'Apache, MySQL et PHP sur votre Mac sans application supplémentaire — au prix de manœuvres beaucoup plus longues néanmoins. Très franchement, mieux vaut utiliser MAMP ou XAMPP, plus simples à mettre en place.



Ils vous permettront accessoirement, si vous décidez finalement de sauter le pas et d'utiliser les outils intégrés à OS X, d'avoir un filet de secours dans un premier temps, et si tout fonctionne, un deuxième serveur sur votre Mac, ce qui peut être utile pour tester des configurations différentes.

avatar sekaijin | 
Je ne comprends pas la remarque "Si vous êtes plus familier avec la ligne de commande sans pour autant aimer les complications" XAMPP s'installe comme tout appli Macos sans ligne de commande l'application dans le dossier application permet de lancer/arrêter apache/mysql/ProFTPD avec 3 clicks http://sustainablewebdesign.com/book/media/img/xampp-control-mac.png les fichiers de conf sont accessibles directement dans le dossier Applications/XAMPP le serveur apache démarré la page d'accueil propose un état du serveur divers info statistique et l'accès à phpMyAdmin. j'utilise XAMPP sur linux/windows/mac depuis ... (au moins) et je ne me souviens pas avoir tappé une seule ligne de commande. la raison de ce choix est le X pour crossplatform j'ai avec XAMPP un environnement identique sur tous les OS. Attention il est clairement destiné à des développeurs la conf par défaut n'est pas secure du tout. j'ai d'ailleurs installé systématiquement sur tous les postes http://phpsec.org/projects/phpsecinfo/ A+JYT PS: pour info X (cross platform) A (Apache) M (MySQL) P (Php) P (Perl)
avatar iPeP (non vérifié) | 
Version courte : vous achetez un NAS Synology et vous avez un serveur complet et autonome avec tout cela plus Joomla, Wordpress, Open ERP, Magento ...
avatar eled | 
@iPeP Et.... qui ne sert absolument à rien s'il s'agit uniquement de faire du dev'.
avatar pecos | 
Très franchement, comme vous dites... Il vaut mieux (au moins essayer) d'installer un VRAI serveur apache + PHP + MYSQL. C'est plus performant, ça consomme moins de ressources que MAMP. Et ça permet d'utiliser ce qui est déjà installé sur me mac par défaut. Et surtout, en faisant ça, ON APPREND quelque chose. Quelque chose qui me semble indispensable à un concepteur web : comment marche un vrai serveur et comment on le configure. En même temps, on peut en discuter des heures, il y aura toujours quelqu'un pour affirmer que c'est plus simple en faisant ceci ou cela. Personnellement, je n'ai jamais eu le moindre problème à faire marcher Apache, PHP et MYSQL sur mes macs, depuis panther jusqu'à mountain lion. Et toujours en utilisant le serveur fourni par apple sur mes machines. Par contre, ça fait très longtemps que j'utilise la version de PHP compilée par Marc Liyanage (entropy.ch) qui est plus riche que celle d'Apple. Elle s'installe facilement en suivant ses instructions.
avatar hadrien.eu | 
Moi je préfère une bonne Debian en VM avec Virtualbox. J'aime pas installer des outils serveurs sur mon laptop.
avatar senghor | 
Ben moi je compile tout moi même car c'est mieux optimisé en ayant choisit les modules que j'ai vraiment besoin et comme le signale un précédent message cela m'a permit d'apprendre. D'ailleurs je propose prochainement sur mon http://github.com/diglin pour compiler vous même Apache, php et nginx. Il y a aussi MySQL mais c'est un installateur configurable plutôt qu'une version qu'on compile soit même. J'utilise mon script pour le dev et la production
avatar senghor | 
Les outils d'OSX sont bien pour faire vite vite... mais c'est lent et on est vite bloqué pour certains développement comme Magento. MAMP et XAMP n'utilisent probablement pas la version 2.4 d'apache car il y a des changements à faire dans les configurations des hôtes virtuelles ou pour les applications web, je parle des droits d'accès. C'est dommage car il est plus rapide que les précédentes version
avatar fornorst | 
Perso, je fais tout avec Macport. Apache s'installe super facilement. Idem pour PHP, toutes les extensions dont j'ai besoin et tout plein d'autres apps utiles. Mais je fais de la ligne de commande toute la journée : je ne suis donc pas tout à fait l'utilisateur classique :)
avatar Philactere | 
Je pense aussi que la phase installation / configuration à la main d'Apache/MySQL/php est intéressante pour un développeur web afin de comprendre un minimum qui fait quoi et les interactions entre ces 3 softs. On parle bien sûre d'un environnement de développement donc relativement simple. Pour les serveurs de prod, entre les options d'optimisation et de sécurité mieux vaut laisser la main à un admin.
avatar iDanny | 
phpMyAdmin c'est old fashioned à mort ! ^^ => http://www.adminer.org/
avatar fornorst | 
SQL c'est old fashionned à mort ! ^^ => http://wiki.basho.com/ À prendre au second degré bien sûr ;)
avatar slainer68 | 
Apache, PHP et MySQL > WAAAHHH ! Les putains de technologies du futur !!! Il manque plus qu'un client FTP et Telnet, magnifique ! Bon, je vous laisse les amis, ma mère veut téléphoner et j'ai plus de temps sur mon forfait AOL 50 heures. Je check mon Caramail et me déconnecte.
avatar hadrien.eu | 
Héhé :)
avatar gpsnail | 
Pour ma part, en développement, j'utilise une machine virtuel. Avec des outils comme Vagrant et VirtualBox, on se construit son environnement que l'on duplique sur toutes les machines que l'on utilise. Le quatuor magique est alors veewee (pour construire la box de dev), VirtualBox en backend, Vagrant pour la gestion, et surtout Chef pour faire le provisionning sur la machine de dev. Pour ceux qui veulent des exemples, je peux vous les fournir en MP.
avatar Jamseth | 
Mouai, pour ce qu'il y a à apprendre avec php et mysql...
avatar gpsnail | 
@Philactere Entièrement d'accord, d'ailleurs en production, on n'utilise très peu de serveurs physique mais essentiellement des machines virtuelles avec du VMware et autres...
avatar gpsnail | 
@Jamseth Oui et non, mais d'où l'intérêt de fonctionner en machine virtuelle, ça permet de se faire son env. Perso, je bosse pas mal sur Rails et la c'est vraiment sympa, mais Grails c'est également super sympa. Sans être, l'avenir ce sont des outils plutôt bien fait pour le dev Web.
avatar Florent Morin | 
@fornorst : Pareil. MacPorts, il n'y a rien de tel pour être à jour et ne pas être pris au dépourvu pour telle ou telle extension. Nickel pour du Symfony 2 par exemple.
avatar Bookigloo | 
Pourriez-vous m'expliquer pourquoi MAMP 1.9.1 refuse de fonctionner derrière un routeur ? Je suis obligé de connecter mon iMac en ethernet sur la Freebox et c'est lui qui fait routeur et réseau WiFi. Si je mets la Freebox en routeur et réseau WiFi, mon iMac connecté en ethernet à la Freebox, MAMP est out ! Si je mets la Freebox sur Time Capsule qui fait routeur et réseau WiFi, mon imac en ethernet sur Time Capsule, MAMP est à nouveau out. MAMP exige une connexion directe sur la box… Merci de vos lumières.
avatar GlobalNetConcept | 
Cette solution est très pratique : http://www.ampps.com/
avatar popey | 
arg, des sites dans /Applications/MAMP/htdocs/ !!! Mais c'est absolument horrible de pousser les utilisateurs à mettre des données la dedans ! Pour moi, c'est une raison suffisante pour déconseiller très vigoureusement mamp. Un des énorme avantage que je trouve à mac os x, c'est un système de fichier très organisé. Normalement, n'importe quel utilisateur de mac OS X, je peux lui dire que en sauvegardant son dossier "home", il sauvegarde toutes ses données et les préférences de son compte. Les trucs qui cassent cette organisation sans aucun scrupules, j'ai un peu de mal.
avatar fornorst | 
@flomo : c'est exactement pour ça que je l'utilise. Un env PHP à jour (PHP 5.4) avec les extensions qui vont bien pour sf2, un vrai Apache dans lequel je mets les mêmes confs qu'en prod (déployées automatiquement avec des scripts qui mimiquent chef que je ne veux pas installer sur ma machine) et des services de stockage (Mysql, Riak, ...) hébergés sur des machines virtuelles distantes partagées par l'équipe. Conséquences : -> environnement super light sur la machine du développeur -> hyper facile à installer : moins d'une heure pour avoir le site fonctionnel sur sa machine la première fois en comptant l'installation de XCode (pour macport), de macport, d'Apache, PHP, ... Quelques secondes pour le mettre à jour ensuite grâce à des repos Git -> environnement assez proche de la production (même version de PHP et d'Apache) -> impossible de faire des tests non unitaires ou non mockés en se basant sur les données distantes et c'est une excellente chose ! Et au final, ça ne m'a pas coûté bien cher de mettre tout ça en place.
avatar mbk28 | 
bonjour j'ai essayer avec la méthode longue et j'ai le message suivant bien que connecté en admin: "Forbidden You don't have permission to access /~ibook/ on this server." or je travaille sur plusieurs sites sur "Sites", je peux pas les mettre tous sur mamp
avatar sekaijin | 
@popey => arg, des sites dans /Applications/MAMP/htdocs/ !!! heu à ma connaissance MAMP XAMPP et autre turc du genre sont des package fait pour le développeur pas pour une machine de prod. le but ets d'avoir un environnement rapidement sans se casser la tête. je suis peut être c@n mais je pense qu'une développeur même débutant est capable d'ouvrir /Applications/MAMP/conf/httpd.conf et de changer le chemin de DocummentRoot /Applications/MAMP/htdocs/ est juste une conf par défaut pour ne pas avoir à impacter le reste du disque. quelqu'un qui veut tester peut glisser déposer son package sur son disque l'utiliser 5mn pour voir et le mettre à la poubelle. pour pouvoir épartiller les divers élément conformément à l'organisation de la machine cible (donc dépendant de l'OS hôte, tous les OS ne sont pas organisé de la même façon) il faut un installateur et donc un désinstallateur. un package comme XAMPP ou MAMP (que je ne suis plus depuis longtemps) on l'avatage d'être autonome rien ne t'empèche de mettre ça sur un disque externe tu peux alors utiliser ton environnement en branchant simplement ton disque. ce n'est pas le même besoin que de faire un serveur de production qui lui se doit de proposer une organisation homogène avec les autres produit de l'entreprise (ou de l'OS) A+JYT
avatar sekaijin | 
@ mbk28 tu peux trs bien tout mettre sous MAMP Apache quelque soit son installation gère de la même façon des serveur virtuels ou les alias donc autant de sites autant de dossiers les abritants et ce quelque soit le package apache utilisé A+JYT
avatar senghor | 
@gpsnail : je serai bien intéresse pour des exemples stp. J'ai tenté de m'y mettre mais j'ai trouvé cela intéressant mais j'avais peu de temps pour voir avec et je voulais travailler avec capistrano, il m'aurait fallu revoir beaucoup de mes scripts. Tu peux me contacter sur sly at diglin.com
avatar iPeP (non vérifié) | 
@eled Du quoi ??? Non, justement, je ne suis pas développeur et je n'ai pas envie de m'y mettre ! Avec mon Syno et les packages, je n'ai rien à faire, tout s'installe tout seul et je peux me consacrer uniquement sur le contenu, pas sur la technique.
avatar AirForceTwo | 
À l'heure où on fait tout et n'importe quoi sur le cloud, je n'ai plus envie de m'embeter avec un serveur local. Pour Magento, je préfère prendre un hébergement de dev quelque part, style 10$ chez Aspiration Hosting, sous Litespeed. Tout fonctionne bien et vite, y compris le sendmail (désactivé sur MAMP), Remote MySQL avec Navicat, et on est proche d'une config de prod. Ensuite, j'utilise un Synology (USB Disk Station 2 suffisant) pour faire un backup automatique du cPanel par FTP tous les jours, et c'est impec.
avatar AirForceTwo | 
@Jamseth Il n'y a peut-être pas grand chose à apprendre avec php et mysql (si tu le dis), mais il y a de quoi en vivre.
avatar mbk28 | 

je suis bloqué après avoir activer l'acces de base:
You don't have permission to access /~marcbook on this server.

que faut-il faire?

CONNEXION UTILISATEUR