DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesMaîtriser Linux : permissions, processus et paquets07 - Projet Capstone : Déployer et surveiller un serveur web Nginx

Détails

  • 45 minutes
  • Avancé

Objectifs

  • Installer des paquets avec APT
  • Configurer les permissions d'un répertoire web
  • Gérer les processus et surveiller les ressources système
  • Configurer l'environnement avec variables et .bashrc
  • Vérifier la connectivité réseau et analyser les logs
Module Maîtriser Linux : permissions, processus et paquets

Exercice 07 : Projet Capstone - Déployer et Surveiller un Serveur Web Nginx

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Installer et vérifier des logiciels avec apt
  • ✅ Appliquer des permissions de répertoire web (chmod/chown)
  • ✅ Vérifier qu'un processus tourne avec ps et surveiller les ressources avec free/df
  • ✅ Configurer des variables d'environnement et des alias dans .bashrc
  • ✅ Diagnostiquer la connectivité avec ip addr, ss, curl
  • ✅ Analyser les logs d'accès avec des chaînes de pipes

Durée estimée : 45 minutes

Difficulté : ⭐⭐⭐⭐☆ (Avancé)

Prérequis :

  • Avoir complété les exercices 01 à 05
  • Avoir suivi le module Linux Intermédiaire (permissions, processus, APT, réseau)
  • Un système Ubuntu/Debian avec accès sudo

📖 Contexte

Cet exercice mobilise toutes les compétences du module Linux Intermédiaire :

  • Gestion des paquets APT
  • Permissions et propriété des fichiers
  • Surveillance des processus et des ressources
  • Variables d'environnement et configuration .bashrc
  • Commandes réseau et analyse de logs avec des pipes

📋 Énoncé

Vous êtes chargé de déployer un mini-site web sur Nginx, de vérifier que tout fonctionne, de configurer votre environnement de travail, et de produire une analyse des logs d'accès.


🧭 Déroulement de l'exercice

Tâche 1 : Installer les outils nécessaires

Installez nginx, htop et curl via APT. Vérifiez que l'installation s'est bien déroulée en affichant la version de Nginx.

Indice : Avant d'installer, mettez toujours à jour la liste des paquets avec apt update. Pour vérifier la version après installation : nginx -v.

Vérification : nginx -v doit afficher une version (ex : nginx/1.24.0).


Tâche 2 : Déployer un mini-site web

Créez un répertoire /var/www/mon-site/ et déployez-y une page index.html. Configurez les permissions pour que le serveur Nginx (qui tourne sous l'utilisateur www-data) puisse lire les fichiers.

Indice : Le répertoire doit appartenir à www-data (chown -R www-data:www-data /var/www/mon-site). Les fichiers HTML doivent être en 644 (lisibles par tous) et le répertoire en 755 (navigable par tous).

Vérification : ls -la /var/www/mon-site/index.html doit afficher -rw-r--r-- 1 www-data www-data.


Tâche 3 : Vérifier les processus et les ressources

Sans utiliser systemctl, vérifiez que Nginx tourne en utilisant uniquement ps et grep. Affichez ensuite l'état des ressources système.

Indice : ps aux | grep nginx liste les processus Nginx actifs. free -h affiche la RAM, df -h l'espace disque, uptime depuis combien de temps le système tourne.

Vérification : ps aux | grep nginx | grep -v grep doit retourner au moins une ligne (le processus master Nginx).


Tâche 4 : Tester la connectivité réseau

Effectuez les 4 vérifications réseau suivantes et redirigez le résultat de chacune dans un fichier /tmp/rapport-reseau.txt :

  1. Adresse IP de la machine (ip addr show)
  2. Ports en écoute (ss -tlnp)
  3. Test de la page d'accueil locale (curl -s http://localhost)
  4. Vérification de la connectivité externe (ping -c 3 google.com)

Indice : Utilisez >> pour ajouter chaque résultat sans effacer le précédent. Ajoutez un echo entre chaque section pour séparer les blocs.

Vérification : cat /tmp/rapport-reseau.txt doit afficher les 4 sections. ss -tlnp | grep ':80' doit retourner une ligne.


Tâche 5 : Configurer l'environnement de travail

Ajoutez les éléments suivants à votre ~/.bashrc :

  1. Une variable d'environnement WEBROOT="/var/www/mon-site"
  2. Un alias weblog qui affiche les 20 dernières lignes de /var/log/nginx/access.log
  3. Une modification du $PATH pour inclure ~/scripts (même si ce dossier n'existe pas encore)

Rechargez .bashrc et vérifiez que la variable est bien définie.

Indice : Ajoutez export WEBROOT="/var/www/mon-site", alias weblog='tail -20 /var/log/nginx/access.log', et export PATH="$HOME/scripts:$PATH" dans .bashrc. Rechargez avec source ~/.bashrc.

Vérification : echo $WEBROOT doit afficher /var/www/mon-site. type weblog doit afficher "weblog is aliased to...".


Tâche 6 : Analyser les logs d'accès avec des pipes

Générez quelques requêtes vers le serveur (curl http://localhost à répéter 5 fois), puis analysez /var/log/nginx/access.log avec des pipes pour produire :

  1. Le nombre total de requêtes dans le log
  2. Les 3 codes HTTP les plus fréquents (colonne du code de statut)
  3. La liste des User-Agents uniques
  4. Les requêtes ayant échoué (code 4xx ou 5xx)

Indice : wc -l compte les lignes. Le code HTTP est dans la 9e colonne : awk '{print $9}'. Filtrer les erreurs : awk '$9 ~ /^[45]/'. sort | uniq -c | sort -rn pour trier par fréquence.

Vérification : Les 4 commandes doivent s'exécuter sans erreur et afficher des résultats cohérents.


🗂️ Mini-Projet : Rapport d'exploitation complet

Produisez un rapport complet de l'état du serveur en assemblant les informations précédentes :

bash
{
  echo "========================================"
  echo "RAPPORT D'EXPLOITATION - $(hostname)"
  echo "Date : $(date)"
  echo "========================================"
  echo ""
  echo "--- Ressources système ---"
  echo "Mémoire :"
  free -h
  echo ""
  echo "Espace disque :"
  df -h /
  echo ""
  echo "--- Processus Nginx ---"
  ps aux | grep nginx | grep -v grep
  echo ""
  echo "--- Réseau ---"
  echo "IP de la machine :"
  ip addr show | grep "inet " | grep -v 127.0.0.1
  echo ""
  echo "Ports en écoute :"
  ss -tlnp
  echo ""
  echo "--- Analyse des logs ---"
  echo "Total requêtes : $(wc -l < /var/log/nginx/access.log)"
  echo ""
  echo "Top 3 codes HTTP :"
  awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -3
  echo ""
  echo "--- Variable d'environnement ---"
  echo "WEBROOT=$WEBROOT"
} | tee /tmp/rapport-exploitation.txt

Checkpoints de validation :

  • nginx -v retourne une version valide
  • ls -l /var/www/mon-site/index.html affiche -rw-r--r-- 1 www-data www-data
  • ps aux | grep nginx | grep -v grep retourne au moins une ligne
  • ss -tlnp | grep ':80' retourne une ligne (Nginx écoute sur le port 80)
  • curl -s http://localhost retourne le contenu HTML de votre page
  • echo $WEBROOT retourne /var/www/mon-site
  • Le fichier /tmp/rapport-exploitation.txt existe et contient toutes les sections

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Installer les outils nécessaires
  • Tâche 2 : Déployer un mini-site web
  • Tâche 3 : Vérifier les processus et les ressources
  • Tâche 4 : Tester la connectivité réseau
  • Tâche 5 : Configurer l'environnement de travail
  • Tâche 6 : Analyser les logs d'accès avec des pipes
  • 🗂️ Mini-Projet : Rapport d'exploitation complet