Installer Nginx avec mysql et PHP7-FPM sur Debian 9 Stretch

Vous avez un VPS, un hébergement ou un serveur  local sous DEBIAN, vous voulez créer un blog, nous allons ici vous montrer comment installer Nginx, Msql et PHP 7, tous ce qu’il vous faut pour installer un serveur web.

On partira que votre Debian 9 est installé.

Donc,  on va installer un serveur web :

Tout d’abord on va mettre à jour le système d’exploitation par défaut je considère que vous êtes connecté en root (c’est pas bien, je sais, on verra plus tard comment faire autrement) :

Cette commande va mettre à jour la liste des paquets disponibles :
apt-get update
Cette commande va mettre à jour votre système d’exploitation
apt-get upgrade
On installe maintenant Nginx
apt-get install nginx
Voilà ça c’est  fait, on va maintenant installer MySQL !
MySQL va vous demander notamment de saisir le mot de passe de l’utilisateur root, le root de MySQL pas celui de votre serveur.µ
apt-get install mysql-server mysql-client mysql-common
A présent on va installer notre paquet PHP7-FPM avec la commande qui suit :
apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-curl php7.0-json php7.0-gd php7.0-mcrypt php7.0-msgpack php7.0-memcached php7.0-intl php7.0-gmp php7.0-geoip php7.0-mbstring php7.0-xml php7.0-zip
Attention les paquets installés au-dessus sont un minimum vous pouvez bien entendu en ajouter d’autres par la suite.

Configurer nginx pour utiliser PHP7-FPM

Vous allez voir la partie un peu plus compliqué de cet article.
En effet contrairement à une installation avec apache et PHP5, PHP7-FPM ne fonctionne pas tout de suite avec nginx.
Pour qu’il soit pris en compte vous allez devoir modifier très légèrement votre configuration.

Avec Nano, vous allez éditer votre fichier de configuration nginx du site par défaut via la commande :
nano /etc/nginx/sites-available/default
Ajoutez une section « location » pour les fichiers PHP comme suit (en gras dans le code ci-dessous) :

server {

listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name localhost;

location / {

# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules

}

location ~ .php$ {

include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;

}

}

Ce que vous venez de faire c’est d’ajouter une règle pour tous les fichiers PHP, il devront utiliser le fastcgi_pass de PHP7.
Car PHP7-FPM est un fastcgi avec un service qui tourne en permanence sur le serveur pour écouter les demandes qui lui sont adressés.

On a presque terminé ! Vous allez maintenant modifier le fichier php.ini :
nano /etc/php/7.0/fpm/php.ini
Il faut rechercher dans le fichier le paramètre suivant : cgi.fix_pathinfo=0
Si il y a un ; devant la ligne retirez le et assurez vous que la valeur est bien de 0.
Le but de le mettre à 0 va vous éviter beaucoup de soucis dans vos applications web car les chemins d’appels seraient différent avec une valeur à 1.

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0

Pour finir on va relancer nos deux services que sont PHP7-FPM et nginx pour qu’ils prennent en comptes les modifications :

service php7.0-fpm reload

service nginx reload

La différence différence entre reload et restart.
Reload va simplement recharger la configuration du service sans l’interrompre.
Alors que restart va interrompre le service avant de le redémarrer.
En production le restart va s’utiliser que dans des cas très rares.

Il nous reste plus cas tester que tout fonctionne pour cela on va créer le fichier suivant :

nano /var/www/html/info.php

On va mettre à l’intérieur le code qui suit (qui a simplement pour but d’afficher le phpinfo) :

<?
phpinfo();
?>

Si vous voyez apparaître ceci c’est que le serveur et PHP7 fonctionne :

Si jamais vous avez le code source qui s’affiche il y a une erreur quelque part, n’hésitez pas à me demander !

Configuration pour l’envoie d’e-mail

Pour l’instant votre serveur est incapable via PHP d’envoyer un e-mail…
On va remédier à cela très facilement en installant sendmail via la commande suivante :

apt-get install sendmail

On va apporter des modifications sur le fichier php.ini

nano /etc/php/7.0/fpm/php.ini

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.