Projet Zatovo
Création d'un site web complet pour une association, incluant base de données et gestion dynamique.
Crafting Powerful Web Applications.
Développement Web • Systèmes &
Réseaux • Solutions numériques.
Étudiant en BTS SIO SLAM (2025–2027) à Charles de Foucauld, Brest.
Passionné par le développement web et les systèmes, je suis curieux, ambitieux et déterminé.
Création d'un site web complet pour une association, incluant base de données et gestion dynamique.
Mise en place de machines virtuelles et synchronisation sécurisée avec Syncthing et clés de sécurité.
Guide complet pour comprendre et installer la stack LEMP (Linux, Nginx, MariaDB, PHP).
Contexte : Création d’un site web pour l’association Zatovo.
Objectif : Sécuriser et optimiser les environnements de travail.
LEMP est l’une des stacks les plus populaires pour faire fonctionner un site internet, possédant de très bonnes performances et des fonctionnalités récentes. C’est un pack d’outils incluant un serveur web, une base de données, et un langage de programmation, le tout fonctionnant nativement avec chaque distribution Linux. Cette stack logicielle peut également fonctionner sous Windows ou Mac.
LEMP est un acronyme signifiant :
Héberger son propre serveur web est généralement une bonne idée pour les sociétés, les administrateurs systèmes, et les développeurs web. Cela apporte certains avantages par rapport à une solution d’hébergement mutualisée qui possède certaines limites :
Bien sur, cela requiert quelques compétences techniques. Il vous faudra installer, configurer, et maintenir vos serveurs, cela demande plus de travail et de temps qu’une solution d’hébergement mutualisée. Néanmoins, cela est fortement recommandé pour les personnes qui sont prêtes à investir un peu de temps et qui ont (ou souhaitent acquérir) des compétence en administration système.
LEMP n’est pas la seule solution possible pour héberger un site web. Il existe de nombreuses stacks, selon votre système d’exploitation et vos composants. Comme LEMP, ils incluent pour la plupart un serveur web, une base de données et un langage de programmation. Voici une liste non exhaustive de solutions existantes :
Afin de choisir celui qui vous correspond le plus, le système d’exploitation et le langage de programmation sont souvent les 2 prérequis à considérer en priorité.
LEMP est une déclinaison de LAMP, ce qui signifie que choisir LEMP plutôt que LAMP revient à choisir Nginx à qu’Apache. Les 2 sont fonctionnels, performants et massivement utilisés en tant que serveurs web, il n’y a donc pas de meilleur choix dans l’absolu. Pour un usage classique, cela dépend principalement de vos préférences personnelles.
Comme Lighthttpd avant lui, Nginx est un serveur léger et moderne, offrant de très bonnes performances et implémentant généralement de nouvelles fonctionnalités plus rapidement qu’Apache (comme TLS 1.3).
Il a été conçu dans le but de palier aux principaux défauts d’apache. Il possède une approche asynchrone et non bloquante, au lieu d’un concept basé sur des process et des threads. Cela signifie que Nginx ne créé pas de nouveau process pour chaque requête et obtient donc de meilleures performances (spécialement sous une charge conséquente). Il inclut également les modules lors de sa compilation, et possède un module PHP dans son cœur.
De mon avis, Nginx est généralement un meilleur choix du à son design et ses performances, sauf si vous possédez de solides connaissances d’Apache, ou avez des besoins très spécifiques.
MariaDB et Mysql sont tous deux utilisés dans les stacks LEMP et LAMP. MariaDB est un fork de Mysql, créé par Michal Widenius (également créateur de Mysql), au moment du rachat de Mysql (possédé par Sun) par Oracle. La communauté libre était à l’époque inquiète qu’Oracle puisse changer la licence de Mysql, et a donc créé un fork pour s’assurer que celui ci reste libre et ouvert. MariaDB est sous licence GPLv2 (GNU General Public Licence 2).
MariaDB est entièrement compatible avec Mysql, ce qui signifie qu’il fonctionne exactement de la même manière. Toutes les commandes et options sont identiques (à l’exception des nouvelles fonctionnalités développées par Oracle et réservées à la version commerciale), à la différence qu’elles sont nommées mariadb au lieu de mysql.
Pour installer la stack LEMP, nous allons installer séparément plusieurs serveurs (services), et ensuite les configurer :
Avant de commencer, assurez vous que votre serveur d'entrainement (CT-NX-SIOXXX) est à jour :
# apt update && apt upgrade
Maintenant que le serveur est "up-to-date" (à jour)... Nous allons en faire une sauvegarde avant de nous lancer définitivement dans l'installation. A cette fin, nous utiliserons le script de Backup fourni sur votre serveur:
# askforBACKUP.sh
TOUT EST PARFAIT... Nous pouvons commencer !
Nous utiliserons la version de Nginx provenant des dépôts officiels de votre distribution, puis optimiserons certaines valeurs par défaut dans le fichier principal de configuration :
apt install nginx
Nous allons à présent "tuner" (affiner) quelque peu la configuration de notre Serveur Web.
#nano /etc/nginx/nginx.conf
#Nous allons recopier les 6 lignes suivantes dans la section "http"
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 16k;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
Redémarrez maintenant le service pour appliquer les changements :
#service nginx restart
PHP 8.x est la version fournie par défaut sous Ubuntu.
#apt install php8.1-fpm php8.1-mysql php8.1-common php8.1-gd php8.1-cli php8.1-curl php8.1-xml php8.1-zip php8.1-mbstring
Une fois installé, changez ces valeurs :
vi /etc/php/8.1/fpm/pool.d/www.conf
pm.max_children = 10
pm.max_requests = 200
vi /etc/php/8.1/fpm/php.ini
date.timezone = Europe/Paris //Indiquez votre timezone
upload_max_filesize = 8M
max_execution_time = 60
max_input_vars = 5000
Redémarrez maintenant le service pour appliquer les changements :
service php8.1-fpm restart
Maintenant, nous allons installer MariaDB. J’ai choisi dans ce tuto d’utiliser MariaDB plutôt que Mysql pour la pérennité de sa licence, mais celle ci étant un fork de la 2ème, les 2 fonctionnent de la même manière, vous devrez juste changer « mariadb-server » par « mysql-server » si vous souhaitez installer Mysql.
apt install mariadb-server
Par défaut, MariaDB n’est pas sécurisé et contient une base de données de test. Le paquet nous fournit un script à exécuter pour y remédier, donc n’oubliez surtout pas de lancer celui-ci après l’installation :
mysql_secure_installation
Suit alors une série de questions pour sécuriser votre installation.
Augmentez la taille du cache et des tampons InnoDB en modifiant ces valeurs :
vi /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
query_cache_limit = 2M
query_cache_size = 32M
innodb_buffer_pool_instances = 1
innodb_buffer_pool_size = 79M
[mariadb]
aria_pagecache_buffer_size = 2M
Enfin, redémarrez le service :
service mariadb restart
"Ultime étape"... Vous allez à présent, en vous appuyant sur votre savoir-faire, configurer votre serveur pour accueillir une solution de CMS Wordpress. Rappelez-vous le premier TP de l'année ;-)