Mac OS X : installation de Nginx / PHP / MySQL

Après différents essais d’utilisation d’Apache / MySQL / PHP sous MacOS X que ce soit avec les versions fournies par Apple ou des packages spécifiques, la raison m’a amené à compiler et installer mes propres versions de Nginx, PHP 5 et MySQL 5.
Existe-t-il une solution facilitant toutes ces opérations ? La réponse est MacPorts : un système de ports (packages) pour Mac OS, fortement inspiré des ports BSD. Un port est donc un package permettant de télécharger, compiler et installer un logiciel depuis ses sources. Une unique commande est nécessaire. En pratique, cela reste très simple et addictif. Il convient uniquement de mettre à jour de temps à autre l’arborescence des ports pour récupérer les dernières versions. Tous les programmes sont installés dans /opt/local ce qui ne modifie en rien le système et toute autre installation native (les versions fournies par Apple).
MacPorts
L’outil est disponible au téléchargement sur cette page. N’oubliez pas d’installer la dernière version des outils XCode et le serveur X11 pour pouvoir compiler certains ports.
Les commandes courantes de MacPorts sont les suivantes :
- chercher un port par son nom :
$ sudo port search <name>
- afficher les informations d’un port :
$ sudo port info <name>
- afficher les options de compilation du port :
$ sudo port variants <name>
- installer le port, les variants étant fournis à la suite et préfixées par le caractère + :
$ sudo port install <name> +<variant>
- désinstaller un port :
$ sudo port uninstall <name>
- lister les dépendances du port :
$ sudo port deps <name>
- lister les fichiers installés par le port :
$ sudo port contents <name>
Avant de débuter l’installation des ports, le téléchargement initiale de l’arborescence des ports est requis :
$ sudo port -v selfupdate
L’installation des ports peut à présent débuter.
Installation de Nginx
$ sudo port install nginx
Les fichiers exemples sont à copier et la configuration à éditer :
$ cd /opt/local/etc/nginx
$ sudo cp mime.types.example mime.types
$ sudo cp nginx.conf.example nginx.conf
$ sudo cp fastcgi_params.example fastcgi_params
$ sudo vim nginx.conf
Vérifiez que le répertoire root de l’hôte prédéfini est valide.
Installation de MySQL
$ sudo port install mysql5-server
L’instance doit être initialisée :
$ sudo /opt/local/bin/mysql_install_db5 --user=mysql
Installation de PHP
$ sudo port install php5 +fastcgi +pear
$ sudo port install php5-mysql
Installation de PHPMyAdmin
$ sudo port install phpmyadmin
Si besoin, copiez le répertoire /opt/local/www/phpmyadmin (ou faites un lien symbolique) vers le répertoire web racine.
Configuration de Nginx
Le mode d’exécution CGI est nécessaire pour Nginx et son module FastCGI. Il faut également créer le fichier php.ini :
$ cd /opt/local/etc/php5
$ cp php.ini-production php.ini
Pour le support FastCGI/PHP, je vous invite à consulter mon article traitant de ce sujet (et la configuration de Nginx pour le support PHP). Il faudra installer le port spawn-fcgi :
$ sudo port install spawn-fcgi
Concernant le script FCGI-PHP, j’utilise une socket UNIX dans /opt/local/var/run/nginx/.
A présent que tout est configuré, il convient de lancer les services. Il existe deux méthodes : la méthode manuelle par scripts start/stop et la méthode launchd. Si la seconde permet d’automatiser le lancement automatique, la première est préférable pour une station de développement, notamment en cas d’erreur dans le fichier de configuration Nginx.
Le script de démarrage est le suivant :
$ vim /opt/local/etc/nginx/start.sh
1#!/bin/sh
2/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper start
3nginx
4/opt/local/etc/nginx/fcgi-php.sh start
Le script d’arrêt :
$ vim /opt/local/etc/nginx/stop.sh
1#!/bin/sh
2
3/opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper stop
4kill `cat /opt/local/var/run/nginx/nginx.pid`
5/opt/local/etc/nginx/fcgi-php.sh stop
Si vous préférez la méthode launchd :
$ sudo launchctl load -w /opt/local/etc/LaunchDaemons/org.macports.mysql5/org/macports.mysql5.plist
$ sudo launchctl start org.macports.mysql5
$ sudo launchctl load -w /opt/local/etc/LaunchDaemons/org.macports.nginx/org.macports.nginx.plist
$ sudo launchctl start org.macports.nginx
Le script FCGI-PHP est à lancer manuellement (cf scripts start/stop).
Une fois le serveur MySQL en exécution, n’oubliez pas de modifier le mot de passe root :
$ mysqladmin5 -u root password 'new-password'
Un test de navigation sur http://localhost doit valider l’installation de Nginx. Créez un fichier PHP avec une sortie phpinfo () pour valider l’interprétation PHP-CGI.
Votre Mac dispose à présent d’une suite web complète.