Chapitre 33 : Le serveur http


 



Dernière mise à jour  16 juin  1998  Auteur Gilles Maire
Serveur  http://www.imaginet.fr/ime/httpd.htm Adresse Gilles.Maire@UNGI.com

Dans le chapitre Ecrire sa page Web, nous avons vu comment écrire les pages html , avec la gestion des graphiques, des tableaux, et des procédures CGI.

Ce chapitre explicite comment installer cette page sur un serveur pour que tous puissent y accéder. Le serveur sera capable d'envoyer simultanément plusieurs pages html à plusieurs clients, il sera capable de prendre en compte les appels aux procédures CGI, il sera capable encore de filtrer les connectés et de tracer dans un fichier l'ensemble des connexions. Ces différentes options dépendront du matériel utilisé et du logiciel serveur que vous choisirez.

Il est bien évident qu'un serveur fonctionnant sur un Macintosh ou sous Windows sera moins puissant que son homologue s'exécutant sur un système Unix. Mais il est parfois intéressant de pouvoir faire fonctionner un serveur http sur un ordinateur personnel pour tester l'enchaînement de ses pages, les procédures CGI etc ...
 
 

33.1 - Les différents logiciels serveurs

Les serveurs

En fonction du matériel utilisé, le serveur http sera bien sûr différent en terme de nombre d'accès simultanés, en terme de protection et de contrôle.

Vous trouverez un article en anglais sur la page de Webcompare [http://webcompare.iworld.com] qui vous donnera les dernières informations au sujet des différents serveurs, freeware, shareware ou commerciaux.

La page de Yahoo
[http://www.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/HTTP/Servers/]
concernant les serveurs http renvoit ici encore sur les meilleures ressources sur le sujet.

Si dans les précédentes versions d'UNGI nous donnions une liste des serveurs qui commençait à dater, nous nous bornerons maintenant à étudier les quelques serveurs les plus utilisés, c'est à dire les plus performants, en approfondissant leur fonctionnement.

Les serveurs étudiés ici sont donc

Apache

Apache  ne doit pas son nom à la communauté amérindienne mais initialement à la transposition phonétique de "a patch "  qui correspond à un ajout logiciel fait au départ  sur le serveur du NCSA. Aujourd'hui Apache est le serveur HTTP le plus utilisé dans le monde Internet et ce succès est dû  d'une part à sa  robustesse, et d'autre part  à l'engoûment actuelle des logiciels gratuits sous l'impulsion d'Internet.  En janvier 1998 Apache est utilisé par plus de 50% des serveur Web sur Internet.
Si au départ Apache était destiné uniquement au monde  UNIX, la version 1.3 l'a rendu compatible avec Windows NT et Windows 95.
Si l'on ne trouve pas ici de module de configuration par le Web, si les modules graphiques d'installation n'ont vu le jour qu'à partir de fin 1997, on trouve un nombre impressionant de modules adjoingnables au serveur Apache et tous gratuits.

Sur Windows NT Apache fonctionne comme un véritable service ou comme une application, et est compatible avec les ISAPI de Microsoft.
Apache fut le premier des serveur à offrir un module PERL monté en mémoire et permettant l'exécution de CGI PERL à haute vitesse.

Notons aussi que les fichiers de log sont tout à fait standards et peuvent être utilisés par tous les logiciels d'analyse et d'édition.
Les CGI peuvent avoir leur propre fichier de log, ce qui est indispensable puisque cette option permet de tester les problèmes de vos programmes.

Apache supporte les SSI, les inclusions de code HTML, le protocole HTTP/1.1, les mots de passe sur des pages, et enfin les SSL 2 et 3 sont supportées.

Sur le Web d'Apache, une rubrique intéressante doit être visitée, celle des projets autour d'Apache dans laquelle on  trouve :

Microsoft Information Server

Microsoft propose un serveur tout à fait rapide et robuste dans les environnements Windows NT. IIS qui n'est utilisé que sur 20% des sites Internet est sûrement plus utilisé dans les environnements Intranet.  IIS est actuellement disponible en version 4.0.

Les  points forts du serveur de Microsoft résident dans son ergonomie, puisque le serveur est administrable par un assistant graphique et également par le Web. Dans les versions actuelles, la gestion des logs est tout à fait identique à celle des autres serveurs. ( HTTP 1.1, SSL2, SSL3)

L'originalité du serveur IIS réside également dans son langage de scripting Active Server Page (que l'on reconnaît par l'extension des pages en asp). Par contre, ce langage propriétaire interdit tout portage sur un serveur autre que celui de la marque. Ainsi la prudence sera de mise pour les utilisateurs de serveurs Microsoft Information Serveur en Intranet qui pourraient être amenés à mettre leurs pages sur Internet, via un hébergeur  qui ne posséderaient pas ce type de serveur.

A noter le support des agents SNMP permettant notamment l'administration par les outils d'administration.

En outre, IIS est livré avec Microsoft Index Server qui est un moteur de recherche interne permettant d'indexer et de retrouver par mots clé les pages archivés sur le serveur. IIS est également étroitement couplé avec Front Page  et SiteServer Express les outils de développement de Microsoft.
 

Netscape Interprise Server et Commerce Server

Netscape est le troisième des serveurs HTTP utilisés sur Internet puisqu'il est passé en dessous de Internet Information Server en terme de nombre d'utilisateurs.
Le fait que NFTS puisse fonctionner sur les principaux systèmes UNIX et sur toutes les architectures Windows NT ( mais pas sous Windows 95) , ne parvient pas à en faire le produit le plus utilisé. Depuis qu'Apache fonctionne sous Windows 95 et NT, l'avantage d'un serveur multi plateforme n'est plus l'argument unique de la firme au lézard vert.

Le serveur Netscape possède ses API, appelées NSAPI,  qui sont bien sûr différentes de celles proposées par Microsoft sous le nom de ISAPI. Aujourd'hui les produits périfériques des serveurs http, comme les connexions base de données sont généralement ISAPI et NSAPI mais une étude statistique prouve que ISAPI est davantage suivi que NSAPI. Les dernières versions de Netscape comprennent une interface JAVA Applet API qui permet au serveur de lancer des programmes JAVA de façon plus rapide, en gardant en mémoire l'interpréteur JAVA.

Les interfaces de maintenance par le Web ou par des programmes spécifiques sont d'aussi bonne facture que celles proposées par Microsoft. Ainsi la version 3 de Netscape Inrterprise serveur équivaut à la version 4 d'Internet Information serveur.

Il est à noter un compilateur JavaScript sur le serveur permettant de générer de façon dynamique les codes HTML.

Netscape a rejoint quelques technologies intéressantes telles que LDAP et CORBA.

Enfin Netscape Interprise Server se décline en produits de bureautique avec une version  personnelle de développement FastTrack  fournie avec une version de communicator accompagnée de son éditeur HTML.

OmniHTTP

Version récente sous Windows la version 2 n'est pas dénuée d'intérêt. La version 1 est encore en freeware.
 

33.2 - Ecrire les procédures CGI sur le serveur

Ecrire des procédures CGI demande de connaître la programmation, cette activité est plutôt réservée à un public averti.

Le développement peut être en C, en Pascal, en Basic ou en tout autre langage informatique.

Il existe cependant un langage très riche et très adapté à la manipulation des fichiers, c'est le langage PERL.

Le langage PERL regroupe la puissance des langages C, Shell Script, awk, sed et grep. Ceci ne dira rien aux néophytes mais pour les connaisseurs du système UNIX, cela évoque les langages les plus puissants et les plus astucieux.

Le langage PERL fait l'objet de deux chapitres du présent guide :

L'introduction du premier explique comment créer une première procédure CGI simple.

33.3 - L'option SSI

Les procédures SSI (Server-Side Includes) servent à afficher des informations dynamiques aux clients. Par exemple, vous pouvez envoyer le nombre de clients qui ont visité la page.

Cette option n'est pas présente sur tous les serveurs notamment les serveurs freeware.

Ceci peut se vérifier aisément par le programme suivant inclus dans votre page html :

La date est :

<!--exec cmd='date' -->

Si votre serveur httpd accepte les SSI vous pouvez vous engager vers une programmation souple et rapide comme le montre le chapitre sur les SSI.

33.4 - La configuration du serveur

La sécurité

La sécurité d'un serveur http consiste à limiter l'accès du serveur à des clients suivant des critères tels que : Les façons de faire changent d'un serveur à l'autre mais généralement on retrouve des similitudes dans les méthodes de déclaration.

Certains serveurs ne disposent pas d'option de contrôle d'accès. Il faut donc se référer au cas par cas à la documentation des serveurs http.

Le renvoi des pages sur un autre serveur http

Il se peut que vous décidiez de changer votre page HTML de serveur http. Or ceci peut poser un problème si votre page est déclarée dans un grand nombre de sites; il est, en effet, impossible de connaître avec précision la liste des pages vous référençant.
 
 
 
 

 La solution est prévue sur la plupart des serveurs http. Par exemple, sur le serveur NCSA, ceci se fait dans le fichier de configuration srm.conf à la rubrique redirection, en mettant le nouvel URL, comme le montre l'exemple suivant :

# ========================
# Aliasing and Redirection
# ========================
#
# Redirect allows you to tell clients about documents which used to exist in
# your server's namespace, but do not anymore. This allows you to tell the
# clients where to look for the relocated document.
#
# Format: Redirect fakename url
#

Les alias

Imaginez que votre home page s'apelle http://www.imaginet.fr/~gmaire/toc.htm et que cela ne vous parait pas très facile à retenir pour vos lecteurs. Vous pouvez demander à votre gestionnaire de site de changer cette adresse pour un alias plus convivial, par exemple http://www.imaginet.fr/ime.
 
 
 
 

 Ceci se fait dans le fichier de configuration srm.conf, dans la rubrique Aliasing. comme le montre la séquence suivante :

# Aliases: Add here as many aliases as you need, up to 20. One useful
# alias to have is one for the path to the icons used for the server-
# generated directory indexes. The paths given below in the AddIcon
# statements are relative.
#
# Format: Alias fakename realname
#
Alias /ime/ /~gmaire/manuel.htm

Les messages d'erreur

Les messages d'erreur sont normalisés sur les serveurs http dans la mesure où ils correspondent à des numéros dont le plus connu est sans nul doute 404 , qui signifie que la syntaxe demandée est correcte mais que le fichier demandé ne se trouve pas sur le serveur. En général, il s'agit bien sûr d'une page qui n'existe plus sur un serveur.
 
 
 
 

 Regardons ces messages d'erreur :

Numéro de
message 
Signification
301
Le document a été déplacé de façon permanente
302
Le document a été déplacé de façon temporaire
304
Le document n'a pas été modifié, il est donc possible d'utiliser la copie du cache Netscape ou d'un proxy serveur 
400
L'adresse du document contient une erreur de syntaxe
401
Vous n'êtes pas autorisé à accéder au document
402
L'accès au document est soumis à un paiement
403
Vous êtes interdit d'accès sur le serveur
404
L'URL demandée est valide mais n'est pas sur le serveur
405
La méthode de requête du formulaire n'est pas autorisée
406
La requête n'est pas acceptée par le serveur
407
Une autorisation proxy est nécessaire
408
Le temps d'attente pour accéder à la page demandée a expiré
500
Une erreur interne du serveur est survenue
501
Une requête faite au serveur n'est pas supportée par celui-ci
502
Mauvaise passerelle d'accès
503
Service non disponible
504
Temps d'accès à la passerelle d'accès expiré

33.5 - L'option imagemap

L'option Imagemap permet lorsqu'une image cliquable est utilisée, de déterminer les actions à effectuer selon la région désignée.
 
 
 
 

Généralement l'option est contenue dans le fichier imagemap.conf sur le serveur http avec l'ensemble des fichiers de configuration. Ce fichier contient des lignes de la forme :

 carte : /directory/.../.../carte.map .

Ceci sera appelé dans la page html par la séquence :

 <A href="/imagemap/carte">
<img src=gif/arte.gif ismap>
</A>
carte représente un fichier image à cliquer. On peut avoir autant de lignes que de cartes à cliquer. Pour chaque carte on retrouvera dans le fichier carte.map correspondant, un ensemble de lignes du genre :

 #par defaut on appelle le programme prog1 (il y a bien un espace entre defaut et /demo)
default /demo/prog1.htm
#Les cercles sont définis par le centre et par le rayon, on appellera alors prog2 :
circle /demo/prog2.htm 50,50 50,10
# Les rectangles sont définis par les coins opposés :
rect /demo/prog3.htm 130,10 170,90
# Les polynômes sont définis par un ensemble de points
poly /demo/prog4.htm 250,10 210,90 290,90

 Ainsi un menu comprenant une carte sera défini avec plusieurs rectangles :

default /ismap/cit/no_image.html
rect /ismap/prog1.html 382,262 390,271
rect /ismap/prog2.html 373,394 383,406
rect /ismap/prog3.html 472,324 483,336

Pour trouver les coordonnées des rectangles ou des polynômes, il suffit de promener la souris sur la carte dans un bon lecteur de Web. Vous verrez le champ adresse de l'URL donner les informations sous la forme /cgi/procedure?x,y et il vous suffira alors de noter ces valeurs.

 Ceci peut se voir par exemple sur la carte de France france.htm bien que la procédure appelée soit un programme Perl et non pas un imagemap

33.6 - Les fameux cookies

Introduction

Deux connexions consécutives depuis un même client sont indépendantes au vu du protocole HTTP, c'est à dire qu'elles sont vues comme deux connexions totalement indépendantes, ceci n'est pas pratique, puisque le programme CGI sur le serveur, ne peut pas garder le contexte notamment dans le cadre d'applications plus complexes que la simple consultation de base de données. Notons qu'il existe plusieurs moyens classiques de contourner le problème : Le serveur HTTP envoi les cookies dans l'entête HTTP au client. Ces cookies contiennent les différents descriptifs accompagnant les URL visitées, ces cookies sont conservées sur votre disque dur en vue d'être exploité lors d'une prochaine connexion.
 
 
 

Sur votre équipement, vous pouvez consulter le fichier cookie dans le dossier Netscape, program; il se trouve dans le fichier cookies.txt et il est lisible par un éditeur de texte. Ceci est une première chose à savoir, car il devient facile d'analyser quelles sont les URL que vous visitez (si ces URL contiennent des Cookies et que votre navigateur est activé pour les recevoir).
 
 

Regardons la structure du fichier cookie par l'analyse d'une ligne du  fichier cookie :
 
 

.scarabee.com TRUE / FALSE 942195540 LANG_scarabee

 

Nous savons déjà que le navigateur a interrogé une adresse contenant  .scarabee.com, probablement www.scarabee.com et la suite nous montrera les informations qui seront conservées au sujet de ce site par le navigateur.

Syntaxe

Les cookies sont stockés sur le client dans un fichier cookies.txt, ces cookies peuvent être utilisés par un CGI, ou par JavaScript en utilisant l'une des propriétés de l'objet document.
 
 

Un programme CGI utilise les cookies en ajoutant des informations dans l'entete HTTP sous la syntaxe suivante :

Set-Cookie: NOM=valeur [;EXPIRES=date] [;DOMAIN=nom_de_domaine][;PATH=chemin][;SECURE]
 
 

Les différents paramètres sont utilisés comme suit :

Remarques

Lorsque le cookie est envoyé par le serveur, le navigateur consulte sa liste des cookies et compare la liste des domaines et celle du domaine de l'URL consulté.
 
 

La correspondance est faite uniquement sur la fin de l'URL, c'est à dire en comprenant l'extension de domaine (.com, .fr, .edu) et le nom précédent. Ainsi www.imaginet.fr sera sauvegardé avec l'identifiant DOMAIN imaginet.fr, mais le cookie du site www.imaginet.digipresse.fr sera enregistré avec l'identifiant DOMAIN digipresse.fr, alors que www.mail.imaginet.fr sera enregistré avec l'identifiant DOMAIN imaginet.fr.

 

La variable PATH quant à elle spécifie le chemin valide pour le cookie. Pour PATH=/ime avec DOMAIN=imaginet.fr,

l'enregistrement du COOKIE se fera pour /ime mais aussi pour /imediat ou pour /ime/toc.htm
 
 

Ainsi, lors de la consultation d'une URL correspondant au nom de domaine et au chemin, le navigateur, va envoyer la liste des variables sauvegardées sur votre disque dur.
 
 

Pour détruite un cookie, depuis le serveur, il suffit d'envoyer une variable avec une date d'expiration déjà expirée.
 
 

Les navigateurs peuvent sauver aujourd'hui 300 cookies, sachant que chacun d'eux peut contenir 4 Ko d'information. Il existe une limite de 20 cookies par domaine. Si ces limites sont atteintes, le navigateur détruit les  cookies avec la date d'expiration les plus récentes.
 
 

Exemple

Un navigateur envoi une requête à un serveur HTTP et reçoit dans l'entête HTTP du document la réponse  :
Set-Cookie: VISITEUR=gilles ; path=/; expires=Wednesday,    09-Nov-99 23:12:40 GMT
Ce cookie est sauvé sur le fichier cookie.txt et lorsque le client fait une requête sur le même serveur avec le chemin / il envoie au serveur le message suivant :
Cookie: VISITEUR=gilles
Puis il peut recevoir un autre cookie de ce serveur par exemple :
Set-Cookie: CATEGORIE=Prospect; path=/
A ce moment l'information cookie relative à l'URL devient
Cookie: VISITEUR=gilles; CATEGORIE=Prospect
Puis dans la même URL, si toujours avec le même navigateur, je décide d'acheter un produit le cookie suivant peut m'être envoyé :
Set-Cookie: CATEGORIE=Client; path=/
Ainsi le navigateur est identifié par le fichier cookie avec l'information suivante :
Haut Haut Suivant Sommaire Recherche Fenêtre Glossaire Nouveau Bientôt Courrier Souscription Aide Copyright