← Semaine 8
semaine 8 - paradigme client-serveur

Bienvenue dans le module 3 : l'entreprise

Vous savez monter UN serveur web. Une entreprise, elle, a besoin de courriel, de chat, de fichiers, de médias... Ce module : choisir un service, l'installer, l'améliorer et le livrer comme un pro.
le paradigme

Trois étages : machine, système, logiciels

La machine physique
HP, Dell... dans un data center. Le bâtiment et le métal.
Le système d'exploitation
Linux Debian côté serveur ; Windows, macOS ou Linux côté client. Ils préparent l'espace pour que les logiciels se connectent.
Les logiciels
C'est ICI que vivent clients et serveurs. Un serveur est un logiciel qui parle à des logiciels clients.

Un pour tous : un même serveur héberge le service web, le service courriel, le service de chat... On dit « serveur de messagerie » mais on parle du SERVICE.

les termes

Protocole, standard, norme, RFC

PROTOCOLE
Les règles de communication entre client et serveur : messages préétablis, ordre des échanges.
STANDARD
Une convention nommée d'utiliser certaines règles dans un type d'application.
NORME
Un standard qui DOIT être suivi, comme un règlement ou une loi.
RFC
Request For Comments : une proposition de standard, ouverte à la révision.
interoperabilite

L'interopérabilité : le miracle des protocoles

Le serveur ne se soucie pas du logiciel que vous utilisez, tant qu'il respecte les règles :

# Web : le protocole HTTP Apache ou nginx <--> Firefox, Chrome, Safari, Brave, Lynx... # Courriel : SMTP / IMAP postfix <--> Thunderbird, Apple Mail, Spike, Airmail... # Chat : le protocole IRC inspircd <--> weechat, hexchat, pidgin...
Protocole public, standardisé, devenu norme = on peut interchanger les clients ET les serveurs. Ils parlent tous le même langage.
concept fondamental

Paquet, service, processus

Trois mots qu'on confond, trois choses très différentes :

PAQUET : la boîte
L'archive qui contient les fichiers du programme (binaires, configs, doc). Sur le disque, ne fait rien tant qu'on ne l'installe pas.
SERVICE : le contrat
La promesse que le programme tourne en permanence, géré par systemd.
PROCESSUS : le vivant
Le programme en train de s'exécuter, visible dans ps aux.
root@serveur:/# apt install apache2 && systemctl enable --now apache2 # le paquet s'installe, le service demarre : la ligne du quotidien
apt - mise a jour

apt update et upgrade

$ sudo apt update # rafraichit l'index local depuis les depots $ apt list --upgradable # voir AVANT d'appliquer $ sudo apt upgrade -y # applique tout en silence # Le combo classique : $ sudo apt update && sudo apt upgrade -y
apt - installation

install, remove, purge : désinstaller proprement

$ sudo apt install apache2 # installe apache + dependances + cree le user www-data $ sudo apt remove apache2 # ATTENTION : /etc/apache2/ existe encore ! $ sudo apt purge apache2 && sudo apt autoremove # la vraie desinstallation complete $ sudo apt install --no-install-recommends nginx # installation legere - le minimum, utile sur serveur
remove garde les configs dans /etc, purge fait table rase. À l'examen comme en entreprise, la nuance compte !
apt - enquete

search, show, dpkg : mener l'enquête

$ apt search 'web server' # chercher dans noms et descriptions $ apt show apache2 # version, deps, taille, mainteneur $ apt list --installed # tous les paquets installes $ dpkg -L apache2 | grep '/etc' # quels FICHIERS ce paquet a-t-il installes ? $ dpkg -S /etc/apache2/apache2.conf # a quel paquet appartient CE fichier ? Tres utile !
apt-mark hold

Figer un paquet : apt-mark hold

Cas réel vécu dans ce cours : le noyau Linux qui marche avec VirtualBox !

$ sudo apt-mark hold linux-image-6.14.0-generic # fige le noyau : plus de mise a jour NI de suppression $ sudo apt-mark hold linux-headers-6.14.0-generic # ne pas oublier les headers ! $ apt-mark showhold # lister les paquets proteges $ sudo apt-mark unhold linux-image-6.14.0-generic
Ordre important : purger les vieux noyaux D'ABORD, hold ENSUITE - hold bloque aussi les suppressions.
systemctl

systemctl : le cycle de vie d'un service

$ sudo systemctl status apache2 # etat + 10 dernieres lignes de log $ sudo systemctl start apache2 $ sudo systemctl stop apache2 $ sudo systemctl restart apache2 # stop puis start - COUPE les connexions $ sudo systemctl reload apache2 # relit la config SANS couper - a preferer ! # Dans un script de surveillance : $ systemctl is-active --quiet apache2 && echo 'OK' || echo 'DOWN'
systemctl - le boot

enable, disable : le démarrage automatique

$ sudo systemctl enable --now apache2 # LE combo classique : demarre maintenant + a chaque boot $ systemctl is-enabled apache2 enabled $ sudo systemctl disable bluetooth # un serveur n'a pas besoin de bluetooth au boot $ systemctl list-unit-files --state=enabled # tous les services qui demarrent au boot $ sudo systemctl mask wpa_supplicant # blindage : interdit meme le demarrage manuel
journalctl

journalctl : votre meilleur ami pour déboguer

$ sudo journalctl -u apache2 -n 30 # les 30 dernieres lignes - debug rapide $ sudo journalctl -u apache2 -f # suivre en temps reel - LE reflexe quand un site lag $ sudo journalctl -u ssh --since 'yesterday' -p err # erreurs SSH d'hier seulement # Le workflow de debug classique : $ sudo systemctl restart apache2 && sudo journalctl -u apache2 -f
resume

Prêts pour l'entreprise

Le paradigme
Protocoles publics = interopérabilité totale des clients et des serveurs.
La trousse
apt gère les boîtes, systemctl gère les contrats, journalctl raconte tout.
La suite
Semaine 9 : choisir son service d'entreprise et bâtir son devis d'améliorations.

Au laboratoire de la semaine 8 : la trousse de l'administrateur, en pratique sur votre VPS.