TP Configuration d'Apache



Conseils

TP1   Configuration globale d'Apache

Observer le contenu de /etc/httpd. On y trouve outre le répertoire de configuration 2 liens symboliques qui pointent vers les répertoires
  1. /var/log/httpd où Apache place ses journaux d'activités : access_log pour les requêtes traitées (qu'elles soient réussies ou non) et error_log, pour noter les erreurs de fonctionnement du serveur
  2. /usr/lib/apache où se trouvent les modules susceptibles d'être chargés par le noyau d'Apache.
    En particulier, les modules qui permettent à Apache d'interpréter directement les langages Perl (libperl.so) et Php (libphp4.so)
Le répertoire /etc/httpd/conf contient outre httpd.conf, apache-mime.types (qui permet de renseigner le client sur le moyen d'afficher un fichier suivant son extension), et 2 répertoires
  1. vhosts pour paramétrer les hotes virtuels
  2. addon-modules qui contient des fichiers de configuration, en particulier php.conf

Modifications de paramètres d'exécution

Supposons que le serveur d'établissement soit hébergé par une machine aux ressources limitées, et que le nombre de requêtes qui lui sont adressées n'est jamais considérable.
  1. Il y a 10 serveurs WEB en exécution lors du démarrage d'Apache, et 150 au maximum simultanément. Comment le vérifiez vous ?
  2. Votre capacité mémoire est limitée. Ramenez ces nombres à 4 et à 25. Redémarrez Apache. Vérifiez avec une commande ps

Modifications de paramètres d'accessibilité

  1. cas 1 : modifier l'accès au site par défaut (/var/www/html) pour autoriser l'accès de tous les hotes du sous-réseau 172.16.0. sauf à partir des 2 hotes qui vous sont voisins. Bien sur, bien vérifier.
  2. cas 2 : interdire l'accès de tous les hotes sauf les machines du formataur et une machine voisine

Suivi du journal des accès

  1. Passer la commande (à expliquer) : tail -f /var/log/httpd/access_log > /dev/tty11  &
  2. Noter le PID du processus qui vient d'etre lancé en tache de fond, puis observer le contenu de la console tty11
  3. Demander aux groupes voisins de jouer les roles de clients WEB (avec un browser lynx, Konqueror ou Mozilla) et de passer des requetes http://serveur/, en direction de votre serveur, et observer les lignes de access_log affichées "en direct"
  4. Interpréter les champs de chaque ligne, en particulier répérer les renseignements qui concernent le client et les codes de retour des diverses requetes (200 réussie, 404 "not found" ...)

La page d'accueil et les pages par défaut

  1. Quel est le fichier qui sert de page d'accueil et de test à l'installation ?
  2. Comment charger cette page d'accueil du serveur Apache hébergé par votre propre machine ?
  3. Pouvez-vous en faire autant avec les serveurs des autres groupes ?
  4. Renommez index.bak la page d'accueil du serveur. Pouvez vous l'obtenir comme précédemment ? Pourquoi ? Que faudrait-il faire ? (expliquez mais ne le faites pas)
  5. Qu'obtenez-vous en passant l'URL : http://serveur/index.bak ? Expliquez pourquoi.

  6. Créez rapidement une petite page HTML portant le nom accueil.html (et non pas welcome.html ;-)
    Vous voulez qu'elle devienne la page d'accueil de votre serveur. A noter que la page d'accueil initiale index.shtml doit toujours être présente dans /var/www/html
    Rechercher avec grep la ligne de DirectoryIndex et la modifier convenablement.
    Vérifier.

TP2   Les "pages persos"

C'est très à la mode ... tous vos collègues veulent publier leur page personnelle, voire gérer eux-mêmes un site. A la fois vous vous estimez investi d'une mission de service public, et vous ne désirez pas les renvoyer aux hébergeurs privés; mais comme "webmestre" du "site officiel" de votre établissement, vous ne voulez pas les gérer vous-mêmes ...
  1. Vérifier bien la présence de la clause UserDir public_html dans le fichier de configuration. Rappelez ce qu'elle signifie
  2. Vérifier la présence ou modifier éventuellement pour avoir une directive :
    <Directory /home/*/public_html>
    order allow,deny
    allow from all
    </Directory>
    
    Que faut-il alors faire pour permettre à vos utilisateurs de publier et de gérer eux-mêmes leurs "pages persos" ?
  3. L'utilisateur stagex (x=1 ..10) crée lui-même le répertoire de son site web, et y place une page d'accueil accueil.html
  4. Peut-il y accéder ? Si ce n'est pas le cas, cherchez à résoudre le problème en examinant les droits sur le chemin vers le fichier refusé. Etendre au minimum ces droits pour résoudre le problème
    Conclusion : est-ce une bonne solution que de donner de tels droits à tous ?
  5. (*) toto vous demande un espace de publication Web, mais vous ne voulez pas lui créer de compte sur le serveur (évidemment il ne pourra pas mettre lui-même en ligne). Comment faites-vous pour le satisfaire ?

TP3   Permettre ou interdire l'affichage du contenu d'un répertoire

Vous vous apercevez que le contenu d'un répertoire est affiché, lorsque le serveur ne trouve pas dans ce répertoire, l'une des pages par défaut (dont les noms sont listées par la clause DirectoryIndex) n'est pas présente.
Vous voulez interdire l'affichage de ces fichiers (pas forcément tous publics) et générer un message d'erreur
  1. Renommer index.bak la page d'accueil du serveur, et vérifier ce comportement du serveur, pour tous les utilisateurs.
  2. Rechercher les lignes comportant le mot-clé indexes, supprimer indexes sur le répertoire racine /
  3. Pouvez vous alors lister le répertoire racine du serveur Apache par http://serveur/ ?
  4. Créer un sous-répertoire nommé webftp à la racine du web /var/www/html
    Permettre (exclusivement) à ce répertoire d'etre listé à l'aide d'un conteneur du genre :
    <Directory /var/www/html/webftp>
    Options Indexes
    order allow,deny
    allow from all
    </Directory>
    
  5. Vérifier alors que l'affichage est bien interdit ailleurs

TP4   Protections des accès et webs privés

TP5  Définir des alias

Il s'agit de donner des noms virtuels à des répertoires qui ne se trouvent pas dans l'arborescence usuelle /var/www/html/ (Apache est configuré ainsi sur la plupart des distributions de GNU/Linux)
  1. Repérer les lignes où il est question du mot alias avec une commande grep
  2. Cette déclaration d'alias est déjà écrite :
    Alias  /doc  /usr/share/doc
  3. Tester un accés sur une station par http://serveur/doc, en remplaçant serveur par le nom attribué au serveur, ou son adresse IP. L'accès n'est-il pas "Forbidden" ?
  4. Normalement, vous avez auparavant interdit totalement l'affichage des répertoires sauf sur le répertoire webftp. Or il est bien pratique de "naviguer" dans les docs html. Faites le nécessaire pour permettre cette navigation. Vérifier
  5. Poursuivre le paramétrage particulier de ce répertoire, en accordant les permissions d'accès au "site" doc, localement et uniquement à partir de stations voisines choisies. Attention ! bien choisir la clause order. Vérifier.
    <Directory /usr/share/doc>
    order ......
    deny from all
    # permission d'accès local 
    allow from localhost, 127.0.0.1
    # permission d'accès de stations voisines
    allow from ..........
    </Directory>
    

TP 6  Mise à jour des sites WEB

Il s'agit de mettre en oeuvre plusieurs façons de gérer le site WEB à distance, et en particulier pouvoir mettre en ligne les pages.
Créer un utilisateur "webmestre" appelé webadmin, et donner la propriété de groupe au groupe webadmin, sur /var/www/html
  1. Par FTP : Paramétrer la connexion au serveur sous le compte webadmin dans un client graphique comme gftp
  2. Pour la mise en oeuvre d'un accès par un partage Samba à partir d'une station Windows voir le TP tp-samba1.html

TP 7  Gestion distante d'Apache avec WEBMIN

Contexte : normalement vous avez précédemment installé une mise à jour de WEBMIN, puis créé un gestionnaire admin/admin.
Faites une sauvegarde du fichier de configuration comme /etc/httpd/conf/httpd.old
  1. Connectez vous comme root à webmin avec le protocole https sur le port 10000, et vérifiez que admin a bien accès au module d'administration d'Apache. Sinon accordez lui ce droit.
  2. Reconnectez vous comme admin, parcourer les différents réglages de "configuration globale"

TP 8  Installer des serveurs virtuels