Champ Valeur
Auteur·e Cédric Prin
Édition 2025-10-15
Durée 2 sessions
Taille des équipes 1-2 personnes
Correction correction pair à pair en salle

Barème

Critère Points
Mise à jour du système et installation de Nginx 1
Démarrage du service Nginx et vérification de la page par défaut 1
Création du dossier web et du fichier index.html 1
Rédaction du fichier de configuration et activation du site 3
Test de configuration (nginx -t) et rechargement du service 2
Gestion des permissions (création de groupe, chown, chmod) 1
Création du lien symbolique dans le home 1
Installation et démarrage de MariaDB 2
Exécution de mysql_secure_installation 2
Création de la base de données et gestion des utilisateurs (CREATE USER, GRANT, FLUSH PRIVILEGES) 3
Création de table (CREATE TABLE) et insertion de données 2
Requêtes SQL de base (SELECT *) et nettoyage de la base (TRUNCATE, DROP) 1
Total 20

Règlement

La réalisation de cet exercice est assujettie aux règles en vigueur dans l’école en matière de triche. Tricher vous expose à de graves sanctions.

Synopsis

Dans cette activité, vous devrez suivre une procédure détaillée pour installer et configurer Nginx (serveur web) et MariaDB (système de gestion de bases de données). L’objectif est de les familiariser avec les étapes d’installation, de vérification et de configuration de ces deux services essentiels sur un système Linux.

L’activité est conçue pour être réalisée sur les distributions Ubuntu ou Fedora, en tenant compte des différences entre leurs gestionnaires de paquets (apt et dnf).

Après avoir terminé leur propre installation, vous devrez vérifier la configuration d’un camarade.

Installation et configuration de Nginx

Mettre à jour la liste des paquets puis installe toutes les mises à jour disponibles :

# Sur ubuntu
sudo apt update
sudo apt upgrade

# Sur fedora
sudo dnf check-update
sudo dnf upgrade --refresh

Installer Nginx :

# Sur ubuntu
sudo apt install nginx

# Sur fedora
sudo dnf install nginx

Vérification du bon fonctionnement de Nginx

Lancer Nginx :

sudo systemctl start nginx

Dans un navigateur, écrivez http://localhost : la page devrait charger avec :

  • pour ubuntu, le titre “Welcome to nginx!”
  • pour fedora, le titre “Fedora Webserver Test Page”

Personnalisation de la page d’accueil

Créer le dossier qui va contenir les fichiers du site web :

sudo mkdir -p /var/www/my_site/html

Créer le fichier index.html :

sudo nano /var/www/my_site/html/index.html

Exemple du contenu :

<h1>Welcome to my site!</h1>

Créer le fichier de configuration :

# Sur ubuntu
sudo nano /etc/nginx/sites-available/my_site.conf

# Sur fedora
sudo nano /etc/nginx/conf.d/my_site.conf

Y écrire :

server {
    listen 80;
    server_name my_site;
    root /var/www/my_site/html;
    index index.html;
    autoindex on;
}

Sur Ubuntu, supprimer le fichier de configuration par défaut :

sudo rm /etc/nginx/sites-enabled/default

Sur ubuntu, ajouter la configuration créée précédemment :

sudo ln -s /etc/nginx/sites-available/my_site.conf /etc/nginx/sites-enabled/

Vérifier la validité de la configuration créée (corriger les erreurs si besoin) :

sudo nginx -t

Recharger Nginx :

sudo systemctl reload nginx

Dans un navigateur, écrivez http://localhost : la page devrait charger avec le contenu du fichier index.html créé.

Gestion des droits d’accès au contenu web

Créer un groupe :

sudo groupadd my-site

Ajouter l’utilisateur connecté au groupe :

sudo usermod -aG my-site $USER

Donner la possession du dossier du site web à l’utilisateur connecté et au groupe :

sudo chown -R $USER:my-site /var/www/my_site/html/

Définir les droits pour ce dossier :

sudo chmod -R 2775 /var/www/my_site/html/

Raccourci

Créer un lien symbolique :

ln -s /var/www/my_site/html/ ~/site-web

La commande cat ~/site-web/index.html doit afficher le contenu de votre index.

Installation et sécurisation de MariaDB

Installer MariaDB :

# Sur ubuntu
sudo apt install mariadb-server

# Sur fedora
sudo dnf install mariadb-server

Lancer MariaDB :

sudo systemctl start mariadb

Installation :

sudo mysql_secure_installation
  • appuyer sur entrée à : Enter current password for root
  • répondre n à : Switch to unix_socket authentification
  • répondre n à : Change the root password
  • appuyer sur entrée aux 4 questions qui suivent.

Premiers pas et commandes de base

Se connecter en local en tant que root :

sudo mysql

Créer une database :

CREATE DATABASE database1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Créer un utilisateur :

CREATE USER 'user1'@'localhost' IDENTIFIED BY '1234';

Donner les droits à l’utilisateur :

GRANT ALL PRIVILEGES ON database1.* TO 'user1'@'localhost';

Appliquer les droits :

FLUSH PRIVILEGES;

Se déconnecter :

exit

Se connecter en tant que user1 :

mysql -u user1 -p

Utiliser database1 :

USE database1;

Créer la table fruits (dans database1) :

CREATE TABLE fruits (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    color VARCHAR(30)
);

La table fruits a comme champs :

  • id :
    • INT : un nombre entier
    • AUTO_INCREMENT : qui s’incrémente automatiquement
    • PRIMARY KEY : clé unique pour chaque row
  • name :
    • VARCHAR(50) : une chaine de caractères de maximum 50 caractères
    • NOT NULL : qui ne peut pas être NULL (doit obligatoirement être défini)
  • color :
    • VARCHAR(30) : une chaine de caractères de maximum 30 caractères

Insérer deux nouvelles lignes (rows) :

INSERT INTO fruits (name, color) VALUES ('Banana', 'Yellow');
INSERT INTO fruits (name) VALUES ('Apple');

Sélectionner toute la table :

SELECT * FROM fruits;

Wipe une database :

SET FOREIGN_KEY_CHECKS=0;

-- supprimer chaque table de la 'database' (il y en a qu'une seule)
TRUNCATE TABLE fruits;

-- puis :
SET FOREIGN_KEY_CHECKS=1;

Supprimer la database :

DROP DATABASE database1;