Bien que Apache et PHP soient pré-installés sur Mac OS X, j’évite depuis plusieurs années de les utiliser. Au départ pour un problème de compilation d’une extension PHP, aujourd’hui pour ne plus être dépendant d’Apple dans la mise à jour de ces logiciels.
J’utilise donc MacPort, un excellent gestionnaire de packages pour Mac OS X, qui permet de compiler et d’installer toutes sortes de logiciels open-source bien utiles.
La sortie récente de Mac OS X Lion, la nouvelle version du système d’exploitation d’Apple pour ordinateur, a été l’occasion de ré-installer complétement mon environnement LAMP…
Je vous propose ici un guide sur l’installation et la configuration d’Apache, MySQL et PHP avec MacPort…
Installation de votre environnement LAMP
Nous allons dans une premier temps procéder à l’installation d’Apache 2, MySQL 5 et PHP 5.3 et ses extensions. Pour cela, nous devons installer MacPorts 2.0…
Installation MacPorts 2.0
MacPorts 2.0 nécessite au préalable que les outils développeur Mac OS X Lion soient installés. Vous les obtiendrez en installant Xcode 4, disponible sur le Mac App Store d’Apple.
- Téléchargez MacPorts 2.0 sur le site officiel
- Ouvrez le fichier .dmg que vous venez de télécharger
- Lancez le fichier .pkg et suivez les instructions
A noter que dans la suite de l’article, les commandes données sont à exécuter dans le terminal et en mode « super-admin », d’où le sudo au début des commandes.
Installation Apache 2
- Téléchargez et installez Apache2 et ces dépendances :
sudo port install apache2
- Une fois l’installation terminée, vous pouvez activer lancement automatique de Apache au démarrage de l’ordinateur :
sudo port load apache2
Installation MySQL 5
- Téléchargez et installez MySQL 5 et ces dépendances :
sudo port install mysql5
- Installez/Activez le serveur MySQL 5 :
sudo port install mysql5-server
- Une fois l’installation terminée, vous pouvez activer le lancement automatique de MySQL au démarrage de l’ordinateur :
sudo port load mysql5-server
- Terminez l’installation de MySQL :
sudo -u _mysql mysql_install_db5
- Une fois l’installation terminée, vous pouvez lancer MySQL au démarrage de l’ordinateur :
sudo port load mysql5
Installation PHP 5.3
- Téléchargez et installez PHP 5.3 et ces dépendances. A noter ici que je choisi également d’activer le PEAR, d’où le +pear.
sudo port install php5 +pear
- Ajoutez le module PHP pour Apache 2 :
sudo /opt/local/apache2/bin/apxs -a -e -n "php5" /opt/local/apache2/modules/libphp5.so - Créez le fichier de configuration php.inide PHP :
sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
- Installez et activez MySQL pour PHP :
sudo port install php5-mysql
- Étape optionnelle : Installez quelques extensions utiles pour PHP (apc, curl, gd, iconv, mbstring, …).
sudo port install php5-apc php5-curl php5-gd php5-iconv php5-intl php5-mbstring php5-mcrypt php5-posix php5-sqlite php5-xdebug php5-zip
Configuration de votre environnement LAMP
Les logiciels sont maintenant installés, reste à les configurer correctement…
Configuration Apache 2
Les étapes ci-dessous permettent de configurer le support de PHP dans Apache et d’activer le module UserDir (facultatif).
- Activer PHP dans Apache
- Éditez le fichier /opt/local/apache2/conf/httpd.conf
- Ajoutez à la fin du fichier
# Include PHP configuration Include conf/extra/mod_php.conf
- Ajouter index.php dans les pages d’index reconnues par Apache
- Éditez le fichier /opt/local/apache2/conf/httpd.conf
- Recherchez la ligne ci-dessous :
DirectoryIndex index.html
- Ajoutez sur la même ligne, à la fin :
index.php
- Étape optionnelle : Activer l’extension UserDir pour Apache. Cette extension permet d’avoir des urls dédiées pour chaque utilisateur de l’ordinateur du type http://localhost/~utilisateur/
- Éditez le fichier /opt/local/apache2/conf/httpd.conf
- Recherchez et décommentez la ligne ci-dessous :
#Include conf/extra/httpd-userdir.conf
- Étape optionnelle : Autoriser l’ajout/suppression d’options via un .htaccess (exemple
Options +FollowSymLinks)- Éditez le fichier /opt/local/apache2/conf/extra/httpd-userdir.conf
- Recherchez la ligne ci-dessous :
AllowOverride FileInfo AuthConfig Limit Indexes
- Ajoutez sur la même ligne, à la fin :
Options
- Une fois les modifications effectuées, vous pouvez (re)démarrer Apache :
sudo /opt/local/apache2/bin/apachectl restart
Configuration MySQL 5
Les étapes ci-dessous ont pour objectif de configurer et sécuriser votre serveur MySQL.
- Démarrez le serveur MySQL
sudo /opt/local/lib/mysql5/bin/mysqld_safe &
- Sécurisez votre serveur MySQL. Je vous recommande de configurer le mot de passe root et de répondre « Yes » à toutes les questions.
sudo /opt/local/lib/mysql5/bin/mysql_secure_installation
Configuration PHP 5
- Configurer MySQL pour PHP
- Éditez le fichier /opt/local/etc/php5/php.ini
- Recherchez les paramètres
pdo_mysql.default_socket,mysql.default_socket,mysqli.default_socketet mettez comme valeur ceci :/opt/local/var/run/mysql5/mysqld.sock
- Configurer le fuseau horaire par défaut
- Éditez le fichier /opt/local/etc/php5/php.ini
- Recherchez la ligne suivante :
;date.timezone =
- Remplacez par :
date.timezone = "Europe/Paris"
- Étape optionnelle : Activer les archives Phar
- Éditez le fichier /opt/local/etc/php5/php.ini
- Recherchez et décommentez la ligne ci-dessous
;phar.readonly = On
- Une fois les modifications terminées, redémarrez votre serveur Apache 2.
Bonus
Bonus #1 : Installation et configuration de PhpMyAdmin
Si vous souhaitez installer l’outil PhpMyAdmin afin d’administrer vos bases de données MySQL depuis une interface web, voici les étapes à suivre.
- Installez PhpMyAdmin
sudo port install phpmyadmin
- Activez PhpMyAdmin dans Apache
- Créez le fichier /opt/local/apache2/conf/extra/mod_phpmyadmin.conf avec comme contenu ceci :
AliasMatch ^/phpmyadmin(?:/)?(/.*)?$ "/opt/local/www/phpmyadmin$1" <Directory "/opt/local/www/phpmyadmin"> Options -Indexes AllowOverride None Order allow,deny Allow from all LanguagePriority en de es fr ja ko pt-br ru ForceLanguagePriority Prefer Fallback </Directory>
- Éditez le fichier /opt/local/apache2/conf/extra/mod_php.conf
- Recherchez la ligne ci-dessous :
</IfModule>
- Ajoutez au-dessus les lignes suivantes :
# PhpMyAdmin configuration Include conf/extra/mod_phpmyadmin.conf - Redémarrez Apache 2
- Créez le fichier /opt/local/apache2/conf/extra/mod_phpmyadmin.conf avec comme contenu ceci :
- Étape optionnelle : Utiliser l’authentification HTTP plutôt que par cookies
- Éditez le fichier /opt/local/www/phpmyadmin/config.inc.php
- Recherchez la ligne ci-dessous et remplacez
cookieparhttp$cfg['Servers'][$i]['auth_type'] = 'cookie';
Bonus #2 : Restauration de base de données MySQL volumineuses
Si vous essayez d’importer une base de données assez volumineuses (plusieurs Mo), vous obtiendrez une message d’erreur de MySQL :
Got a packet bigger than ‘max_allowed_packet’
Pour éviter ce problème vous devez personnaliser le fichier de configuration de MySQL. Voici les étapes à suivre.
- Créez le fichier de configuration
sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf
- Éditez le fichier /opt/local/etc/mysql5/my.cnf
- Recherchez la ligne ci-dessous :
max_allowed_packet = 1M
- Remplacez par :
max_allowed_packet = 16M
- Redémarrez le serveur MySQL
- Si vous obtenez toujours cette erreur, éditez à nouveau le fichier de configuration et augmentez la valeur de
max_allowed_packet
Conclusion
Votre environnement LAMP est maintenant prêt et vous pouvez commencer ou prendre vos développements PHP/MySQL avec Mac OS X Lion en plaçant vos fichiers PHP dans votre dossier Sites…
Merci pour ce tuto! J’abandonne mon environnement de dev sous virtualbox (Debian) pour travailler directement sur mac os… J’espère que je ne vais pas être déçu.
Bonjour,
Je cherche à faire l’install sur 10.7 et mac mini qui ira en DataCenter pour hébergement Web. J’aurai commencé mais une chose me trouble. L’emploi du terme LAMP. L pour linux. Why ? On est sur mac et un fruit de BSD non ? Je vais le faire après que mon Time Machine ai fini son job dès fois que …
Merci en tout ças
Alain
MAMP alors ? Je trouve que c’est plus simple LAMP, terme connu et reconnu par les devs, plus que MAMP, qui est aussi le nom d’un logiciel mac.
Hello, merci pour ce tuto!
je l’ai suivi à la lettre et je rencontre deux difficultés. La première est lorsque j’execute :
sudo /opt/local/lib/mysql5/bin/mysql_secure_installation
j’obtiens : Can’t connect to local MySQL server through socket ‘/opt/local/var/run/mysql5/mysqld.sock’
La deuxième est pour afficher phpmyadmin dans le navigateur, il est installer dans le dossier /opt/local/www/phpmyadmin, or un localhost dans le navigateur renvoi vers /opt/local/apache2/htdocs
merci pour votre aide
Le serveur MySQL ne semble pas être lancé. Tente de faire un « sudo cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe & » puis relance la précédente commande.
Salut,
J’ai le même problème que Greg (can’t connect to local MySQL server : socket /opt/local/var/run/mysql5/mysqld.sock)
J’ai essayé « /opt/local/lib/mysql5/bin/mysql_upgrade » ainsi que « /opt/local/lib/mysql5/bin/mysqld_safe & » mais cela me génère des erreurs de permissions :
prestamodule:~ steph$ 111019 17:38:46 mysqld_safe Logging to ‘/opt/local/var/db/mysql5/prestamodule.local.err’.
111019 17:38:47 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5
/opt/local/lib/mysql5/bin/mysqld_safe: line 100: /opt/local/var/db/mysql5/prestamodule.local.err: Permission denied
/opt/local/lib/mysql5/bin/mysqld_safe: line 137: /opt/local/var/db/mysql5/prestamodule.local.err: Permission denied
111019 17:38:47 mysqld_safe mysqld from pid file /opt/local/var/db/mysql5/prestamodule.local.pid ended
/opt/local/lib/mysql5/bin/mysqld_safe: line 100: /opt/local/var/db/mysql5/prestamodule.local.err: Permission denied
J’ai essayé de faire un chmod 777 sur le dossier db, mais l’erreur persiste.
Une idée ?
Merci
Merci pour ces super conseils !! Tout à parfaitement fonctionné.
Bonjour,
Bravo pour ce tuto terriblement clair !
Par contre, phpMyAdmin refuse mon mot de passe root, il renvoie le message :
#2002 Connexion au serveur MySQL non permise
Faut-il remplir dans config.inc.php :
$cfg['blowfish_secret'] = »;
Comment attribuer le mot de passe spécifique à phpMyAdmin ?
Merci
NB : j’apprends tout juste le PHP.
Bonjour catherine,
j’ai eu le même problème que toi même après avoir réédité plusieurs fois mon config.inc.php.
J’ai finalement réussi à me logger en générant le fichier par le biais du script d’installation de phpmyadmin. (http://localhost/phpmyadmin/scripts/setup.php).
Solution détaillée ici: http://macnomodo.frbb.net/t653-installer-et-configurer-phpmyadmin.
Voilou, bon courage à tous.
Merci pour ce tuto !
Mais je me retrouve bloqué à l’étape « Configuration de mysql 5″ avec la commande :
sudo cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
La commande me génère ce message :
MacBook-Pro-de-Florent:~ Florent$ 110903 16:06:23 mysqld_safe Logging to ‘/opt/local/var/db/mysql5/MacBook-Pro-de-Florent.local.err’.
110903 16:06:23 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5
110903 16:06:23 mysqld_safe mysqld from pid file /opt/local/var/db/mysql5/MacBook-Pro-de-Florent.local.pid ended
Dans le error.log dont j’ai du changer les permissions :
110903 16:06:23 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5
110903 16:06:23 [Warning] Setting lower_case_table_names=2 because file system for /opt/local/var/db/mysql5/ is case insensitive
110903 16:06:23 [Note] Plugin ‘FEDERATED’ is disabled.
110903 16:06:23 [Note] Plugin ‘ndbcluster’ is disabled.
/opt/local/libexec/mysqld: Table ‘plugin’ is read only
110903 16:06:23 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
110903 16:06:23 InnoDB: Initializing buffer pool, size = 8.0M
110903 16:06:23 InnoDB: Completed initialization of buffer pool
110903 16:06:23 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: ‘open’.
InnoDB: Cannot continue operation.
110903 16:06:23 mysqld_safe mysqld from pid file /opt/local/var/db/mysql5/MacBook-Pro-de-Florent.local.pid ended
Est-ce que quelqu’un a une solution ?
Merci de votre aide
Finalement, le redémarre du système a réglé le problème !
Bonjour,
novice en info j’ai suivi votre tutoriel qui est super sympa.
En revanche je me trouve bloqué avec un message d’erreure :
httpd: Could not reliably determine the server’s fully qualified domain name, using test.local for ServerName
ais-je oublié qque chose ??
help me
Pour info, depuis XCode 4.1, qui s’installe via l’App Store, il est nécessaire de relancer l’installeur pour que l’installation de MacPorts fonctionne bien.
Bonjour j’ai suivi votre tuto pas à pas, et j’ai installer apache et php sans problèmes.
Mais je suis bloquer au niveau de l’installation de mysql 5 où je rencontre cette erreur:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/opt/local/var/run/mysql5/mysqld.sock’
J’ai donc essayer: sudo cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
mais malgré le redémarrage , j’ai toujours cette erreur:
mac-david:~ davydauteuil$ mysql5
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/opt/local/var/run/mysql5/mysqld.sock’ (2)
mac-david:~ davydauteuil$ sudo cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
Password:
[1] 428
mac-david:~ davydauteuil$ 111006 16:34:30 mysqld_safe Logging to ‘/opt/local/var/db/mysql5/mac-david.err’.
cat: /opt/local/var/db/mysql5/mac-david.pid: Permission denied
rm: /opt/local/var/db/mysql5/mac-david.pid: Permission denied
111006 16:34:30 mysqld_safe Fatal error: Can’t remove the pid file:
/opt/local/var/db/mysql5/mac-david.pid
Please remove it manually and start /opt/local/lib/mysql5/bin/mysqld_safe again;
mysqld daemon not started
/opt/local/lib/mysql5/bin/mysqld_safe: line 100: /opt/local/var/db/mysql5/mac-david.err: Permission denied
Merci d’avance de votre aide.
J’ai relu le message d’erreur que j’ai posté et j’ai vu que j’avais des soucis avec 2 fichiers:
/opt/local/var/db/mysql5/mac-david.pid que j’ai supprimer
et
/opt/local/var/db/mysql5/mac-david.err
Sur ces 2 fichiers, seul _mysql avait un accès en ecriture.
Pour le second fichier /opt/local/var/db/mysql5/mac-david.err j’ai donc modifier l’accès en ecriture pour des tests et j’ai réexcuter la commande:
sudo cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
ce qui me donne ce message d’erreur:
[1] 643
mac-david:~ davydauteuil$ 111006 16:41:49 mysqld_safe Logging to ‘/opt/local/var/db/mysql5/mac-david.err’.
111006 16:41:49 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5
111006 16:41:49 mysqld_safe mysqld from pid file /opt/local/var/db/mysql5/mac-david.pid ended
[1]+ Done /opt/local/lib/mysql5/bin/mysqld_safe
mac-david:~ davydauteuil$
mac-david:~ davydauteuil$ mysql5
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/opt/local/var/run/mysql5/mysqld.sock’ (2)
Bonjour,
J’en suis à configurer LAMP et dans le fichier httpd.conf il faut ajouter « Index php » à la suite de la phrase « DirectoryIndex Index html » mais je n’ai pas cette occurrence dans ce fichier. Savez-vous où est le problème ?
Merci
Problème résolu, ne pas tenir compte de mon message
Merci de la qualité de votre tutoriel
Bernard
Super tuto !!. Merci de prendre du temps pour aider les débutants.Par contre , j’ai un souci. Je ne suis pas sûre d’avoir tout fait dans l’ordre vu que j’ai interrompu le soir pour continuer le lendemain.
J’ai vu que je ne suis pas la seule à coincer à cet endroit, mais de toute façon, je ne sais pas comment sortir de la demande de mot de passe, car je débute complètement dans ce domaine :
new-host-2:~ patriciacarroy$ sudo /opt/local/lib/mysql5/bin/mysql_secure_installation
Password:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/opt/local/var/run/mysql5/mysqld.sock’ (2)
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/opt/local/var/run/mysql5/mysqld.sock’ (2)
Enter current password for root (enter for none):
Et je tourne en rond, car même en tapant juste enter, je suis jetée.
Si vous pouvez me sortir de là, je vous en serait reconnaissante. Je redonnerai mon opinion quand j’aurai terminé, car il faut dire quand ça ne va pas, mais aussi complimenter quand tout est OK.
Merci encore
Je me suis sortie de mon problème avec difficulté à force de bidouiller (pas bien la bidouille!!)
L’essentiel est que je sois débloquée.
Merci encore
Après avoir suivi à la lettre le tutoriel, je n’arrive pas à afficher le site quand je tape localhost dans le navigateur (j’ai une erreur 403), mais ça marche sur 127.0.0.1
Mon fichier hosts est clean, je comprends pas ce qui ne va pas
Merci pour le tuto en tout cas
Bonjour,
Comment fait-on pour ajouter des vhost des que le tout est configurer ?
Merci
Tu veux définir tes vhosts dans le fichier /opt/local/apache2/conf/extra/httpd-vhosts.conf après avoir décommenté la ligne
Include conf/extra/httpd-vhosts.confdans /opt/local/apache2/conf/httpd.confSuper merci pour ce tuto !
Un seul problème:
La version mysql de macPort rentre en conflit avec celle de l’appli « MAMP » avec laquelle je travaillais à ce jour… (diodes mysql reste rouge !!!)
Comment faire pour récupérer le démarrage du serveur mysql de « MAMP » pour pouvoir migrer ma base vers MAMP-MacPort ?
Les mots de passe mysql pou MAMP et MAMP-MacPort étant les mêmes !
D’avance : SUPERMERCI !
Ca y est : j’ai trouvé:
sudo port unload mysql5-server
Bonjour,
L’installation s’est bien déroulée mais je n’arrive pas à atteindre la page de démarrage de phpmyadmin en mode graphique.
Peux tu m’éclairer?
De même pour apache ça fonctionne quand je tappe localhost ça marque « It works! » mais je ne sais rien modifier.
Comment avoir accès en mode graphique?
Merci
Bonjour,
PHP ne semble pas fonctionner malgré que l’installation s’est bien déroulée!!!
Pouvez-vous m’aider à activer PHP????
Merci