NGINX et PHP

NGINX, qui s’écrit tout en majuscules et se prononce EngineX, est un serveur Web moderne et efficace.

Installer Nginx

Rien de plus simple :

# apt-get update
# apt-get install nginx

Puis aller ensuite sur http://your_server_ip et vous devriez voir un “Welcome to nginx“ sur votre page d’accueil.

Commandes de bases

Les commandes de bases sont :

# systemctl stop nginx 
# systemctl start nginx
# systemctl restart nginx
# systemctl reload nginx
# systemctl enable nginx (pour qu’il soit bien lancé au redémarrage server)

Serveur racine par défaut

Le répertoire par défaut est /var/www/html (pour les versions installées depuis les dépôts debian/ubuntu) sinon dans dans /usr/share/nginx/html pour l’installation depuis le depot NGINX.

Si vous avez installé NGINX depuis son propre dépôt

Si vous avez installé NGINX depuis son dépôt il faudra refaire faire certaines configurations pour retrouver le même principe que sous Apache.

Création des répertoires enable-availabe

S’il n’existe pas (installation depuis le depot NGINX) il faudra les créer pour gérer le multisite.

# mkdir /etc/nginx/sites-enabled
# mkdir /etc/nginx/sites-available

Ouvir le ficher /etc/nginx/nginx.conf et rajouter à la fin :

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

Configuration de chaque bloc serveur

Tous les sites supplémentaires (hôtes virtuels dans Apache) devront être ajoutés en créant de nouveaux fichiers de configuration dans /etc/nginx/sites-available et par la suite créer un lien symbolique dans /etc/nginx/sites-enabled pour activer le site.

Exemple : un nouveau site nouveauSite.fr devra être configuré dans /etc/nginx/sites-available/nouveauSite.fr.conf.

Et être ensuite activé de la façon suivante, en créant un lien symbolique :

ln -s /etc/nginx/sites-available/www.exemple.org.conf `/etc/nginx/sites-enabled/

Il suffira de supprimer le lien symbolique /etc/nginx/sites-enabled/nouveauSite.fr.conf et relancer nginx pour désactiver le site

NOTE : Équivalent de a2ensite d’Apache.

Installer PHP

Nginx ne contient pas de PHP natif, il faudra donc installer php-fpm (fastCGI process manager).

# apt-get install php-fpm php-mysql 

Configuration de PHP

Ouvrir le php.ini de PHP :

# vim /etc/php/7.0/fpm/php.ini

Pour ajouter un niveau de sécurité nous allons interdire à PHP d’exécuter le premier fichier qu’il trouvera si le fichier index.php demeure introuvable. Nous allons changer la valeur à 0 et décommenter la ligne.

cgi.fix_pathinfo=0

Redémarrer PHP.

# systemctl restart php7.0-fpm

ou, s’il n’a jamais été encore lancé :

# service php7.0-fpm (re)start 

Configurer Nginx pour interpréter PHP

Ouvrir le fichier contenant la configuration générale des sites :

# vim /etc/nginx/sites-available/default

Le fichier ressemble par défaut à ceci :

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.html index.htm index.nginx-debian.html;

server_name _;

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

Nous allons y configurer le bloc PHP, ainsi tous les sites pourront en bénéficier

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;

server_name www.server_domain server_domain_or_IP;

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

location ~ \.php# {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}

vrai exemple :

Exemple réel :

server {
listen 80;
listen [::]:80;

server_name www.n0tes.fr n0tes.fr;

root /home/n0tes.fr/www/;
index index.php index.html index.htm;

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

location ~ \.php# {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}

Tester la configuration NGINX :

# nginx -t

Puis recharger la configuration :

# service nginx reload

Créer une page php

Dans un fichier à la racine de votre site web :

# vim /home/client1/site1.fr/info.php

Avec à l’intérieur :

<?php
phpinfo();
?>

En se rendant à cette adresse la page devrait afficher les informations du serveur.

Les erreurs :

Erreur 502 : Bad Gateway -> php n’est pas lancé !

Documentation

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04

> Partager <