Luca Saiu: page officielle du cours « Services Réseau », TP: serveur HTTP

La page principale du module est dans le répertoire supérieur.


TP : Configuration d'un serveur HTTP

Dans cette séance vous allez apprendre la configuration d'un serveur HTTP, capable de donner accès à des fichiers (typiquement HTML) locaux.


Phase 0 : début

Configurez le serveur HTTP Apache sur votre machine.

Tâche 0.0 : Installez, si nécessaire, le logiciel, et configurez-le. Affichiez une page HTML écrite par vous. Le code HTML doit être syntaxiquement correct, mais peut être banal. Afficher une seule phrase suffit.

Phase 1 : configuration de base, VirtualHost

Tâche 1.0 : Le serveur Apache stocke des fichiers de log. Dans quel répertoire, avec votre configuration actuelle ?

Tâche 1.1 : Modifiez la configuration pour stocker les informations de debug aussi dans vos fichiers de log.

Tâche 1.2 : Si présent dans votre installation, regardez /etc/apache2/conf-available/ et /etc/apache2/conf-enabled. Quel est l'intérêt de ces répertoires ? (Suggestion: lisez attentivement les commentaires de /etc/apache2/apache2.conf ; c'est bien expliqué. Vous allez être intéressés par /etc/apache2/sites-available et /etc/apache2/sites-enabled , qui marchent de la même façon.)

Suggestions : Vous pouvez aussi lire la documentation de la distribution, si nécessaire.

Tâche 1.3 : Donnez deux noms alternatifs à votre machine, sans utiliser le service DNS. Pour cette tâche, ce suffit que le nom soit juste visible localement, ou que chaque client soit à configurer localement.

Tâche 1.4 : Configurez le VirtualHost pour chaque nom du serveur. Le serveur doit donner un site web (ici juste une page) différent selon le nom du serveur indiqué par le client dans sa requête HTTP.

Tâche 1.5 : Séparez les fichiers de log de chaque virtualhost, en les faisant apparaître dans des répertoires séparés.


Phase 2: permissions, indices

Tâche 2.1 : Donnez accès « Index » à un répertoire dans votre arborescence, visible à l'extérieur en tant que la ressource /mon-repertoire . Sur le système de fichier local ajoutez un autre répertoire au même niveau (fils du même parent) de mon-repertoire : ce répertoire ne doit pas être accessible de la même façon.
Voilà un exemple de répertoire, sur mon serveur, ayant accès Index.


Phase 3: .htaccess

Tâche 3.1 : Utilisez .htaccess pour rendre un répertoire dans l'arborescence des pages web non lisible par les clients.

Tâche 3.2 : Utilisez .htaccess pour rendre un répertoire dans l'arborescence des pages web privé, juste accessible par les clients en donnant un nom d'utilisateur et un mot de passe.

Tâche 3.3 : Utilisez .htaccess pour réaliser une rédirection HTTP. Quel est l'intérêt des rédirections ?

Tâche 3.4 : Réalisez une autre rédirection entièrement en HTML, sans utiliser .htaccess. Quels sont les avantages et le désavantages de cette alternative ?

Tâche 3.5 : Est-ce qu'on a des alternatives à .htaccess ? Quelles configuration pouvez-vous réaliser sans utiliser .htaccess? Quelle sera la différence en performances, et pourquoi ?

Tâche 3.6 : Certaines pages de votre site web ne seront pas secrètes, mais quand même vous souhaitez qu'elle ne soient pas indicisées par les moteurs de recherche.
Achevez ce changement de configuration en utilisant robots.txt .


Phase 4: modules

Tâche 4.0 : Qu'est-ce que c'est un module ? Quel est l'intérêt d'avoir des modules ? En quel langage de programmation on écrit typiquement un module ? Est ce différent par rapport au langage fourni à l'utilisateur par le module ? (certains modules permettent d'avoir des services dynamiques, avec du code exécuté sur le serveur).

Tâche 4.1 : Vous devez fournir (aussi) des pages web chiffrées. Écoutez sur le port 443 aussi, en l'utilisant pour fournir accès en HTTPS. Vous allez avoir besoin de mod_ssl.

Tâche 4.2 : Configurez et utilisez un autre module à votre plaisir. Suggestion : la réécriture des URLs est utile.


Phase 5: PHP

Les tâches 5.1a et 5.1b sont à exécuter au même temps. La tâche 5.1b vous sera utile pour développer 5.1a.

Tâche 5.1a : Activez mod_php. Écrivez une page web HTML contenant du PHP embarqué. Votre code PHP doit sommer tout nombre entre 1 et 100, et afficher le résultat dans la page web. Le calcul sera entièrement exécuté côté serveur.

Tâche 5.1b : En cas d'erreurs pendant l'exécution du code PHP, où pouvez-vous trouver les messages d'erreur ?

Tâche 5.2 : Quel est l'intérêt de PHP? Quels sont les avantages et les désavantages ? Connaissez-vous des alternatives ?


Phase 6: performances

Tâche 6.1 : Votre serveur HTTP peut adopter plusieurs politiques d'utilisation de processus et threads. Expliquez en détail les alternatives disponibles dans la version d'Apache que vous utilisez.
Changez le défaut. Comment on peut tester les performances ? Collaborez en utilisant deux ordinateurs.

Tâche 6.2 : Combien de requêtes par seconde pouvez-vous servir, en local ? Et à partir d'une autre machine en réseaux local ? Spéficiez comment vous avez obtenu votre résultat.



[hacker emblem]
Luca Saiu
Mis à jour le 27 janvier 2021