Nginx
26 avril 2016

PHP-FPM et NGINX sur Mac OS X El Capitan

Par Jean-Marc Amon

Etant donné que nous allons utiliser Homebrew pour installer PHP et NGINX, il faut bien commencer par l’installer mais pour ça assurez-vous d’avoir déjà Xcode

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Nginx

Installez NGINX avec Homebrew

Utilisez cette commande  pour installer nginx .

brew install nginx

Si vous souhaitez que Nginx démarre automatiquement lorsque vous démarrer votre Mac il va falloir l’ajouter aux LaunchAgents

ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents

Si vous avez besoin d’un contrôle total sur votre serveur web Nginx vous pouvez utiliser ces commandes pour démarrer, arrêter et redémarrer NGINX.

sudo nginx            # start
sudo nginx -s stop    # stop
sudo nginx -s reload  # restart

Vous pouvez constater que Nginx est bien installé en visitant localhost sur le port 8080 dans votre navigateur http://localhost:8080

Configuration de NGINX

Nous devons modifier le fichier de configuration

Premièrement, nous devons effectuer des modifications dans notre fichier config personnellement je suis fan de  vim  mais pouvez utiliser ce que vous voulez.

vim /usr/local/etc/nginx/nginx.conf

Mon fichier nginx.conf doit ressembler à cela

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    include       sites-enabled/*; # load virtuals config
    sendfile        on;
    keepalive_timeout  65;

    # gzip  on;
    # gzip_disable "MSIE [1-6].(?!.*SV1)";

    server {
        listen       8080;
        server_name  localhost;

        location / {
            root  /Users/{username}/{webfolder};
            try_files  $uri  $uri/  /index.php?$args ;
            index  index.php;
        }

        # configure *.PHP requests

        location ~ .php$ {
            root  /Users/{username}/{webfolder};
            try_files  $uri  $uri/  /index.php?$args ;
            index  index.html index.htm index.php;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_split_path_info ^(.+.php)(/.+)$;
            fastcgi_intercept_errors on;
            include fastcgi_params;
        }
    }
}

Maintenant, vous avez besoin de changer {username} par votre nom utilisateur Mac OS X, et {webfolder} par le répertoire de votre site.

Configuration des hôtes virtuels

Tout d’abord, vous devez créer 2 nouveaux repertoires

mkdir /usr/local/etc/nginx/sites-available
mkdir /usr/local/etc/nginx/sites-enabled
  • `sites-available` contient tous vos fichiers de configuration des hôtes virtuels
  • `sites-enabled` contient les hôtes virtuels actifs

La prochaine étape est de créer votre premier fichier de virtualhost.

nano /usr/local/etc/nginx/sites-available/{hostfile}

Renommer {hostfile } par votre nom de domaine, par exemple. test.local et éditer son contenu comme suit :

server {
  listen                *:8080;
  server_name           {test-domain};
  #access_log           /Users/{username}/{webfolder}/{hostfile}/log/access.log;
  #error_log            /Users/{username}/{webfolder}/{hostfile}/log/error.log;
  root  /Users/{username}/{webfolder}/{hostfile};
  index  index.html index.htm index.php;

  location / {
    try_files  $uri  $uri/  /index.php?$args;
  }

  location ~ .php$ {
    try_files  $uri  $uri/  /index.php?$args;

    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+.php)(/.+)$;
    fastcgi_intercept_errors on;
    include fastcgi_params;
  }
}

Une fois le fichier enregistré nous allons activer l’hôte virtuel avec un simple lien symbolique

ln -s /usr/local/etc/nginx/sites-available/{hostfile} /usr/local/etc/nginx/sites-enabled/{hostfile}

Redémarrez NGINX maintenant sudo -s nginx reload  et lancé dans le navigateur http://{test-domain}:8080

Ajoutez le domaine dans le fichier hosts de OS X  sudo nano /etc/hosts

127.0.0.1 {test-domain}

Installer  PHP-FPM de Homebrew

Executez cette commande pour pouvoir installer PHP

brew tap homebrew/dupes && brew tap homebrew/versions && brew tap homebrew/homebrew-php

Maintenant, nous sommes prêts à installer PHP-FPM.

brew install -v --with-fpm --with-mysql --disable-opcache --with-imap php56

Cette commande va dire à Homebrew d’installer php56-fpm  et le support de MySQL, Nous ldemandons ensuite à Mac OS X de lancer le processus au démarrage

ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents