Comment configurer PHP sur Nginx avec l’exemple fastCGI (PHP-FPM)

Pourquoi Nginx, PHP et fastCGI sont-ils si populaires ?

Nginx est le serveur Web http le plus apprécié de la communauté DevOps. Et les développeurs adorent le langage de programmation PHP car il leur permet de créer et de déployer rapidement des sites Web interactifs.

En tant que tel, il n’est pas étonnant que tant d’administrateurs système aient besoin de configurer Nginx, PHP et PHP-FPM sur les serveurs Linux et Windows.

Ce tutoriel rapide vous montre comment configurer PHP et Nginx sur Ubuntu Linux avec le gestionnaire de processus fastCGI (PHP-FPM) configuré comme moteur PHP de Nginx.

Comment configurer Nginx, PHP et PHP-FPM

Pour installer et configurer fastCGI (FPM), PHP et Nginx sur Ubuntu Linux, suivez ces étapes :

  1. Effectuez une mise à jour apt-get pour garantir l’accès aux derniers packages.
  2. Installez Nginx sur Ubuntu.
  3. Installez le package php-fpm pour Nginx.
  4. Modifier le serveur défaut fichier de configuration pour prendre en charge PHP dans Nginx.
  5. Redémarrez le serveur Nginx configuré en PHP.
  6. Ajouter un fichier PHP à Nginx html annuaire.
  7. Testez la configuration PHP, Nginx et PHP-FPM.

Téléchargez les derniers packages Nginx et PHP

Chaque installation de logiciel dans Ubuntu devrait commencer par un rapide apt-get update et éventuellement un apt-get upgrade commande.

sudo apt-get update -y
Reading package lists... Done
sudo apt-get upgrade -y
Calculating upgrade... Done

Installer Nginx sur Ubuntu

Pour installer PHP sur Nginx, vous devez d’abord installer Nginx, ce que vous pouvez réaliser via un simple apt-get install commande:

sudo apt-get install nginx -y
The following Nginx packages will be installed:
libnginx-mod-http-geoip2 nginx-common nginx-core
Setting up nginx 1.18.0-6 ubuntu... Done

Vérifier le serveur Nginx en cours d’exécution

Pour vérifier la réussite de l’installation et de la configuration de Nginx sur Ubuntu, interrogez le statut du serveur HTTP :

sudo systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled;)
   Active: active (Nginx running)

Vous pouvez vérifier visuellement que la page de destination Nginx s’affiche sur http://localhost:80 d’un navigateur Web.

Installer PHP pour Nginx avec PHP-FPM

Pour installer PHP pour Nginx, utilisez la bibliothèque PHP-FPM. Vous pouvez installer le support PHP-FPM avec un autre apt-get install commande:

sudo apt-get install php8.1-fpm -y

Dans ce cas, nous avons installé la version 8.1 des packages PHP et PHP-FPM.

Une erreur courante consiste à installer le package PHP, et non PHP-FPM. Le problème avec cette approche est que contrairement à PHP-FPM, le package PHP installe le serveur HTTP Apache et son processus httpd, ce qui est en conflit avec Nginx.

Pourquoi une installation PHP de base nécessite-t-elle Apache ?

PHP nécessite l’une des trois dépendances pour exister sur une machine :

  • libapache2-mod-php
  • php-fpm
  • php-cgi

Une simple installation PHP utilise le module libapache2-mod-php par défaut, qui nécessite l’installation de la suite logicielle complète du serveur HTTP Apache. Pour éviter cela, installez le module php-cgi ou php-fpm pour Nginx.

Vérifier si PHP-FPM est en cours d’exécution

Une fois la configuration de PHP-FPM terminée, vérifiez s’il est en cours d’exécution :

sudo systemctl status php8.1-fpm
● php8.1-fpm.service - PHP 8.1 FastCGI Process Manager FPM for Ubuntu
  Loaded: loaded (/lib/systemd/system/php8.1-fpm.service)
  Active: active (php-fpm running)

Ajouter le support PHP à Nginx

Avec Nginx et PHP-FPM installés, vous devez modifier le fichier de configuration Nginx par défaut. Cela permet au gestionnaire de processus PHP FastCGI de gérer les requêtes qui ont une extension .php.

Le fichier Nginx par défaut peut être ouvert avec n’importe quel éditeur de texte. Cette commande l’ouvrira avec Nano :

sudo nano /etc/nginx/sites-available/default

Apportez les modifications suivantes à la configuration Nginx pour prendre en charge PHP et PHP-FPM sur le serveur :

  • Ajoutez index.php à la liste d’index.
  • Décommentez les scripts PHP dans le bloc d’entrée FastCGI.
  • Décommentez la ligne pour inclure snippets/fastcgi-php.conf.
  • Décommentez la ligne pour activer le fastcgi_pass et le php8.1-fpm. chaussette
  • Décommentez la section pour refuser tout accès aux fichiers Apache .htaccess.
Comment configurer PHP sur Nginx avec l’exemple fastCGI (PHP-FPM)

Pour configurer PHP, Nginx et FTP (fastCGI), vous devez mettre à jour le fichier de configuration Nginx.

Activer PHP dans le fichier de configuration de Nginx

La section serveur du fichier de configuration Nginx, PHP et PHP-FPM ressemblera à ceci une fois terminée. Les modifications sont mises en évidence en gras :

server {
  # Example PHP Nginx FPM config file
  listen 80 default_server;
  listen [::]:80 default_server;
  root /var/www/html;

  # Add index.php to setup Nginx, PHP & PHP-FPM config
  index index.php index.html index.htm index.nginx-debian.html;

  server_name _;

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

  # pass PHP scripts on Nginx to FastCGI (PHP-FPM) server
  location ~ .php$ {
    include snippets/fastcgi-php.conf;

    # Nginx php-fpm sock config:
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    # Nginx php-cgi config :
    # Nginx PHP fastcgi_pass 127.0.0.1:9000;
  }

  # deny access to Apache .htaccess on Nginx with PHP, 
  # if Apache and Nginx document roots concur
  location ~ /.ht {
    deny all;
  }
} # End of PHP FPM Nginx config example

Comment valider un fichier de configuration Nginx

La commande suivante valide le fichier de configuration Nginx mis à jour pour s’assurer que les modifications ne créent pas d’erreurs de syntaxe :

sudo nginx -t
nginx php config: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx php-fpm config: configuration file /etc/nginx/nginx.conf test is successful

Pour activer la configuration Nginx PHP fastCGI, redémarrez le serveur :

sudo systemctl restart nginx

Créer une page PHP dans Nginx

Après le redémarrage, PHP est entièrement activé sur Nginx. Pour le prouver, créez un fichier PHP dans Nginx /var/www/html dossier et testez pour vous assurer que la page s’affiche correctement sur le serveur.

Vous devrez peut-être modifier les autorisations sur le dossier avec un CHMOD commande afin d’y créer un fichier :

sudo chmod -R 777 /var/www/html

Ajoutez ensuite un nouveau fichier PHP au répertoire d’hébergement Web de Nginx. La façon la plus simple de le faire est d’effectuer un rapide echo commande:

echo "" >> /var/www/html/info.php

Cela crée le fichier PHP le plus basique en dehors d’un exemple “Hello World” que vous pourriez créer. Si vous n’aimez pas le echo commande, utilisez un éditeur pour créer un fichier nommé info.php dans le /var/www/html dossier avec le contenu suivant :


  phpinfo();
?>

Testez l’intégration Nginx, PHP

Avec la configuration de Nginx, PHP et le module PHP-FPM terminés, et un nouveau fichier nommé info.php ajouté au serveur Web, ouvrez simplement un navigateur sur http://localhost/info.php pour tester la configuration. La page d’info PHP, attestant du fait que l’installation sur Nginx de PHP 8.1, apparaîtra.

nginx php fpm installation réussie

Lorsque PHP, FPM et Nginx seront entièrement configurés, le serveur pourra rendre les pages PHP.

Commandes pour configurer PHP et Nginx dans Ubuntu

Passons rapidement en revue ce tutoriel PHP et Nginx. Voici toutes les commandes que nous avons utilisées pour activer le gestionnaire de processus fastCGI pour PHP dans Nginx :

  • sudo apt-get update -y
  • sudo apt-get upgrade -y
  • sudo apt-get install nginx -y
  • sudo systemctl status nginx
  • sudo apt-get install php8.1-fpm -y
  • sudo systemctl status php8.1-fpm
  • sudo nano /etc/nginx/sites-available/default
  • sudo nginx -t
  • sudo systemctl restart nginx
  • sudo chmod -R 777 /var/www/html
  • echo "" >> /var/www/html/info.php

Et c’est aussi simple que cela d’installer et de configurer le support fastCGI (FTP), Nginx et PHP sur votre serveur Web.

Leave a Comment