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 :
- ATTENTION : il ne faut pas que les sources de votre serveur, la distribution
que vous venez de détarer et de compiler se trouve au même
endroit que le serveur lui-même, avec ses pages html, etc... Vous
créerez donc un autre directory appelé my_dir, à
un endroit bien différent du directory ou vous avez desarchivé
apache. Vous pouvez voir un exemple
d'organisation d'un serveur.
- Les fichiers d'erreur et de logs du serveur vous seront précieux
pour débugger. La commande tail -f nom_de_fichier
permet de lire un fichier en continu . Utilisez-la sur le fichier error_log
- Pour lancer votre serveur, lancer la commande
httpd -d my_dir &
- Pour relire les fichiers de configuration sans relancer le serveur,
faire :
xargs kill -HUP < logs/httpd.pid
Regardez la commande restart_apache dans l'exemple d'install, repertoire bin.
Pour vraiment tuer le serveur :
xargs kill -TERM < logs/httpd.pid
Voir commande stop.
Toutes les réponses aux questions suivantes se trouvent dans
la documentation du serveur, cherchez
bien.
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 :
- 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.
- 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", 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
- 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.
- 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 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.