Installation et configuration de Nginx + PHP-fpm dans Debian

by Nataliya Oteir
Installation et configuration de Nginx + PHP-fpm dans Debian
star 5
0
Lire 6 min.

Nginx est un serveur web qui a été lancé en 2004. Ce serveur est facile à utiliser, mais malgré cela, il gère parfaitement un grand nombre de connexions. Cette caractéristique est due à son architecture interne. À l'origine, il a été conçu comme un serveur exécutant du contenu statique (ce qu'on appelle un serveur cache). Contrairement à Apache, Nginx ne dispose pas d'un interpréteur intégré pour gérer les demandes de contenu dynamique.

Cela nécessite une interaction supplémentaire entre le serveur web et l'application. Le gestionnaire de processus PHP-FPM (FastCGI) résout ce problème avec succès. Le point important est qu'en travaillant avec PHP, le liant Nginx + PHP-FPM se révèle moins productif qu'Apache + php_mod.

Par conséquent, si votre serveur a des exigences de performance élevées pour PHP, il est préférable de considérer le bundle apache + php_mod. Un autre point important est que la configuration de Nginx demande plus d'efforts que celle d'Apache.

Cet article traite de l'installation et de la configuration simple du serveur Nginx en conjonction avec le gestionnaire de processus PHP-FPM dans Debian 8. Toutes les opérations sont effectuées sous les privilèges de l'utilisateur root.

Tout d'abord, vous devez effectuer une mise à jour :

apt-get update

Ensuite, nous installons Nginx :

apt-get -y install nginx

Après l'installation, nous allons tester le serveur. Pour ce faire, il suffit d'ouvrir l'adresse du navigateur web de notre serveur. Le contenu suivant sera ouvert :

Il s'agit de la page standard du plug-in pour Nginx. L'étape suivante consiste à installer php5-fpm. C'est très simple :

apt-get -y install php5-fpm

Ensuite, vous devez procéder à l'installation. Tout d'abord, configurez le serveur Nginx. Le fichier de configuration se trouve dans le répertoire /etc/nginx/nginx.conf.

Ouvrez ce fichier. Nous utilisons l'éditeur de texte vi, mais vous pouvez utiliser tout autre éditeur qui vous convient.

vi  /etc/nginx/nginx.conf

Comprenons un peu la structure du fichier lui-même. L'ensemble du fichier est quelque peu similaire au code du programme. Il contient des directives. Elles sont divisées en deux types :

  • Simple - une chaîne de caractères avec des opérateurs se terminant par le symbole " ;". Par exemple : pid /run/nginx.pid ;
  • Block - une directive contenant des paramètres supplémentaires placés entre crochets {}.

D'autres directives peuvent être placées entre accolades. Dans ce cas, on parlera de contexte, et toutes les directives qui se trouvent dans le fichier de configuration mais qui ne sont pas placées entre crochets sont dans le contexte global ou le contexte dit principal.

Les chaînes marquées du symbole # sont des commentaires et ne sont pas prises en compte dans la configuration.

Comme vous pouvez le voir, le fichier contient une directive :

include /etc/nginx/sites-enabled/*;

Cette directive indique que ce fichier de configuration inclut tous les fichiers de configuration du répertoire /etc/nginx/sites-enabled/directory. Ce répertoire contient essentiellement des liens symboliques vers la configuration des hôtes virtuels (essentiellement les sites servis sur le serveur).

Nous devons maintenant configurer un hôte virtuel qui sera responsable de notre ressource la plus simple (test.net). Tout d'abord, nous allons lui créer un répertoire. Faisons en sorte qu'il s'agisse d'une commande :

mkdir -p /var/www/test.net/html

Maintenant, créons un fichier index.html dans ce répertoire avec le contenu suivant :

<html>
   <head>
      <title>Hello World</title>
   </head>
   <body>
      <h>This is a test page.</h>
   </body>
</html>

Maintenant, nous avons le contenu du site, et une page de tout. Pour ce site, vous devez créer un hôte virtuel. Copiez le fichier par défaut de l'hôte virtuel :

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net

Ensuite, ouvrez-le pour l'éditer. La directive listen a des options pour default_server. Un seul bloc peut être défini avec cette valeur, ce qui signifie que ce bloc servira les requêtes pour lesquelles rien de plus approprié n'est trouvé. Par conséquent, les lignes

listen 80 default_server;
listen [::]:80 default_server;

vous devez les supprimer de ce fichier. Ensuite, il faut configurer le répertoire racine qui contient le contenu de notre site. Pour ce faire, nous écrivons la directive root comme suit :

root /var/www/test.net/html;

La directive index suivante définit les fichiers à utiliser comme fichiers d'index. L'ordre de vérification des fichiers correspond à l'ordre du fichier de configuration. Cette directive s'écrit comme suit :

index index.html index.htm index.nginx-debian.html;

La directive server_name suivante spécifie le nom du serveur. Comme valeurs, nous spécifions le nom de domaine et l'alias lorsque le nom de domaine est spécifié avec le préfixe www.

server_name test.net www.test.net;

Ensuite, il suffit de spécifier une directive location qui définit la configuration du site en fonction du nom de l'URI spécifié dans la requête. Dans notre cas, elle sera simple :

location / {
   try_files $uri $uri/ =404;
}

Cela signifie que les fichiers seront d'abord vérifiés, puis les répertoires, et si rien de convenable n'est trouvé, le site renverra un message "Not Found" (404).

Tout cela se passe dans le fichier de configuration. Son contenu final est le suivant :

#cat /etc/nginx/sites-available/test.net
server {
     root /var/www/test.net/html;
     index index.html index.htm index.nginx-debian.html;
     server_name test.net www.test.net;
     location / {
           try_files $uri $uri/ =404;
     }
}

Toutes les autres directives et leurs valeurs peuvent être lues dans la documentation officielle de Nginx, qui est ici http://nginx.org/en/docs/.

Nous avons maintenant le contenu du site et son fichier de configuration. Il reste à l'inclure. Pour cela, créez un lien symbolique :

ln -s /etc/nginx/sites-available/test.net /etc/nginx/sites-enabled/

Redémarrez le serveur pour que les modifications soient effectives :

/etc/init.d/nginx restart

Vérifions le fonctionnement de la ressource créée.

Pour ouvrir une page, il peut être nécessaire d'ajouter une ligne au fichier hosts de l'ordinateur à partir duquel vous vérifiez :

xxx.xxx.xxx.xxx test.net

Где xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Файл hosts, находится :

  • C:\NWindows\NSystem32\Ndrivers\etc (в Win7) ;
  • /etc/hosts (в Debian).

Nous avons installé Nginx et php5-fpm et créé le site le plus simple. L'étape suivante consiste à configurer PHP et à l'appliquer à Nginx.

Tout d'abord, nous allons créer une page avec du code PHP sur notre hôte virtuel. Créons le fichier /var/www/test.net/html/info.php comme suit :

<?php
phpinfo();
?>

Ouvrons maintenant cette page dans le navigateur http://test.net/info.php

Mais qu'en est-il de l'exécution du code PHP ? Un code PHP que nous n'avons pas exécuté car l'interpréteur PHP n'est pas configuré dans Nginx. C'est ce que nous allons faire.

Ouvrez notre fichier de configuration /etc/nginx/sites-available/test.net. Ajoutez la directive block suivante :

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Cette directive décrit les paramètres de traitement des requêtes vers les fichiers PHP. Je ne décrirai pas chaque paramètre et sa valeur. Ces informations peuvent être trouvées dans la documentation officielle ici http://nginx.org/en/docs/dirindex.html

Notre fichier de configuration est maintenant le suivant :

server {
root /var/www/test.net/html;
index index.html index.htm index.nginx-debian.html;
server_name test.net www.test.net;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Sauvegardez les modifications apportées au fichier et redémarrez notre serveur Nginx.

/etc/init.d/nginx restart

Essayons à nouveau d'ouvrir http://test.net/info.php. Le résultat devrait être le suivant :

J'ai marqué les informations dans la capture d'écran qui indiquent l'utilisation du gestionnaire FPM.

En effet, la configuration la plus simple du serveur Nginx + PHP-FPM est terminée. Le site le plus simple est créé et configuré pour fonctionner avec PHP.

Voir l'article suivant sur la configuration de PHP-FPM.

Nouveaux postes

VAT

  • Other

    Other

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    %
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • Other
  • canada
  • poland
  • european-union
  • france
  • germany
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria