LinuxSystème

LEMP Debian 9 – Linux, Nginx, MySQL, and PHP

Ce tutorial va vous guider pour l’installation de NGINX, MySQL, PHP (LEMP) sur Debian 9 Stretch.

Comme vous le savez déjà certainement, LEMP est l’acronyme de Linux, NGINX (engine X), MySQL/MariaDB, PHP/Perl/Python. Pour cet article, j’utilise la configuration suivante :

  • Système d’exploitation : Debian 9 Stretch
  • le seveur web NGINX
  • MariaDB
  • le langage de script PHP 7.0

 

Exemple : fichier sources.list

Ci-dessous un exemple de contenu du fichier sources.list pour Debian 9 « Stretch ».

deb http://deb.debian.org/debian stretch main

deb-src http://deb.debian.org/debian stretch main

deb http://deb.debian.org/debian-security/ stretch/updates main

deb-src http://deb.debian.org/debian-security/ stretch/updates main

deb http://deb.debian.org/debian stretch-updates main

deb-src http://deb.debian.org/debian stretch-updates main

 

Etape 1 –Installation du Serveur WEB

Tout d’abord nous allons mettre à jour les dépôts :

sudo apt-get update

Une fois les dépôts mis à jour on va pouvoir installer le premier logiciel qui est NGINX pour cela :

sudo apt-get install nginx

Normalement l’installation se passe correctement. Il suffit donc de rentrer l’IP de votre debian sur un navigateur WEB ou alors votre DNS s’il est configuré.

http://IP_OU_DNS

 

Etape 2 –Installation de php7.0

Nginx contrairement à APACHE n’a pas de traitement PHP natif pour y remédier on à besoin

d’installer fpm, fpm signifie « gestionnaire de processus fastCGI » les requêtes PHP passeront donc vers ce logiciel pour le traitement. On va devoir aussi installer un paquet supplémentaire à PHP pour

qu’ils puissent communiquer avec MySQL.

On va commencer par installer PHP ensuite on installera les modules supplémentaires pour cela :

sudo apt-get install nginx php7.0-fpm php7.0-gd php7.0-mysql php7.0-cli php7.0-common php7.0-curl php7.0-opcache php7.0-json php7.0-imap php7.0-mbstring php7.0-xml

 

Configuration de PHP 7.0 FPM – Nginx

La configuration de Nginx est dans /etc/nginx/nginx.conf que nous ouvrons maintenant:

nano /etc/nginx/nginx.conf

Commencez par définir le keepalive_timeout sur une valeur comme 2 secondes:

[...]
   keepalive_timeout 2;
[...]

Les hôtes virtuels sont définis dans les conteneurs du serveur {}. Le vhost par défaut est défini dans le fichier /etc/nginx/sites-available/default

nano /etc/nginx/sites-available/default
[...]
server {
 listen 80 default_server;
 listen [::]:80 default_server;

 # SSL configuration
 #
 # listen 443 ssl default_server;
 # listen [::]:443 ssl default_server;
 #
 # Note: You should disable gzip for SSL traffic.
 # See: https://bugs.debian.org/773332
 #
 # Read up on ssl_ciphers to ensure a secure configuration.
 # See: https://bugs.debian.org/765782
 #
 # Self signed certs generated by the ssl-cert package
 # Don't use them in a production server!
 #
 # include snippets/snakeoil.conf;

 root /var/www/html;

 # Add index.php to the list if you are using PHP
 index index.php index.html index.htm index.nginx-debian.html;

 server_name _;

 location / {
 # First attempt to serve request as file, then
 # as directory, then fall back to displaying a 404.
 try_files $uri $uri/ =404;
 }

 # pass PHP scripts to FastCGI server
 #
 location ~ \.php$ {
 include snippets/fastcgi-php.conf;

 # With php-fpm (or other unix sockets):
 fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 # With php-cgi (or other tcp sockets):
 # fastcgi_pass 127.0.0.1:9000;
 }

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 #
 location ~ /\.ht {
 deny all;
 }
}
[...]

  • name_server _; en fait un catchall par défaut vhost (bien sûr, vous pouvez aussi spécifier un nom d’hôte ici, comme www.example.com)
  • J’ai ajouté index.php à la ligne d’index. root/var/www/html; signifie que la racine du document est le répertoire /var/www/htm
  • La partie importante pour PHP est la strophe location ~ \ .php $ {}. Décommettez-le comme indiqué ci-dessus pour l’activer. Il y a deux lignes fastcgi_pass incluses, décommettez simplement celle du fichier php-7.0-fpm.sock

Maintenant, sauvegardez le fichier et rechargez Nginx:

sudo service nginx restart

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

et définissez cgi.fix_pathinfo = 0:

[...]
; 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
[...]

Et maintenant on redémarre php
sudo service php7.0-fpm restart

Vérification du bon fonctionnement de PHP

L’emplacement des fichiers web publiés par le vHost Nginx par défaut est /var/www/html.
On y va et on ajoute le petit fichier phpinfo.php

cd /var/www/html

sudo nano phpinfo.php

Puis on ajoute le code suivant dans le fichier phpinfo.php que l’on vient de créer

<?php   phpinfo(); ?>

Sur votre navigateur à l’adresse http://ip_serveur_ou_dns/phpinfo.php

Vvous devriez voir apparaitre la page phpinfo générée par php7.0 ce qui nous indique que tout fonctionne bien.

 

Etape 3 – Installation de la Base de Données :

Maintenant on va pouvoir installer MySQL.

MySQL va permettre une gestion de la base de données pour stocker et gérer les données du site WEB. On peut l’installer en faisant :

sudo apt-get install mysql-server

 

Normalement durant l’installation il va demander de fournir un mot de passe root. N’oubliez pas ce mot de passe. Je propose de créer un utilisateur MySQL pour ne pas utiliser l‘utilisateur root :

Pour cela rentrez la commande :

mysql -p

Les commandes suivantes permettent de créer l’utilisateur websdis29 qui pourra ce connecter de n’importe quelle machine. Et aura accès à toute les bases de données:

CREATE USER websdis29@'%' IDENTIFIED BY &782YzEXg-m';

GRANT ALL PRIVILEGES ON *.* TO 'websdis29'@'%';

FLUSH PRIVILEGES;

Etape 4 –Installation d’Adminer

Adminer permet la gestion de la base de données comme PHPMyAdmin mais en plus soft pour l’installer il suffit de placer un fichier PHP dans votre répertoire WEB.

Pour cela faite cette commande dans votre répertoire WEB :

wget https://github.com/vrana/adminer/releases/download/v4.6.2/adminer-4.6.2.php

Il vous suffira de renommer le fichier en adminer.php pour plus de simplicité :

cp adminer-4.6.2.php adminer.php

 

http://ip_serveur_ou_dns/adminer.php

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *