Apache 1er partie

ArticleCategory: [Artikel Kategorie]

Webdesign

AuthorImage:[Bild des Autors]

[Photo de l'auteur]

TranslationInfo:[Author and translation history]

original in fr Charles vidal

AboutTheAuthor:[Über den Autor]

Président d'un lug gastronomique à Paris. Il aime la philosophie GNU et Open Source, car c'est dans le même ordre d'idée que le partage de connaissances. Il aimerait avoir du temps pour jouer du Saxophone.

Abstract:[Zusammenfassung]

Cette article est la première partie d'une série d'articles sur le serveur HHTP ( WEB ) le plus utilisé au monde. Apache . Dans Cette première partie , nous allons voir l'historique du WEB, le protocole HTTP, ainsi que les fonctionnalités de base d'Apache.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Historique

Ce sont les gens du CERN (centre européen de recherche nucléaire) qui ont développé le concept de serveur et client HTTP. Une fois leur travail de recherche terminé, ils ont confié cela à une université américaine (NSCA). Beaucoup de gens seraient surpris de savoir que ce sont les européens qui ont inventé les bases du WEB moderne (et particulièrement les français). Apache est le nom d'un projet libre de serveur WEB. Le nom apache a une origine un peu contesté , certains disent que cela vient de "a patchy server" à cause des nombreux patches du début ( encore un truc de Hacker :) , d'autres disent d'une manière plus sérieuse que les instigateurs de ce projet ont pris ce nom en mémoire des Apaches pour leur grand adaptabilité sur le terrain. Ce serveur est le plus utilisé sur la toile qu'est internet. il respecte le protocole HTTP (1.1) normalisé par le consortium w3 .
D'aprèsles études de netcraft Juin 1999 le serveur apache est utilisé à 60.05 %. Un serveur WEB est le programme "serveur" répondant aux requêtes de clients web comme par exemple un browser WEB , lynx :) .

Le protocole HTTP.

Le serveur et le client web communiquent grâce au protocole HTTP (Hypertext Transfer Protocol ) Nous en sommes à la version 1.1 de ce protocole , on parle alors HTTP 1.1

Ce protocole peut se décomposer en deux grandes sous-parties : La requête, et la réponse du serveur.
  1. La requête:

    Basiquement, elle se compose d'une ligne correspondant à la demande du client, celle-ci peut être décomposée en trois sous-parties.

    1. [Type de requête]
    2. [URL]
    3. [Protocole utilisé]

    Cette ligne peut ou doit être suivie d'autres lignes permettant d'affiner la requête , comme nous le verrons pour une requête HTTP/1.1

  2. La réponse:

    La réponse du serveur se compose d'un entête et du corps de la réponse ( qui varie suivant le type de requête bien sûr ).


    	    >telnet www.linuxfocus.org 80
    	    Trying 195.53.25.18...
    	    Connected to nova.linuxfocus.org.
    	    Escape character is '^]'.
    	    GET / HTTP/1.0 <return>
    	    <return>
    	    HTTP/1.1 200 OK
    	    Date: Mon, 27 Sep 1999 21:23:20 GMT
    	    Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)
    	    Last-Modified: Sun, 26 Sep 1999 16:40:44 GMT
    	    ETag: "4b005-1616-37ee4c8c"
    	    Accept-Ranges: bytes
    	    Content-Length: 5654
    	    Connection: close
    	    Content-Type: text/html
    	    <PAGE HTML>
    	    

    Analysons le résultat :
    Tout d'abord la première ligne indique le protocole utilisé pour la réponse, puis le code de retour du serveur (les codes supérieurs à 400 indiquent une erreur). Puis la date , le type de serveur, la date de dernière modification (ceci permet au client web de savoir si ce qu'il a dans son cache est valide ou non). Content-Length indique la taille du document envoyé (il n'y a pas de Content-Length pour des scriptes CGI), le Content-Type donne à votre client WEB le type MIME de ce qui est envoyé (texte , html, images ...)

    Je n'ai pas tout décrit car certaines choses me sont inconnues. :)


    Regardons maintenant le cas d'une erreur...
    	>telnet www.linuxfocus.org 80
    	Trying 195.53.25.18...
    	Connected to nova.linuxfocus.org.
    	Escape character is '^]'.
    	get / HTTP/1.0 <return>
    	<return>
    	HTTP/1.1 501 Method Not Implemented
    	Date: Mon, 27 Sep 1999 21:22:03 GMT
    	Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)
    	Allow: GET, HEAD, OPTIONS, TRACE
    	Connection: close
    	Content-Type: text/html
    	
    Comme vous pouvez le voir, l'entête de la réponse parle de lui-même.

    Le protocole HTTP est très simple comme nous allons le voir dans des petits exemples:
    	>telnet www.linuxfocus.org 80
    	Trying 195.53.25.18...
    	Connected to nova.linuxfocus.org.
    	Escape character is '^]'.
    	GET / < return >
    	      < return >
    	
    [le contenu de index.html du site linux focus arrive alors ]..
    Que s'est il passé du côté du serveur apache?

    Avec la commande telnet vous vous êtes connecté à la machine www.linuxfocus.org (adresse IP 195.53.25.1) sur le port 80. Port habituel pour ce protocole. Le serveur de l'autre coté était en attente d'une requête. Vous avez tapé GET / et deux fois retour chariot.

    Pourquoi les deux retours chariots ? , et bien cela indique la fin de votre requête (vous avez envoyé une ligne vide) . Le serveur alors vous répond en vous envoyant le fichier demandé ( index.html ).

    Puis à la fin du transfert , la connexion est fermée. Comme vous pouvez le constater le langage entre le navigateur web et le serveur est simplissime. Mais attention , cela se complique avec les versions de HTTP :

    GET / HTTP/1.0< return >
    < return >
    HTTP/1.1 200 OK
    Date: Tue, 24 Aug 1999 22:25:11 GMT
    Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)
    Last-Modified: Sun, 01 Aug 1999 11:50:52 GMT
    ETag: "4b005-1462-37a4349c"
    Accept-Ranges: bytes
    Content-Length: 5218
    Connection: close
    Content-Type: text/html
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ....
    
    Mais finalement avec le 1.1 on obtient :
    GET / HTTP/1.1 <return >
    < return >
    HTTP/1.1 400 Bad Request
    Date: Tue, 24 Aug 1999 22:24:59 GMT
    Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <HTML><HEAD>
    <TITLE>400 Bad Request</TITLE>
    </HEADBODY>
    <H1>Bad Request</H1>
    Your browser sent a request that
    this server could not understand.<P>
    client sent HTTP/1.1 request without hostname (see RFC2068 section 9, and 14.23): </P>
    </BODY></HTML>
    

    Effectivement avec le nouveau protocole HTTP/1.1 la requête necessite plus d'information. Le requête doit comprendre plusieurs lignes. Cet ajout permet de transmettre au serveur plus d'information pour de meilleurs échanges.

    Ce protocole est à la version 1.1 , et les gens d'apache ont respecté à la lettre les spécifications. Le nouveau protocole offre un grand nombre de fonctionnalités nouvelles: Authentification Site virtuel ( plusieurs sites peuvent avoir une seule adresse IP voir nslookup).

    Exemple:
    GET / HTTP/1.0< return >
    Host:www.linuxfocus.org< return >
    < return >
    [...]
    

    Comme la plupart des programmes client-serveur, le serveur , lorsqu'il reçoit une requête,

    Fonctionnalité

    Le serveur web est l'interface entre le client web demandant une URL (Uniform Request Locator) ce terme n'est pas le seul il y a aussi URI, URN mais la n'est pas notre propos, et le système où se trouve ce serveur.

    Effectivement, le client WEB lui envoie sa requête, et le serveur lui retourne, les pages html correspondantes à l'URL demandée,le client demandera les images se trouvant dans celles ci, le serveur lui enverra de même. Mais il peut suivant la requête, aussi faire l'interface avec quelques programmes du système , choisis ou écrits par l'administrateur du site (appelé aussi WebMaster) ; ces programmes sont appelés les scripts CGI ( Common gateway interface ) et retourne une page html. Nous verrons par la suite que l'on peut ajouter de nouvelles fonctionnalités au serveur WEB par la technique des modules. Voila les fonctionnalités de base d'un serveur HTTPD.

    Conclusion

    Essayez pour bien comprendre ce que fait apache, les différents tests avec telnet.

    Nous verrons dans les prochains articles la configuration, les modules d'apache (avec les virtual hosts, certains modules permettant de dynamiser vos pages HTML ( php , perl etc ... ) , le module SSL ( Secure Socket Layer ) ,et pour finir la compilation d'Apache.