Tape les commandes sans regarder, puis Entrée : la vérification compare au caractère près (espaces multiples ignorés), donc une variante valide peut être refusée, ouvre alors la réponse. Pour les autres questions, réponds avant d’ouvrir : c’est l’effort de rappel qui fait retenir.
Rappel actif
Restitue de mémoire, sans support.
Donne les quatre étapes du TP pour publier un site
espritN.comsur Apache, avec la commande clé de chacune. Quelle étape supplémentaire faut-il sans serveur DNS ?- Créer
/var/www/espritN.com/public_html, lui donner un propriétaire (chown -R $USER:$USER) et les droits (chmod -R 755 /var/www). - Écrire la page de test
index.html. - Copier
000-default.confenespritN.com.confdanssites-available, puis l’éditer. a2ensite espritN.com.conf,a2dissite 000-default.conf,systemctl reload apache2.
Sans DNS : résoudre le nom localement dans
/etc/hosts(192.168.200.132 www.espritN.com).- Créer
Tape la commande
Écris la commande exacte, puis Entrée pour vérifier.
Active le site décrit dans
/etc/apache2/sites-available/esprit1.com.conf.sudo a2ensite esprit1.com.confElle crée un lien dans
sites-enabled. Le site n’est servi qu’après rechargement d’Apache.Désactive le site par défaut d’Apache.
sudo a2dissite 000-default.confFais prendre en compte la nouvelle configuration sans couper les connexions en cours.
sudo systemctl reload apache2reloadrelit la configuration,restartarrête et relance le service (connexions coupées).Ajoute la deuxième adresse
192.168.200.133/24sur la carteens33avec un alias, comme dans le TP.sudo ifconfig ens33:1 192.168.200.133/24ifconfigest obsolète sur les distributions récentes (paquetnet-tools). Équivalent moderne :sudo ip addr add 192.168.200.133/24 dev ens33. Dans les deux cas, l’adresse disparaît au redémarrage.Copie le fichier de site par défaut pour créer celui de
esprit2.com.sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/esprit2.com.conf
Écris-le
Rédige la requête, la configuration ou le code, puis compare avec la réponse.
Écris le fichier de site complet de
www.esprit1.com, servi par nom sur192.168.200.132, port 80, avec ses journaux.<VirtualHost 192.168.200.132:80> ServerName www.esprit1.com ServerAdmin admin@esprit1.com DocumentRoot /var/www/esprit1.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>C’est
ServerNamequi distingue ce site des autres sur la même IP et le même port.Le site
www.esprit4.comdoit être servi sur le port 8080. Écris les deux modifications nécessaires, en précisant les fichiers.Dans
/etc/apache2/ports.conf:Listen 8080Dans
/etc/apache2/sites-available/esprit4.com.conf:<VirtualHost 192.168.200.132:8080> ServerName www.esprit4.com DocumentRoot /var/www/esprit4.com/public_html </VirtualHost>Sans
Listen 8080, Apache n’ouvre pas le port : le VirtualHost existe mais personne n’écoute. Test :http://www.esprit4.com:8080.Écris la requête HTTP brute (ligne de requête et en-tête utile) qu’envoie un navigateur pour
http://www.esprit2.com/index.html. Quelle ligne permet à Apache de choisir le site en VirtualHost par nom ?GET /index.html HTTP/1.1 Host: www.esprit2.comC’est l’en-tête
Host. L’IP et le port sont les mêmes pour tous les sites : sansHost, Apache ne pourrait pas les distinguer.
Distingue
Deux notions proches : dis ce qui les sépare vraiment.
VirtualHost par nom, par IP, par port : qu’est-ce qui choisit le site dans chaque cas, et que faut-il préparer ?
Technique Ce qui choisit le site Préparation Par nom l’en-tête Hostrien, un ServerNamepar sitePar IP l’IP de destination une IP par site (alias ens33:1)Par port le port demandé Listendansports.confGETetHEAD: quelle différence dans la réponse, et à quoi sertHEAD?HEADrenvoie les mêmes en-têtes queGET, mais sans le corps. Utile pour vérifier qu’une ressource existe, sa taille ou sa date de modification sans la télécharger.HTTP et HTTPS : port, chiffrement, et les trois garanties qu’ajoute HTTPS.
HTTP : port 80, texte clair. HTTPS : port 443, chiffré par SSL/TLS. Garanties : confidentialité (personne ne lit), intégrité (personne ne modifie sans que ça se voie), authentification (le certificat prouve l’identité du serveur).
Explique pourquoi
Le mécanisme derrière la règle.
Pourquoi le VirtualHost par nom est-il « le cas courant », et pas le VirtualHost par IP ?
Les adresses IPv4 publiques sont rares et payantes. Par nom, des dizaines de sites partagent une seule IP et un seul port : il suffit d’un
ServerNamechacun. Par IP, chaque site consomme une adresse.Pourquoi le TP doit-il remplir
/etc/hosts? Et pourquoi sur la machine cliente, pas seulement sur le serveur ?Sans DNS, rien ne traduit
www.esprit1.comen192.168.200.132./etc/hostsfait cette traduction localement, sur la machine qui le contient. C’est le navigateur qui doit résoudre le nom, donc le fichier doit être sur la machine qui navigue. Dans le TP, c’est la même VM.
Cas pratique
Choisis et justifie avec les critères du cours.
Après
a2ensite esprit1.com.confetreload,http://www.esprit1.comaffiche encore la page par défaut d’Apache. Liste trois causes possibles.000-default.confest encore activé et capte la requête (il fauta2dissite 000-default.conf).ServerNamene correspond pas exactement au nom tapé (esprit1.comau lieu dewww.esprit1.com).- Le nom ne pointe pas vers la bonne IP dans
/etc/hosts, ou l’IP du<VirtualHost>n’est pas celle de la carte.
Un hébergeur veut 3 sites clients sur un seul serveur avec une seule IP publique, tous accessibles sur le port standard. Quelle technique, et pourquoi pas les deux autres ?
Par nom : une IP, le port 80, un
ServerNamepar site.Par IP demanderait 3 adresses publiques. Par port obligerait les visiteurs à taper
:8080,:8081, et ces ports sont souvent bloqués par les pare-feux d’entreprise.
Trouve l'erreur
Chaque affirmation contient au moins une faute.
« J’ai écrit
<VirtualHost 192.168.200.132:8080>dans mon fichier de site, maiswww.esprit4.com:8080ne répond pas. La config est forcément bonne puisque le site est activé. »Il manque
Listen 8080dans/etc/apache2/ports.conf. Le VirtualHost dit quoi servir sur ce port,Listendit à Apache d’ouvrir ce port.« Le code 404 veut dire que le serveur a planté. »
4xx = erreur côté client : 404 dit que la ressource demandée n’existe pas (mauvaise URL). Une panne du serveur donne un 5xx, par exemple 500 Internal Server Error.
« Dans
http://www.esprit.tn,esprit.tnest le TLD. »Le TLD est seulement
tn.espritest le domaine de deuxième niveau (SLD),wwwle sous-domaine. L’URL se lit de la droite (le plus général) vers la gauche (le plus précis).
Classe
Range chaque élément et explique les cas limites.
Range chaque code dans sa famille et dis qui est en faute (client, serveur, personne) : 200, 301, 404, 500, 100, 403.
Code Famille Faute 100 1xx informative personne, le traitement continue 200 2xx succès personne 301 3xx redirection personne, le client doit suivre la nouvelle adresse 403 4xx erreur client le client (accès refusé) 404 4xx erreur client le client (ressource introuvable) 500 5xx erreur serveur le serveur Associe chaque action à une méthode HTTP : lire un article, créer un compte (formulaire), remplacer la photo de profil, supprimer un commentaire, vérifier qu’un fichier existe sans le télécharger.
GET,POST,PUT,DELETE,HEAD.
Et si...
Prévois la conséquence.
Et si un client ancien envoie une requête sans en-tête
Hostà un serveur qui fait du VirtualHost par nom ?Apache ne peut pas savoir quel site est demandé : il sert le premier VirtualHost défini pour cette IP et ce port (le site par défaut). Le client reçoit peut-être le mauvais site. D’où l’intérêt de garder un site par défaut neutre.
Et si on redémarre la VM après avoir ajouté
ens33:1avecifconfig?L’alias est perdu : il n’existait qu’en mémoire. Le site par IP sur
192.168.200.133ne répond plus. Pour le rendre permanent, il faut le déclarer dans la configuration réseau de la machine (netplan sur Ubuntu 22.04).