HTTP: Un serveur: Apache

Les documentations du serveur HTTP Apache sont disponibles en ligne. Vous pouvez soit vous connecter aux US (http://www.apache.org/docs/) soit utiliser le miroir français (http://www.cge-ol.fr/apache), soit le miroir partiel situé temporairement à l'essi (http://www-local.essi.fr/~buffa/internet/apache/) ou en local dans file:/u/I3S/buffa/www/local/internet/apache

Vous allez installer un serveur sur votre machine, qui va tourner sur le port 8080, le port 80 (et tou les ports de nº inférieurs à 1024) n'étant accessibles qu'aux process tournant sous l'user ID root.

Compilation et installation

La première chose à faire est de récupérer le programme et les documentations de base. Il s'agit de copies locales pour éviter le délai dû à la lenteur du réseau mais le format est identique à ce que vous auriez trouvé sur le site officiel. Vous êtes donc dans les conditions réelles d'utilisation. Voici le mode opératoire :

mkdir $HOME/distrib_apache
cd distrib_apache
cp /u/I3S/buffa/www/internet/apache_1.2b6.tar.gz .
gunzip -c apache_1.2b6.tar.gz | tar xovf -

Débrouillez vous maintenant pour compiler le programme (commencez par lire le fichier README). Vous n'avez normalement pas à changer les fichiers de configuration, mais vous pouvez y jeter un oeil quand même.

Notes importantes pour la suite :

Configuration du serveur

Rappel : les fichiers de configuration se trouvent dans la distrib dans le repertoire conf. Ce sont ces fichiers que vous aurez à modifier. Avant de les modifier, recopiez-les sous les noms suivants : access.conf, httpd.conf, srm.conf, n'écrasez pas les originaux de la distribution.

Votre nouvel employeur vous a demandé d'installer un serveur qui vérifie les spécifications suivantes :

  1. La base de toute l'arborescence des documents doit être my_dir/Docs/. Une requête sur votre serveur, sans preciser le nom d'un document doit renvoyer la home page de votre serveur située dans ce dir. La Home Page s'appelle par défaut index.html.
  2. Les logs et les fichiers de configuration doivent être dans my_dir/logs/ et my_dir/conf.
  3. Les accès seront dans logs/acces.log, les erreurs dans logs/erreur.log, les clients utilisés dans logs/client.log.
  4. Le sous-directory my_dir/Docs/private/my-machine/ ne pourra être accédé que par votre propre machine et aucune autre (voir "authentification", allow, deny, order, dans la doc) . Vous pourrez soit créer un fichier .htaccess contenant les autorisations, soit mettre ces autorisations entre <DIRECTORY>...</DIRECTORY> dans le fichier access.conf
  5. Le sous-directory my_dir/Docs/private/me/ ne pourra être accédé que par vous (avec mot de passe, donc "authentification", voir AuthUserFile). Vous pourrez utiliser le programme htpasswd pour générer des mots de passe.
  6. L'administrateur du serveur devra être vous-même, joignable à une adresse e-mail valide.
  7. Les requêtes pour les URL http://votre-machine.essi.fr:8080/inria/* devront être redirigées vers les pages correspondantes à l'INRIA (http://www.inria.fr/*).
  8. Les images présentes dans le directory my_dir/images/ devront être accessibles par http://votre-machine.essi.fr:8080/images/.
  9. Les fichiers présents dans le sous-directory my_dir/images devront avoir le type image/gif par défaut.
  10. Les utilisateurs auront leur espace utilisateur accessible par http://votre-machine.essi.fr/~login/, qui devra correspondre au directory Unix ~login/www/.
  11. Une requête erronée (404) doit avoir une réponse en francais du type Ce fichier n'existe pas. Vous pouvez envoyer un mail à votre-login@essi.fr
  12. Une requête non autorisée doit être redirigée sur la page de garde de l'essi (http://www.essi.fr/).
  13. Les scripts CGI seront dans my_dir/Docs/misc/cgi-bin et accessibles de manière indifférenciée par http://votre-machine.essi.fr:8080/cgi-bin/nom-du-script ou http://votre-machine.essi.fr:8080/htbin/nom-du-script.
  14. Est il ici possible de lire le source d'un script cgi-bin ? Qu'en pensez vous ? (Pirates ou hackers furieux).
  15. Les fichiers dans my_dir/Docs/as-is/ sont destinés à être envoyés tels que, sans que le serveur ne rajoute d'entête. Quelles sont les utilisations possibles de tels fichiers ? Pour les hackers.
  16. Votre machine n'ayant pas d'alias DNS (c-à-d qu'elle ne possède pas plusieurs adresses IPs associées à plusieurs noms, comme news-srv.essi.fr et www.essi.fr), il n'est a priori pas possible que le serveur se comporte différemment si il est accédé par www.societe1.fr ou par www.societe2.fr. Pourtant, avec les browser récents, le nom du serveur est passé en toutes lettres (au lieu de la simple adresse IP) lors de requêtes pour un URL donné. Apache sait utiliser ce nom pour "simuler" les alias DNS. Tester votre serveur avec plusieurs noms associés à la même adresse IP (celle de votre-machine.essi.fr) Comment faudrait il faire, si les alias DNS existaient ? Quels sont les avantages d'une telle pratique ? Connaissez vous des serveurs "virtuels" ? Pour les véritables Hackers.

Si vous n'êtes pas arrivés au bout, rien de grave. Essayez quand même d'avoir une bonne idée des possibilités offertes par un serveur. Si vous avez à lancer un serveur en tant que root, n'oubliez surtout pas de changer son uid à autre chose que root (au fait, pourquoi ?).

Nous verrons lors des prochains cours encore bien d'autres possibilités de configuration.