Administration Linux
Mémo
1. Mémoire et charge
2. Stockage : chemin logique
3. LVM : intérêt et grandes notions
4. Réseau : Modèle OSI et commandes
5. MariaDB - admin. Linux
6. MariaDB - admin. SGBD
7. NGINX
8. Logs
9. Dépannage
10. Sauvegarde et restauration
TP
TP-01-Authentification SSH
TP-02-Installation de MariaDB
TP-03-Administration de MariaDB
TP-04-NGINX serveur web
TP-05-NGINX load balancer
TP-06-NGINX reverse proxy
TP-07 - Activer HTTPS avec Let’s Encrypt
TP-08 - Sauvegarde avec tar, scp, rsync et Cron
TP-09 - Rsync : changements et points de récupération
TP-10 - Stratégies de sauvegarde avec tar
Cours
1. Administration des systèmes Linux — Introduction
Récapitulatif des commandes Linux
1.1 Le rôle de l’administrateur Linux
1.2 RAM, mémoire virtuelle et cache
1.3 Le swap
1.4 Lire l’état de la mémoire
1.4.1 Comprendre free
1.4.2 Comprendre top
1.4.3 Comprendre /proc/meminfo
1.5 Observer l’évolution avec vmstat
1.6 Repérer un processus gourmand
1.7 La méthode de diagnostic DevOps
1. Administration des systèmes Linux — Introduction - strict
Objectif Pédagogique
Compétences Acquises
Prérequis
Introduction
I - Gestion de la mémoire
A - Affichage de la mémoire et du cache
B - Gestion de l'espace d'échange ou SWAP
b.1 - présentation
b.2 - Utilisation globale
b.3 - Le fichier /proc/meminfo
b.4 - La commande vmstat
b.5 - Gestion des processus gourmands en mémoire
b.5.1 - La commande ps
b.5.2 - La commande kill
2. Comprendre le stockage sous Linux
Récapitulatif des commandes Linux
2.1 La chaîne complète du stockage
2.2 Le vocabulaire indispensable
2.3 Découper le disque avec des partitions
2.3.1 MBR et GPT
2.3.2 Partitionner n’est pas formater
2.4 Organiser les données avec un système de fichiers
2.4.1 Les principaux systèmes de fichiers
2.4.2 La journalisation
2.5 Rendre le stockage accessible grâce au montage
2.5.1 Le point de montage
2.5.2 Pourquoi utiliser un UUID ou un LABEL ?
2.5.3 Le rôle de /etc/fstab
2.6 Pourquoi LVM existe-t-il ?
2.6.1 PV, VG et LV
2.6.2 Agrandir et réduire un volume
2.7 Ce qu’un DevOps doit diagnostiquer
2. Gestion du stockage - strict
2.1 Présentation
2.2 Partition standard
2.3 Le système de fichiers
2.3.1 Quelques mots sur la journalisation
2.4 Points de montage sous Linux
2.4.1 Présentation
2.4.2 Monter un périphérique
2.4.3 Démonter un périphérique
2.5 Le fichier /etc/fstab
2.5.1 Présentation
2.5.2 Explications
2.6 Créer une partition avec fdisk
2.6.1 Présentation
2.6.2 Utilisation
2.7 Supprimer une partition
2.8 LVM sous Linux
2.8.1 Présentation
2.8.2 Fonctionnement
2.8.3 Avantages et gestion
2.8.3.1 Afficher les volumes physiques existants
2.8.4 groupes de volumes
2.8.5 Volumes logiques
2.8.6 Formatage et montage de volumes logiques
2.8.7 Extension des systèmes de fichiers existants
2.8.8 Réduction de la taille du système de fichier
3. Gestion du réseau
Récapitulatif des commandes
3.1 La carte générale du réseau
3.2 TCP/IP et modèle OSI
3.3 Adresse IP, masque et route
3.4 DNS : passer d’un nom à une adresse
3.5 Ports, sockets et outils de test
3.6 Pare-feu : autoriser seulement le nécessaire
3.7 SSH : administration distante sécurisée
3.8 Méthode de diagnostic
3. Gestion du réseau - strict
3.1 A - Introduction
3.2 B - Réseau TCP/IP
3.3 C - Modèle OSI
3.3.1 c.1 - Présentation
3.3.2 c.2 - Les couches du modèle OSI
3.3.3 c.3 - Adresse IP
3.3.4 c.4 - Classes d'adresses IP
3.3.5 c.5 - Adressage IP
3.3.6 c.6 - Masque de sous-réseau
3.3.7 c.7 - Sockets et numéros de port
3.3.8 c.8 - Système de noms de domaine (DNS)
Qu'est-ce qu'un serveur DNS ?
Fonctionnement d'un serveur DNS
3.3.9 c.9 - Routage
3.3.10 c.10 - Protocole Internet version 6 (IPv6)
3.3.11 c.11 - La commande ip sous Linux
3.3.12 c.12 - Adresses IP publiques et privées
3.3.13 c.13 - La commande PING
3.3.14 c.14 - DHCP
3.3.15 c.14 - DNS et fichier /etc/resolv.conf
3.3.16 c.15 - La commande HOST
3.3.17 c.16 - La commande hostname
3.3.18 c.17 - Routage
3.3.19 c.18 - La commande netcat
Outil : Netcat ( nc )
Syntaxe de base :
Modes de fonctionnement :
3.3.20 c.19 - Nmap
3.3.21 c.20 - IPTABLES
Ajout de règles
Enregistrement et restauration des règles
Suppression de règles
3.3.22 c.21 - UFW (Uncomplicated Firewall)
3.3.23 c.22 - Netstat
3.3.24 c.23 - Présentation SSH
SSH (Secure Shell)
Fonctionnement de SSH
Méthodes d'authentification SSH
Génération d'une paire de clés SSH
Gestion des clés SSH
4. Gestion des bases de données — MariaDB
Récapitulatif des commandes
4.1 Rôle de MariaDB
4.2 Service, configuration et sécurité
4.3 Comptes et privilèges
4.4 DDL et manipulation des données
4.5 Sauvegarde et restauration
4.6 Performance
4. Gestion des bases de données — MariaDB - strict
4.1 A - Présentation
MariaDB : serveur de base de données relationnelle
Éditions principales de MariaDB
4.2 B - Installation et configuration
4.2.1 b.1 - Installation sur Ubuntu Server
4.2.2 b.2 démarrer et activer MariaDB
4.2.3 b.3 - Gestion du service MariaDB
4.2.4 b.4 - Sécuriser MariaDB
4.3 Administration
4.3.1 c.1 - Configurer un utilisateur authentifié par mot de passe
4.3.2 c.2 - Actions courantes d'administration MariaDB
4.3.3 c.3 - Commande SQL pour administrer une base de données
4.3.4 c.4 - Commandes de base de données MySQL - Langage de définition de données (DDL)
4.3.5 c.5 - Commandes pour gérer les tables
4.3.6 c.6 - Sauvegarde et restauration
4.4 D - Configurez MariaDB pour des performances optimales
4.4.1 d.1 - Spécifier la taille du pool de tampons InnoDB
4.4.2 d.2 - Désactiver le SWAP
4.4.3 d.3 - Spécifier le nombre maximal de connexions
4.4.4 d.4 - Désactiver les recherches DNS MariaDB/MySQL
4.4.5 d.5 - Définir la taille du cache de requête
4.4.6 d.6 - Spécifier la durée des connexions inactives
4.4.7 d.7 - Activer les journaux de requêtes lentes
4.5 Questionnaire
5. NGINX
Récapitulatif des commandes
5.1 Les rôles de NGINX
5.2 Fichiers de configuration
5.3 Directives, blocs et contextes
5.4 Construire un serveur web
5.5 location et routage
5.6 Variables NGINX
5.7 Contenu statique, include et try_files
5.8 Redirections et HTTPS
5.8.1 Ce qui se passe lors d’une connexion TLS
5.9 Logs et validation
5.10 Reverse proxy
5.10.1 Transmettre les en-têtes à l’application
Comparer les deux requêtes
Conserver le contexte du client pour une application
Pourquoi un en-tête paraît manquer ?
Quand le backend lui-même utilise HTTPS
5.11 Équilibrage de charge
5.11.1 Le groupe de backends
5.11.2 Round-robin : à tour de rôle
5.11.3 Least connections : connexions actives
Exemple du support Liora
5.11.4 IP hash : affinité et sessions
Variante du support Liora
5.11.5 Weight : capacités différentes
Exemple pondéré du support Liora
5.11.6 Choisir et vérifier une stratégie
5.12 HTTPS et certificats gratuits avec Let’s Encrypt
Pourquoi un certificat ?
Comment le domaine est-il validé ?
Commandes essentielles sur Ubuntu
Renouvellement et diagnostic
Sources officielles
5.13 Configurer TLS sur NGINX
5.13.1 Repérer le certificat et la clé
5.13.2 Deux blocs : HTTP et HTTPS
5.13.3 Tester, recharger et comprendre le résultat
5.13.4 Terminaison TLS et application derrière NGINX
5.13.5 Diagnostiquer et renouveler
5. NGINX - strict
5.1 A - Présentation de NGINX
5.2 B - Création d'un nom de domaine
5.3 C - Installation de NGINX
5.4 D - Configuration de NGINX
5.5 E - Configurer un serveur web de base
5.5.1 e.1 - Premier fichier de configuration
5.5.2 e.2 - Comment valider et recharger les fichiers de configuration
5.5.3 e.3 - Comprendre les directives et les contextes
Principaux contextes dans NGINX
5.5.4 e.4 - Servir du contenu statique avec NGINX
5.5.5 e.5 - Gestion des types de fichiers statiques
5.5.6 e.6 - Inclure des fichiers de configuration partiels
5.5.7 e.7 - Routage dynamique avec NGINX
5.5.8 e.8 - Variables dans NGINX
5.5.9 e.9 - Redirections et réécritures
5.5.10 e.10 - Essayer plusieurs fichiers
5.5.11 e.11 - Logs NGINX
Cas pratique
5.6 F - Pile LEMP
5.6.1 f.1 - Introduction
5.6.2 f.2 - Composants de la pile LEMP
5.6.3 f.3 - Installation
5.6.4 f.4 - Créer une base de données pour WordPress
5.6.5 f.5 - WordPress
5.6.6 f.6 - Hôtes virtuels NGINX
Mise en situation
5.6.7 f.7 - Installation Web complète de WordPress
5.6.8 f.8 - Activer HTTPS sur WordPress avec Let's Encrypt
5.7 G - NGINX comme proxy inverse
5.7.1 g.1 - Présentation
5.7.2 g.2 - Avantages et caractéristiques du proxy inverse
5.7.3 g.3 - Configuration
5.7.4 g.4 - Transmission des en-têtes de requête
5.7.5 g.5 - Options courantes de proxy inverse Nginx
5.8 H - NGINX comme équilibreur de charge
5.8.1 h.1 - Présentation
Comment fonctionne NGINX ?
5.8.2 h.2 - Configurer NGINX en tant qu'équilibreur de charge
5.8.3 h.3 - Méthodes d'équilibrage de charge
5.8.4 h.4 - Équilibrage de charge avec HTTPS activé
5.8.5 h.5 - Contrôles de santé des serveurs back-end
6. Gestion des logs sous Linux
1. Où se trouvent les logs sous Linux ?
2. Comment est constitué un log ?
3. Les principaux journaux
3.1 Les journaux texte
3.2 Les journaux binaires
4. Lire et suivre les logs
4.1 systemd, systemctl et journalctl
4.2 Lire et rechercher dans un fichier de log
4.3 Suivre un problème en temps réel
5. Syslog et rsyslog
5.1 Le principe de Syslog
5.2 rsyslog sous Ubuntu
5.3 Configuration du démon rsyslog
6. Comprendre les règles rsyslog
6.1 Où se trouvent les règles ?
6.2 Ajouter, modifier ou supprimer une règle
6.3 Structure d'une règle
6.4 Facility : l'origine ou la catégorie du message
6.5 Severity : le niveau de gravité
6.6 Exemple complet
7. Rotation des journaux avec logrotate
7.1 Pourquoi effectuer une rotation ?
7.2 logrotate, l'utilitaire
7.3 Exemple de configuration
8. Utiliser les logs pour diagnostiquer un problème
6. Gestion des logs et performances - strict
6.1 A - Introduction
6.2 B - Recherche des journaux système Linux
6.3 C - Affichage du contenu d'un fichier journal Linux
6.3.1 c.1 - Présentation
6.3.2 c.2 - Fichiers journaux en texte brut
6.3.3 c.3 - Fichiers journaux binaires
6.3.4 c.4 - Configuration du démon syslog
6.4 D - Rotation des fichiers journaux sous Linux
6.5 E - Configuration du démon logrotate
6.6 F - Gestion des performances
6.6.1 f.1 - La commande TOP
6.6.2 f.2 - La commande htop
7. Troubleshooting — Dépannage
7.1 La méthode générale
7.2 Carte des réflexes
7.3 Commandes de dépannage
A — Réseau
A.1 — Sortant
A.2 — Entrant
A.3 — DNS
B — Administration
B.1 — Services
B.2 — Performance
B.3 — Matériel / Noyau
C — Accès / Authentification
C.1 — Identité
C.2 — Permissions
C.3 — Authentification
D — Applicatif
D.1 — Service
D.2 — Configuration
D.3 — Port
D.4 — Logs
7.4 Use cases : Réseau
7.4.1 Connexion sortante — « La machine n'accède pas au réseau / à Internet »
7.4.2 Connexion entrante — « On n'arrive pas à joindre mon serveur »
7.4.3 DNS — « L’IP fonctionne, mais pas le nom »
7.5 Use cases : Administration système
7.5.1 Services
7.5.2 Performance
7.5.3 Matériel / noyau
7.6 Use cases : Accès et authentification
7.7 Use cases : Applicatif
7.8 Diagnostiquer puis agir : les actions correctives
7. Troubleshooting — Dépannage - strict
7.1 A - Présentation
7.2 B - Dépannage Réseau
7.3 C - Connexions sortantes
7.4 D - Connexions entrantes
7.5 E - Résoudre les problèmes matériels
7.6 F - Dépanner la charge du système
7.6.1 f.1 - Utilisation de la mémoire
7.6.2 f.2 - Vider les caches de page
7.6.3 f.3 - Charge du processeur
8. Sauvegarde et restauration
8.1 Pourquoi sauvegarder ?
8.2 Types de sauvegardes
8.2.1 Sauvegarde complète
8.2.2 Sauvegarde incrémentale
8.2.3 Sauvegarde différentielle
8.3 Objectifs de reprise et règle 3-2-1
8.4 Rsync
8.4.1 Lire ce que rsync va modifier avec -i
8.4.2 Simulation, progression et filtrage
8.4.3 --backup : conserver les fichiers remplacés ou supprimés
8.4.4 --remove-source-files : transférer puis retirer la source
8.5 Cron : automatiser sans oublier la supervision
8.5.1 Petit rappel et bonnes pratiques
8.5.2 Où vérifier les logs Cron ?
8.6 Tar : regrouper et compresser
8.6.1 Créer l’archive et choisir son emplacement
8.6.2 Modifier ou extraire une partie d’une archive
8.6.3 Quel lien entre tar et rsync ?
8.6.4 SCP : copie ponctuelle via SSH
8.7 La restauration est le vrai test
8. Sauvegarde et restauration - strict
8.1 A - Présentation
8.2 B - La sauvegarde de données
8.2.1 b.1 - Présentation
8.3 C - Reprise après sinistre
8.4 D - Protection des données sous Linux
8.5 E - Qu'est-ce que l'outil Rsync ?
8.5.1 e.1 - Présentation
8.5.2 e.2 - Syntaxe de base
Qu'est-ce que le facteur d'accélération ?
8.5.3 e.3 - Les options Rsync
8.5.4 e.4 - Différence entre fichiers sources et destination
Copier des fichiers à distance
8.5.5 e.5 - Supprimer les fichiers sources après le transfert
8.5.6 e.6 - Simulation avec rsync
8.5.7 e.7 - Taille maximale et minimale du transfert
8.6 F - Tâches CRON
8.6.1 f.1 - Présentation
8.6.2 f.2 - Installation de cron
8.6.3 f.3 - Configuration simple du CRON
8.6.4
8.7 G - TAR pour la sauvegarde et la restauration
8.7.1 g.1 - Présentation
8.7.2 g.2 - Syntaxe
8.7.3 g.3 - Créer une archive tar
8.7.4 g.4 - Créer une archive Tar Gzip
8.7.5 g.5 - Lister le contenu de l'archive tar
8.7.6 g.6 - Extraire une archive Tar
8.7.7 g.7 - Extraire une archive Tar Gzip
8.7.8 g.8 - Extraire dans un répertoire différent
8.7.9 g.9 - Ajouter ou supprimer des fichiers dans une archive Tar
8.7.10 g.10 - Extraire plusieurs fichiers d'une archive Tar
8.8 H - Restauration