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 à l'essi (http://www.essi.fr/apache/) ou en local dans /u/I3S/buffa/www/cours/internet/DocsApache/docs/*
Vous allez installer un serveur sur votre machine, qui va tourner sur
le port 8080, le port 80 (et tous 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. Elles sont installées en local
pour éviter le
délai du à 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/my_dir
cd my_dir
cp /u/I3S/buffa/www/cours/internet/apache_1.0.0.tar.gz .
gunzip -c apache_1.0.0.tar.gz | tar xovf -
Remarque : vous pouvez aussi télécharger apache_1.0.0.tar.gz
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
Votre nouvel employeur vous a demandé d'installer un serveur qui
vérifie les spécifications suivantes :
- La base de toute l'arborescence des documents doit être
my_dir/Docs/.
- Les logs et les fichiers de configuration doivent être dans
my_dir/logs/ et my_dir/conf.
- Les accès seront dans logs/acces.log, les erreurs
dans logs/erreur.log, les clients utilisés dans
logs/client.log.
- Le sous-directory my_dir/Docs/private/my-machine/ ne
pourra être accédé que par votre propre machine et aucune autre (voir
"authentification" dans la doc)
- Le sous-directory my_dir/Docs/private/me/ ne pourra
être accédé que par vous (avec mot de passe, donc "authentification").
- L'administrateur du serveur devra être vous-même, joignable à
une adresse e-mail valide.
- 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/*).
- Les images présentes dans le directory my_dir/images/
devront être accessibles par http://votre-machine.essi.fr:8080/images/.
- Les fichiers présents dans le sous-directory
my_dir/images devront avoir le type image/gif par
défaut.
- Les utilisateurs auront leur espace utilisateur accessible par
http://votre-machine.essi.fr/~login/
, qui devra correspondre au directory Unix ~login/www/
.
- 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
- Une requête non autorisée doit être redirigée sur la page de
garde de l'essi (
http://www.essi.fr/
).
- 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.
- Est il ici possible de lire le source d'un script cgi-bin ?
Qu'en pensez vous ? (Pirates ou hackers furieux).
- 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.
- Votre machine n'ayant pas d'alias DNS (c-à-d qu'elle ne
possède pas plusieurs noms équivalents comme jessica.essi.fr
et www.essi.fr), il n'est pas possible que le serveur se
comporte différemment si il est accédé par www.societe1.fr ou
par www.societe2.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 ?).