Nginx & PHP-FPM

Nginx est un serveur web dont les points forts sont la gestion du multitâche et une consommation base de ressources système.
Il peut aussi servir de proxy pour les protocoles HTTP, HTTPS, SMTP, POP3, et IMAP ou agir en tant que reverse proxy pour d'autres serveurs web tels que Gunicorn, Unicorn ou Tornado.

Nginx a été crée par Igor Sysoev en 2002 pour le site russe Rambler.
Il est écrit en C et est sous license BSD.Nginx tourne sur Unix, Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, et Microsoft Windows.

Installation

On va installer notre serveur web, php et php-fpm:
Debian:

aptitude install nginx php5 php5-fpm

Centos:

yum install epel-release
yum install nginx php php-fpm

FreeBSD:

#On se rend dans le port de php
cd /usr/ports/lang/php56/
#On configure en séléctionnant au moins fpm
make config-recursive
#On installe
make install clean
#On fait la même pour Nginx
cd /usr/ports/www/nginx
make config-recursive
make install clean
echo "nginx_enable='YES'">>/etc/rc.conf

Configuration

On commence par configurer le processeur php.
Pour des questions de sécurité, On modifie le fichier /etc/php.ini (usr/local/etc/php.ini pour FreeBSD) et on change la valeur de cgi.fix_pathinfo:

cgi.fix_pathinfo=0

Ensuite on modifie le fichier /etc/php-fpm.d/www.conf (/usr/local/etc/php-fpm.conf pour FreeBSD):
On commente la ligne :
listen = 127.0.0.1:9000
et a la place on rajoute:
listen = /var/run/php-fpm/php-fpm.sock

On modifie le fichier /etc/nginx/nginx.conf (/usr/local/etc/nginx/nginx.conf pour FreeBSD):
dans l'option index on rajoute index.php dans la liste (on peut aussi le faire dans la configuration des Vhosts)
Pour les Vhosts sur FreeBSD on va rajouter dans le fichier de conf nginx la ligne suivante:

include /usr/local/etc/nginx/vhosts/*; 

et on crée le répértoire vhosts avec les droits necessaires.

On crée un vhost dans /etc/nginx/conf.d/vhost.conf pour Centos /etc/nginx/sites-enabled/vhost.conf pour Debian et /usr/local/etc/nginx/conf.d/vhost.conf pour FreeBSD dans lequel on va rajouter les lignes suivantes:

vhost.conf
server {
    listen       80;
    server_name  192.168.0.194;
 
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;
 
    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
 
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

On redémarre nginx:

service nginx restart 

Une règle iptables est a ajouter afin d'accepter les connections entrantes sur le port 80.

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Voila, le serveur web est prêt a étre utilisé.

wiki/nginx.php.txt · Dernière modification: 2018/04/25 12:45 par root
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5