nginx

Ngnix est un serveur http hyper performant surtout pour tous les contenus statiques, un reverse proxy permet au passage de faire du load balancing. c’est un serveur asynchrone performant et qui a l’avantage d’avoir une empreinte mémoire réduite qui augmente de façon linéaire contrairement a Apache. Que du bonheur pour un développeur.

PHP-FPM est nécessaire pour faire tourner PHP avec Nginx étant donnée qu’il n’existe pas de module PHP pour nginix. PHP-FPM c’est du Fast-CGI, nous avons donc 1 serveur de reverse proxy et un FastCGI Process Manager qui va executer les scripts PHP.

 

 

C’est parti pour l’installation sous un linux debian like.

Installation des packages : 

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo /etc/init.d/nginx start

La page par défaut est accessible sur http://localhost. Note : si vous avez installé apache qui tourne déjà il faut le stopper pour permettre a nginx d’utiliser le port 80, ou en définir un autre.

Maintenant passons a PHP, vous pouvez installer php 7.0 ou la 7.1Beta1 a vous de choisir en fonction de vos besoins.

sudo apt-get install -y language-pack-en-base
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get install php7.1 php7.1-fpm php7.1-cli php7.1-mbstring php7.1-xml php7.1-mcrypt php7.1-common

Configuration de nGnix : 

Le fichier de configuration se trouve dans le fichier de config : /etc/nginx/nginx.conf

Note : server_name _; représente le nom du vhost par défaut.

Nous allons chercher a créer un nouveau vhost sur ngnix et le configurer en reverse proxy vers php-fpm

server {
 listen 80;
 server_name domainName.local;
 root /PathTo/project/public;

 # config des logs
 access_log /PathTo/project/log/access.log;
 error_log /PathTo/project/log/error.log notice;

 # Pour servir les fichier static
 location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
 access_log off;
 expires max;
 }

 # transmet les requetes sur les scripts PHP en FastCGI a php-fpm
 location ~ \.php$ {
 include snippets/fastcgi-php.conf;
 fastcgi_pass unix:/PathTo/project/php7.0-fpm.sock;
 }
}

ici mon choix est d’utiliser les socket unix, car ngnix et php-fpm se trouve sur la même machine dans mon cas. par contre il y a la possibilité définir une adresse pour une connexion via tcp vers une autre machine utilisé dans le cas du loadbalancing.

fastcgi_pass 127.0.0.1:9000

Et relancer le chargement de la config de ngnix, une fois votre vhost configuré

sudo /etc/init.d/nginx reload

N’oublions pas de définir une nouvelle entrée dans /etc/hosts pour une resolution locale de votre domaine fictif.

127.0.0.1 domainName.local

 

Configuration de php-FPM :

Passons enfin a la configuration de php-fpm, il suffit de configurer un nouveau pool pour notre vhost ainssi que l’écoute sur la socket unix que nous avons definie dans la config du vhost de nginx

il suffit pour cela de créer une nouveau fichier de configuration

sudo vim /etc/php/7.0/fpm/pool.d/domainName.conf

et d’y ajouter les lignes suivantes :

[domainName.local]

 listen = /PathTo/project/php7.0-fpm.sock
 listen.backlog = -1
 listen.owner = www-data
 listen.group = www-data
 listen.mode=0660

 ;Unix user/group of processes
 user = user
 group = group

;Strategie de gestion des processus fils.
 pm = dynamic
 pm.max_children = 75
 pm.start_servers = 10
 pm.min_spare_servers = 5
 pm.max_spare_servers = 20
 pm.max_requests = 500

 ; Pass environment variables
 env[HOSTNAME] = $HOSTNAME
 env[PATH] = /usr/local/bin:/usr/bin:/bin
 env[TMP] = /tmp
 env[TMPDIR] = /tmp
 env[TEMP] = /tmp

Note: Je ne rentre pas ici dans le détail de la configuration de php-FPM.

Maintenant vous pouvez  lancer php-fpm

sudo /etc/init.d/php-fpm start

Creez un script php avec l’instruction “phpinfo();” pour tester la bonne configuration

vim /PathTo/project/info.php

Lancer maintenant votre navigateur favori pour vérifier le bon fonctionnement avec l’url suivante : http://domainName.local/info.php

Si vous avez la page de config de php c’est que votre installation est réussi.

 

 

 

 

 

 

 

 

 

 

 

 

 

Advertisements