[Ubuntu 18.04] Serveur LEMP (Nginx, MySQL, PHP7)

Ubuntu dispose dans ses dépôts de nombreux paquets presque prêts à l’emploi et dans des versions récentes. L’objectif de cet article est d’installer un serveur « LEMP », à savoir un serveur web, avec son serveur SQL et le language PHP7.

Avant toute installation, il faut modifier le fichier « sources.list » en y ajoutant les dépôts « universe ». De préférence, il faut ajouter « universe » à toutes les lignes de votre fichier sources.list.

nano /etc/apt/sources.list
http://.../ main universe

Une fois la modification effectuée, mettez à jour votre OS pour prendre en compte la nouvelle option pour les dépôts. L’installation des paquets pour le serveur LEMP sera possible.

apt update && apt install nginx mysql-server

Nginx est le serveur web, MySQL-Server porte bien son nom. Vous remarquerez qu’il n’y a pas encore l’installation de PHP7 – c’est volontaire, pour éviter d’installer trop de paquets et permettre aussi une meilleure auto-configuration.
Lorsque les deux serveurs sont installés, vous pouvez lancer l’installation de PHP7 et avoir ainsi une auto-configuration fonctionnelle de PHP.

apt install php7.2-fpm --no-install-recommends

Quelques paquets complémentaires seront installés par cette commande, notamment PHP7.2 GD ou encore PHP7.2 MySQL, nécessaires pour le fonctionnement de PHP avec une base de données.

Note de la part de Thomas (jesuisadmin.fr) : il n’est pas nécessaire d’installer le paquet « php7.2 » avec Nginx, car il dépend de « libapache2-mod-php7.2 ». L’installation de « php7.2-fpm » seul est suffisant.

Le serveur SQL est installé mais n’est pas encore pleinement opérationnel. Il faut configurer quelques options de base avant de se lancer dans sont exploitation.

mysql_secure_installation

Un assistant va se lancer, vous demandant entre autre un mot de passe pour le compte root du serveur SQL, savoir s’il faut supprimer les tables/bases de données de démo… 


Nginx, dans sa configuration par défaut, utilise le fichier « /etc/nginx/sites-available/default ». Toutefois, ce dernier n’est pas prêt à l’exploitation de PHP. Voici le contenu du fichier de configuration à avoir de façon minimale pour exploiter PHP :

server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/site1-access.log;
error_log /var/log/nginx/site1-error.log;
root /var/www/html;
index index.php;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}

N’oubliez pas de recharger la configuration de votre serveur web, via un « systemctl reload nginx« , sans quoi la configuration que vous venez de saisir ne sera pas exploitée.

Pour être certain que PHP soit fonctionnel, vous pouvez effectuer un « systemctl status php7.2-fpm« , qui est censé vous donner l’état à l’instant T de votre service PHP7.2 (qui doit être en « active »).

Enfin, créons un fichier PHP pour s’assurer du bon fonctionnement :

touch /var/www/html/phpinfo.php
nano /var/www/html/phpinfo.php

## intérieur du fichier (une seule ligne) :
<?php phpinfo(); ?>

Dans un navigateur web, saisissez l’adresse IP de votre serveur puis le nom du fichier PHP – si tout est OK, vous devriez arriver sur cette page :

Si votre navigateur vous demande de télécharger le fichier .php, il s’agit alors d’un problème de configuration de votre serveur nginx – retournez dans le fichier « /etc/nginx/sites-available/default » pour contrôler la partie « location php ».

Julien H

Passionné depuis toujours par l'informatique, je transforme ma passion en expertise. J'utilise quotidiennement les outils et systèmes Microsoft. Je ne délaisse pas mon côté ouvert, notamment via l'utilisation des OS Debian et Archlinux. L'infosec m'ouvre les yeux sur les enjeux actuels et futurs de l'IT.

2 commentaires

  1. Bonjour,
    il n’est pas nécessaire d’installer le paquet php7.2 avec Nginx car il dépend de libapache2-mod-php7.2. Installer php7.2-fpm est suffisant.

    1. Salut Thomas,
      Merci pour ton retour ! J’ai toujours installé php7.2 avec php7.2-fpm, par défaut et par habitude. En refaisant le test, il est en effet possible de laisser uniquement php7.2-fpm sans le méta-paquet « php7.2 ». Je modifie l’article en conséquence !

Laisser un commentaire

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

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

Fermer
Fermer