Vous êtes sur la page 1sur 37

Cours Apache : INSTALLATION ET ADMINISTRATION

ATRID

Cours Apache : INSTALLATION ET ADMINISTRATION par ATRID Copyright 1999-2000 par ATRID Systmes
Ce document peut tre librement lu, stock, reproduit, diffus, traduit et cit par tous moyens et sur tous supports aux conditions suivantes:

Tout lecteur ou utilisateur de ce document reconnat avoir pris connaissance de ce quaucune garantie nest donne quant son contenu, tous points de vue, notamment vracit, prcision et adquation pour toute utilisation ; il nest procd aucune modication autre que cosmtique, changement de format de reprsentation, traduction, correction dune erreur de syntaxe vidente, ou en accord avec les clauses ci-dessous ; le nom, le logo et les coordonnes de lauteur devront tre prservs sur toutes les versions drives du document tous les endroits o ils apparaissent dans loriginal, les noms et logos dautres contributeurs ne pourront pas apparatre dans une taille suprieure celle des auteurs prcdents, des commentaires ou additions peuvent tres insrs condition dapparatre clairement comme tels ; les traductions ou fragments doivent faire clairement rfrence une copie originale complte, si possible une copie facilement accessible ; les traductions et les commentaires ou ajouts insrs doivent tre dats et leur(s) auteur(s) doi(ven)t tre identiable(s) (ventuellement au travers dun alias) ; cette licence est prserve et sapplique lensemble du document et des modications et ajouts ventuels (sauf en cas de citation courte), quelquen soit le format de reprsentation ; quel que soit le mode de stockage, reproduction ou diffusion, toute version imprime doit contenir une rfrence une version numrique librement accessible au moment de la premire diffusion de la version imprime, toute personne ayant accs une version numrise de ce document doit pouvoir en faire une copie numrise dans un format directement utilisable et si possible ditable, suivant les standards publics, et publiquement documents en usage ;

La transmission de ce document un tiers se fait avec transmission de cette licence, sans modication, et en particulier sans addition de clause ou contrainte nouvelle, explicite ou implicite, lie ou non cette transmission. En particulier, en cas dinclusion dans une base de donnes ou une collection, le propritaire ou lexploitant de la base ou de la collection sinterdit tout droit de regard li ce stockage et concernant lutilisation qui pourrait tre faite du document aprs extraction de la base ou de la collection, seul ou en relation avec dautres documents. Toute incompatibilit des clauses ci-dessus avec des dispositions ou contraintes lgales, contractuelles ou judiciaires implique une limitation correspondante : droit de lecture, utilisation ou redistribution verbatim ou modie du document. Adapt de la licence Licence LLDD v1, octobre 1997, Libre reproduction Copyright Bernard Lang [F1450324322014] URL : http://pauillac.inria.fr/~lang/licence/lldd.html

Historique des version Version 1.0 du 3/09/1998 Version initiale Version 1.1 du 28/01/2000 Ajout API Modules

Version 1.2 du 07/11/2000 Conversion en SGML DocBook

Table des matires


1. Prsentation........................................................................................................................................................ 6 2. Le protocole HTTP ............................................................................................................................................ 7 2.1. Dnitions ............................................................................................................................................... 7 3. Compilation et installation................................................................................................................................ 8 3.1. Conguration .......................................................................................................................................... 8 3.2. Compilation............................................................................................................................................. 8 3.3. Installation............................................................................................................................................... 9 4. Le premier site ................................................................................................................................................. 10 4.1. 4.2. 4.3. 4.4. 4.5. 4.6. Introduction ........................................................................................................................................... 10 Un site plus volu ................................................................................................................................ 11 Les enregistrements............................................................................................................................... 12 La gestion des accs.............................................................................................................................. 13 Les serveurs virtuels.............................................................................................................................. 13 Les blocs de spcications .................................................................................................................... 14 4.6.1. Bloc Directory .......................................................................................................................... 14 4.6.2. Bloc Location ........................................................................................................................... 15 4.6.3. Bloc Files.................................................................................................................................. 15 4.7. Le chier .htaccess ................................................................................................................................ 15 4.8. Lordre dvaluation .............................................................................................................................. 16 5.1. les gestionnaires (handlers) ................................................................................................................... 17 5.2. Scurit et suEXEC............................................................................................................................... 18 6. Authentication................................................................................................................................................ 19 7. Afchage des rpertoires................................................................................................................................. 21 8. La ngociation de contenu .............................................................................................................................. 23 8.1. Loptions Multiviews ............................................................................................................................ 23 8.1.1. Les images ................................................................................................................................ 23 8.1.2. Le langage ................................................................................................................................ 23 8.2. Le chier type-map ............................................................................................................................... 23 9. Le mode mandataire........................................................................................................................................ 25 10. Les scripts inclus ............................................................................................................................................ 26 11. le contrle du fonctionnement ...................................................................................................................... 28 12. La redirection................................................................................................................................................. 29 13. Les modules .................................................................................................................................................... 30 13.1. Les rservoirs ...................................................................................................................................... 30 13.2. La structure dun module .................................................................................................................... 30 13.2.1. example_init ........................................................................................................................... 31 13.2.2. example_create_dir_cong..................................................................................................... 31 13.2.3. example_merge_dir_cong .................................................................................................... 32

5. Les scripts CGI ................................................................................................................................................ 17

ATRID Systmes http://www.atrid.fr

13.2.4. example_create_server_cong ............................................................................................... 32 13.2.5. example_merge_server_cong ............................................................................................... 32 13.2.6. example_cmds ........................................................................................................................ 32 13.2.7. example_handlers ................................................................................................................... 34 13.2.8. example_translate_handler ..................................................................................................... 34 13.2.9. example_check_user_id ......................................................................................................... 34 13.2.10. example_auth_checker ......................................................................................................... 35 13.2.11. example_access_checker ...................................................................................................... 35 13.2.12. example_type_checker ......................................................................................................... 35 13.2.13. example_xer_upper ............................................................................................................ 35 13.2.14. example_logger .................................................................................................................... 35 13.2.15. example_header_parser ........................................................................................................ 36 13.2.16. example_child_init ............................................................................................................... 36 13.2.17. example_child_exit............................................................................................................... 36 13.2.18. example_post_read_request ................................................................................................. 36

ATRID Systmes http://www.atrid.fr

Chapitre 1. Prsentation
Le serveur HTTP Apache est le fruit du travail dun groupe de volontaires, The Apache Group, qui a voulu raliser un serveur Web du mme niveau que les produits commerciaux sous forme de logiciel libre cest dire que son code source est disponible. Lquipe dorigine a t rejointe par des centaines dutilisateurs qui, par leurs ides, leurs tests et leurs lignes de code, ont contribus faire dApache le plus utilis des serveurs Web du monde. Lanctre dApache est le serveur libre dvelopp par le National Center for Supercomputing Applications de luniversit de lIllinois. Lvolution de ce serveur sest arrte lorsque le responsable a quitt le NCSA en 1994. Les utilisateurs ont continu corriger les bugs et crer des extensions quils distribuaient sous forme de "patches" dou le nom "a patchee server". La version 1.0 de Apache a t disponible le 1 dcembre 1995. Lquipe de dveloppement se coordonne par lintermdiaire dune liste de diffusion dans laquelle sont proposes les modications et discutes les volutions apporter au logiciel. Les changements sont soumis un vote avant dtre intgrs au projet. Tout le monde peut rejoindre lquipe de dveloppement, il suft de contribuer activement au projet pour pouvoir tre nomm membre du Apache Group.

ATRID Systmes http://www.atrid.fr

Chapitre 2. Le protocole HTTP


HTTP est un protocole requte / rponse oprant au dessus de TCP. Le client ouvre une connexion TCP vers le serveur et envoie une requte. Le serveur analyse la requte et rpond en fonction de sa conguration. Par exemple, pour la requte :
GET / HTTP/1.0 <CR><LF><CR><LF>

Le serveur rpond :
HTTP/1.1 200 OK Date: Wed, 09 Dec 1998 17:44:56 GMT Server: Apache/1.3.3 (Unix) Last-Modified: Wed, 09 Dec 1998 09:45:16 GMT ETag: "f712-d7-366e46ac" Accept-Ranges: bytes Content-Length: 215 Connection: close Content-Type: text/html <HTML> <BODY> <H1>Bienvenue chez LigerWine</H1> <UL> <LI><A href="anjou.html">Anjou</A> <LI><A href="bourgueil.html">Bourgueil</A> </UL> <BR> <BR> LigerWine SA 3, rue RABELAIS 37512 Trouperdu </BR> </BODY> </HTML>

2.1. Dnitions
URL : Unied Resource Locator ex : http://www.apache.org/download/apache_1_3_3_tar.gz URI : Unied Resource Indicator ex : /download/apache_1_3_3_tar.gz

ATRID Systmes http://www.atrid.fr

Chapitre 3. Compilation et installation


Ce support de cours est bas sur la version 1.3.3 du logiciel Apache. La premire tape consiste rcuprer la distribution la plus rcente des sources du logiciel. La source la plus jour est le site du groupe de dveloppement Apache : http://www.apache.org. A partir de ce site, vous pouvez tre orient vers un site miroir plus proche de chez vous. Le chier rcupr est une archive tar compresse quil faut installer dans un rpertoire source :
bash$ cd /usr/src bash$ tar xvzf apache_1_3_3_tar.gz

La lecture du chier archive cre le rpertoire apache_1.3.3 et extrait les chiers dans ce rpertoire. Il est conseill de lire les chiers README, README.configure et INSTALL avant de procder la compilation et linstallation du logiciel.

3.1. Conguration
La conguration du logiciel consiste excuter le script congure avec les arguments personnalisant linstallation. Les principales options de conguration sont : Option layout help verbose quiet prex=rpertoire enablemodule=nom disablemodule=nom Signication afche les rpertoires dinstallation et de fonctionnement. afche la signication des options afche plus de messages lors de la conguration nafche aucun message lors de la conguration chemin dinstallation du logiciel (ex : /opt/apache) valide le module dont le nom est donn

dvalide le module dont le nom est donn

ajoute le chier dans le rpertoire des modules, et dans le chier de conguration et valide add-module=chier le module enable-suexec valide lutilisation de suexec

Dans la plupart des cas, on utilise :


bash$ ./configure -prefix=/opt/apache

ATRID Systmes http://www.atrid.fr

Chapitre 3. Compilation et installation

3.2. Compilation
La compilation est excute simplement en tapant la commande make. Il est possible de garder une trace de la compilation en excutant :
bash$ make > make.log 2>&1 & bash$ tail -f make.log

3.3. Installation
La phase dinstallation est aussi facile que la compilation. Elle seffectue en tapant la commande make install. De la mme faon, il possible de garder une trace de linstallation en tapant :
bash$ make install > install.log 2>&1 & bash$ tail -f install.log

Aprs cette phase, le serveur Apache est prt fonctionner moyennant une petite conguration. Dans la suite de ce document, nous allons prsenter des directives de conguration du serveur Apache. Le chier daide contient une description dtaille de toutes ces directives sous forme dun manuel de rfrence. La syntaxe utilise dans les descriptions suit le format suivant :

Syntaxe : dcrit le format de la directive Dfaut : si la directive une valeur par dfaut, celle-ci est note Contexte : spcie dans quel contexte la directive peut etre utilise (conguration du serveur, hote virtuel, directory et .htaccess) Origine : informe de lendroit ou est implment la directive (coeur, base, extension, exprimental) module : le nom du module implmentant la directive.

ATRID Systmes http://www.atrid.fr

Chapitre 4. Le premier site


4.1. Introduction
Nous allons parcourir les options de conguration dApache en nous mettant la place du responsable du site de la socit (imaginaire) LigerWine ngociant en vins de Loire. Les dirigeants de cette socit veulent tout prix utiliser les moyens les plus modernes de promotion et de vente et pensent quInternet est lavenir du commerce. Le premier site raliser est un site "vitrine" prsentant la socit au monde entier. Nous partons du principe que nous disposons dune machine raccorde Internet de faon permanente et que le nom de domaine ligerwine.com a t dpos. Pour pouvoir faire fonctionner le serveur, nous allons crer un utilisateur http appartenant au groupe http. Dans le rpertoire /opt/apache, nous crons deux petits scripts pour le lancement et larrt du serveur.
bash$ cd /opt/apache bash$ cat > go #!/bin/sh sbin/httpd -f $1 ^D bash$chmod +x go bash$ cat > stop #!/bin/sh sbin/apachectl stop ^D bash$chmod +x stop

Le paramtre du script de lancement est le chemin daccs au chier de conguration du serveur httpd. La documentation dApache propose dutiliser trois chiers de conguration en fonction des directives utilises :

le chier httpd.conf contient les directives de contrle du dmon le chier srm.conf contient les directives de spcication des documents fournis par le serveur le chier access.conf contient les directives de contrle daccs aux documents.

Nous allons utiliser un seul chier httpd.conf pour la prsentation de nos exemples. Nous signions au serveur de ne pas chercher les autres chiers en spciant les directives :
AccessConfig /dev/null ResourceConfig /dev/null

Les chiers de ce premier exemple se trouvent dans le rpertoire /opt/formation/site1 . Le chier de conguration minimal conf/httpd.conf contient :
User http Group http AccessConfig /dev/null ResourceConfig /dev/null

ATRID Systmes http://www.atrid.fr

10

Chapitre 4. Le premier site

ServerName localhost DocumentRoot /opt/formations/site1/html

Le tableau ci-dessous prsente la signication des directives utilises. Directive User Group ServerName DocumentRoot Signication Identicateur de lutilisateur pour lexcution du serveur Identicateur de groupe pour lexcution du serveur Nom du serveur pour la redirection des URL Rpertoire racine des chiers publis

Le chemin spci dans la directive DocumentRoot est ajout aux noms des chiers demands dans un URL. Par exemple, la demande http://www.ligerwine.com/prix.html va chercher le chier /opt/formations/site1/html/prix.html . Lorsque lon se connecte sur le site, le serveur envoie la liste des chiers contenus dans le rpertoire donn par la directive DocumentRoot. Le chier var/log/error_log contient les enregistrements derreurs dtectes par le serveur. Apache permet denvoyer les enregistrements derreurs dautres endroits en utilisant la directive ErrorLog. La directive LogLevel permet de spcier le niveau denregistrement : Niveau debug info notice warn error crit alert emerg Signication les messages de mise au point informations de fonctionnement conditions normales mais signicatives petits problmes non graves conditions derreur niveau critique perturbant le fonctionnement il faut ragir immdiatement systme inutilisable

Lorsquun niveau donn est demand, tous les messages des niveaux infrieurs sont afchs.

4.2. Un site plus volu


Le premier site prsent ntant pas satisfaisant en terme de prsentation, il faut crer quelques chiers contenant du code HTML pour permettre la cration de liens entre chiers et offrir plus de possibilits de navigation. Le premier chier du site sappelle index.html car cest le nom du chier afch par dfaut lors de la connexion sur le site. Il est possible de xer dautres noms avec la directive DirectoryIndex. Les chiers dexemple se trouvent dans le rpertoire /opt/formations/site2 . Il est possible de spcier des directives supplmentaires pour ajuster le fonctionnement du serveur.

ATRID Systmes http://www.atrid.fr

11

Chapitre 4. Le premier site

Directive StartServers MinSpareServers MaxSpareServers MaxRequestsPerChild MaxClients ServerAdmin ServerSignature TimeOut HostNameLookup

Signication Permet de dnir le nombre de serveurs lancs au dmarrage. Nombre minimum de serveurs en attente Nombre maximum de serveurs en attente Nombre maximum de requtes traites par un processus (0 => inni)

Nombre maximum de serveurs crs Permet de spcier une adresse mail pour les messages derreur. Permet dajouter une ligne de signature aux messages gnrs automatiquement (On ou EMail) Temps maximum dattente pour quune requte soit complte. Permet denregistrer le nom dun client plutt que son adresse dans les chiers denregistrement

Ces directives sont utilises dans le site exemple /opt/formations/site3 . Le serveur Apache gre, par dfaut, la notion de connexion persistante qui permet de grer plusieurs requtes HTTP travers la mme connexion TCP. Cette fonction entrane un gain de performance notable dans le chargement de pages possdant de nombreuses images. Cependant, cette fonction nest active que pour les chiers dont la taille est connue lavance. Cela ne fonctionne donc pas avec des scripts CGI. Les directives de contrle de cette fonction sont : Directive KeepAlive Signication Spcie le nombre de requtes gres par la mme connexion (0 dvalide la fonction)

KeepAliveTimeout Temps maximum dattente entre deux requtes

4.3. Les enregistrements


Apache permet de congurer de nombreux enregistrements de son activit. La directive TransferLog spcie la destination de lenregistrement dni par une directive LogFormat antrieure. Il est possible denregistrer des informations dans un chier ou de les envoyer sur un tube vers un processus. Si aucune directive LogFormat na t spcie, TransferLog enregistre les messages en CLF (Common Log Format). La directive CustomLog permet de gnrer des enregistrements lis un nom de format ou un format spci en option. Le format CLF enregistre, pour chaque requte, une ligne contenant :
hte identit autorisation date requte code taille

ATRID Systmes http://www.atrid.fr

12

Chapitre 4. Le premier site

avec :

host : adresse IP ou nom complet du client identit : si la directive IdentityCheck est valide et que le client rpond autorisation : lidenticateur de lutilisateur si le document est protg date : la date et lheure de la requte requte : la ligne de requte du client code : le code trois chiffres envoy au client taille : la taille en octets du document envoy sans prendre en compte les enttes

Si un champ na pas de valeur, il est remplac par un tiret (-). Un exemple est donn dans le site /opt/formations/site4 .

4.4. La gestion des accs


Le site /opt/formations/site5 met en vidence un problme de scurit. Si le client demande lURL http://localhost/Anjou/, le serveur lui retourne la liste des chiers du rpertoire. La directive Options permet, entre autres, dliminer ce problme en utilisant le paramtre -Indexes. Plus gnralement, elle permet de spcier ce qui est autoris dans un rpertoire donn : Paramtre All ExecCGI FollowSymLinks Includes IncludesNOEXEC Indexes MultiViews Description toutes les options sauf Multiviews lexcution de scripts est autorise le serveur suivra les liens symboliques rencontrs dans le rpertoire permet lutilisation de SSI permet lutilisation de SSI sauf les directives #exec et #include permet lafchage des rpertoires permet la ngociation de contenu

SymLinksIfOwner- le serveur suivra les liens symboliques rencontrs dans le rpertoire si le chier point Match appartient luid dexcution

4.5. Les serveurs virtuels


Pour viter davoir lancer autant de serveurs Apache que de sites grer, il faut utiliser les blocs VirtualHost. Ceux ci permettent de spcier des directives applicables un serveur virtuel. La syntaxe est :

ATRID Systmes http://www.atrid.fr

13

Chapitre 4. Le premier site

<VirtualHost adresseIP> ... </VirtualHost>

Le paramtre adresseIP peut tre donne sous forme dadresse ou de nom complet. Il existe deux mthodes de dclaration de serveurs virtuels :

le systme doit fournir une adresse IP diffrente pour chaque serveur virtuel. La directive Listen permet de spcier que le serveur attend des connexions sur une adresse IP et un port particulier. le systme ne fournit quune adresse IP et la discrimination seffectue par le nom. La directive NameVirtualHost dnit ladresse IP sur laquelle seront accrochs les serveurs virtuels. Ce mode pose un problme avec les navigateurs gnrant des requtes HTTP/1.0, car le nom nest pas mis dans la requte. La directive ServerPath permet, en partie, de palier le problme.

Une utilisation importante des serveurs virtuels avec de nombreux chiers denregistrement peut gnrer des problmes de disponibilit didenticateurs de chiers. Un exemple est donn dans /opt/formations/site6 .

4.6. Les blocs de spcications


4.6.1. Bloc Directory
Un bloc Directory permet de spcier un ensemble doptions pour un ou plusieurs rpertoires. La syntaxe est :
<Directory dir> ... </Directory>

Largument dir peut tre une expression rgulire permettant de spcier un ensemble de rpertoires. Ce bloc peut contenir des directives de contrle daccs : Directive allow from deny from order Signication donne la liste des clients ayant accs ce bloc donne la liste des clients dont laccs est refus spcie lordre dans lequel sont values les directives allow et deny

La directive order peut prendre trois arguments :

"deny, allow" : la directive deny est value avant la directive allow. Si aucune ne convient, laccs est autoris (valeur par dfaut) "allow, deny" : la directive allow est value avant la directive deny. Si aucune ne convient, laccs est interdit

ATRID Systmes http://www.atrid.fr

14

Chapitre 4. Le premier site

"mutual-failure" : seules les machines donnes dans la directives allow et non donnes dans la directive deny sont autorises.

La directive DirectoryMatch fonctionne de faon similaire avec une expression rgulire comme argument.

4.6.2. Bloc Location


Le bloc Location permet de spcier des directives particulires pour un URL donn. La syntaxe est :
<Location URL ... </Location>

La directive LocationMatch fonctionne de faon similaire avec une expression rgulire comme argument.

4.6.3. Bloc Files


Le bloc Files permet de spcier des directives particulires pour un ou plusieurs chiers. La syntaxe est :
<Files noms> ... </Files>

La directive FilesMatch fonctionne de faon similaire avec une expression rgulire comme argument.

4.7. Le chier .htaccess


Il est possible dajouter un chier .htaccess dans chaque rpertoires partir de DocumentRoot. Ce chier contient des directives particulires pour le rpertoire o il se trouve ainsi que pour tous les sous-rpertoires. Le nom de ce chier est spci par la directive AccessConfigFile . Ce mcanisme permet de modier des droits daccs sans avoir redmarrer le serveur. Par contre, cela oblige le serveur analyser ce chier chaque accs, pour tous les rpertoires du chemin daccs. La directive AllowOverride permet de spcier quelles directives peuvent tre modies par le chier .htaccess. La valeur par dfaut autorise toutes les modications. Les arguments peuvent tre : Arguments All None Signication autorise tout (valeur par dfaut) interdit tout (le chier .htaccess nest pas lu)

ATRID Systmes http://www.atrid.fr

15

Chapitre 4. Le premier site

AuthCong FileInfo Indexes Limit Options

permet dutiliser les directives contrlant les autorisation daccs permet dutiliser les directives contrlant les types de document permet dutiliser les directives de contrle de lafchage des rpertoires permet de spcier le contrle des accs client (allow, deny, order) permet dutiliser les directives de contrles des actions permises dans les rpertoires

4.8. Lordre dvaluation


Lordre dvaluation de ces directives est donn ci-dessous. Dans le cas des directives Directory, lvaluation est effectue du chemin le plus court au chemin le plus long. En cas de conit, lvaluation est effectue dans lordre des dclarations.

<Directory> (sauf avec des expressions rgulires) et le chier .htaccess sont valus simultanment (.htaccess la prscance sur <Directory>) <DirectoryMatch> et <Directory> avec des expressions rgulires <Files> et <FilesMatch> <Location> et <LocationMatch>

Les directives donnes dans les sections VirtualHost sont values aprs celles de la conguration gnrale.

ATRID Systmes http://www.atrid.fr

16

Chapitre 5. Les scripts CGI


Aprs le site vitrine, la gnration de pages dynamiques permet dobtenir une interaction beaucoup plus forte avec le visiteur du site. Cest la porte ouverte sur les applications multi-couches, le commerce lectronique, etc. Les exemples de ce chapitre sont donns dans le rpertoire /opt/formations/site7 . Cest le module mod_cgi qui offre la gestion des scripts CGI. Ce module est inclus par dfaut dans la conguration standard dApache.Il faut soit valider loption ExecCGI, soit avoir une directive ScriptAlias permettant de dnir le rpertoire contenant les scripts. La meilleure solution consiste a utiliser ScriptAlias pour mettre les scripts en dehors du rpertoire point par DocumentRoot. La directive ScriptAlias est utilise en associant un chemin pour les URL un chemin dans le systme de chiers local :
ScriptAlias cheminURL rpertoire

La directive ScriptLog permet de spcier un chier denregistrement des traces dexcution des scripts CGI. La directive ScriptLogLength permet de limiter la taille de ce chier. ScriptLogBuffer spcie la taille maximum enregistre pour une requte POST ou PUT. La directive ScriptLog ne doit tre utilise que pour la mise au point des scripts. En plus des variables standard de linterface CGI, les variables suivantes peuvent tre positionnes :

REMOTE_HOST : si la directive HostnameLookups est valide et que la recherche DNS du client a russi. REMOTE_IDENT : si la directive IDENTITY_CHECK est valide et que le client a rpondu la demande REMOTE_USER : si le script CGI est sujet authentication

Le module mod_env permet de passer des variables denvironnement aux scripts CGI. Ces variables peuvent tre dnies par la directive SetEnv ou hrites de lenvironnement du serveur grace la directive PassEnv. La directive UnsetEnv permet denlever des variables. le module mod_setenvif permet de positionner des variables denvironnement en fonction de conditions sur la requte du client. La directive BrowserMatch permet de dnir des variables en fonction du contenu du champ User-Agent de lentte HTTP. La directive BrowserMatchNoCase fonctionne de la mme faon sans tenir compte de la casse des caractres. Les directives SetEnvIf et SetEnvIfNoCase permettent de positionner des variables en fonction de la valeur des attributs de la requte :

soit des champs de lentte (Host, User-Agent, Referer) soit dautres informations lies la requte (Remote_Host, Remote_addr, Remote_User, Request_Method, Request_URI)

5.1. les gestionnaires (handlers)

ATRID Systmes http://www.atrid.fr

17

Chapitre 5. Les scripts CGI

Un gestionnaire est une procdure interne Apache permettant deffectuer des actions lorsque un chier est demand. Lassociation entre un chier et un gestionnaire est effectue soit en fonction de sa position dans le systme de chier, soit en fonction de lextension du chier. Les gestionnaires standards intgrs Apache sont :

send-as-is: envoie le chier tel quel cgi-script: gre le chier comme un script CGI imap-le: gre le chier comme un chier image-map server-info: rcupre les informations sur le serveur server-parsed: interprte pour la gestion SSI server-status: Rcupre ltat du serveur type-map: interprte pour la ngociation de contenu

La directive AddHandler permet dassocier une extension de chier un gestionnaire existant. La directive SetHandler est utilise dans un bloc Directory ou Location pour associer tous les chiers de ce bloc au gestionnaire spci.

5.2. Scurit et suEXEC


Le programme suExec permet dexcuter des scripts avec un identicateur dutilisateur diffrent de celui du serveur. La conguration de cet outil doit tre excute soigneusement pour ne pas crer de trous de scurit dans lutilisation du serveur. La conguration et linstallation de cette fonctionnalit se ralise en plusieurs tapes :

congurer le chier suexec.h pour ladapter lenvironnement dexcution compiler suexec avec la commande make suexec ajouter le support de suexec dans Apache installer lexcutable suexec dans le rpertoire donn avec les droits setuid du super utilisateur (root)

Ce programme peut tre utilis en spciant des directives User et Group, avec un utilisateur et un groupe diffrents de ceux du serveur, dans un bloc VirtualHost. Dans ce cas, les scripts CGI sont excuts avec les identicateurs donns. Il peut aussi tre utilis directement dans les scripts CGI.

ATRID Systmes http://www.atrid.fr

18

Chapitre 6. Authentication
La gestion de lauthentication permet de limiter laccs tout ou partie du site des utilisateurs autoriss. Pour ce faire, il faut crer un base de donnes des utilisateurs avec un mot de passe pour chacun deux. Cette base de donnes est stocke dans un chier dont le format est semblable celui du chier /etc/passwd dUnix. Ce chier est gr avec le programme htpasswd livr avec Apache dans le sous-rpertoire support. Il faut crer le chier des utilisateurs en dehors du rpertoire point par DocumentRoot. La cration seffectue par :
bash$ htpasswd c nom_du_fichier utilisateur New password: Re-type new password:

Le chier est lisible et modiable avec un diteur de texte mais les mots de passe sont crypts. La conguration du serveur consiste dnir un espace dans lequel lauthentication est ncessaire. Ceci est effectu dans un bloc Directory en spciant les directives suivantes :
AuthName nom AuthType Basic AuthUserFile /opt/apache/etc/passwd require valid-user

La directive AuthName donne le nom de lespace protg. Lautorisation est associe ce nom et permet de crer plusieurs zones protges par la mme identication. Cette identication est renvoye automatiquement par le navigateur la demande du serveur. La directive AuthType spcie le type de contrle effectu. Seul le mot Basic peut tre utilis aujourdhui. Loption Digest est en cours de standardisation et permettra plus de scurit dans la procdure dauthentication. La directive AuthUserFile donne le nom du chier contenant la liste des utilisateurs autoriss. Il est possible de spcier une directive AuthGroupFile donnant le nom dun chier de groupes dutilisateurs. Ce chier a une syntaxe proche de celle du chier /etc/group dUnix. la directive require permet de spcier les utilisateurs ayant accs la ressource protge. Elle prend en paramtre une liste dutilisateurs, de groupes ou le mot valid-user. Le bloc Limit permet de spcier des directives particulires en fonction de la mthode HTTP utilise. Ce mcanisme nest pas trs efcace pour un grand nombre dutilisateurs. Le module mod_auth_dbm permet dutiliser les chier dbm pour stocker les informations dauthentication utilisateur. Ce systme utilise des paires cl et valeur avec un index sur les cls. En connaissant la cl, on retrouve trs vite la valeur associe. Le module nest pas inclut dans la construction standard dApache. La gestion de la base de donnes est effectue par le programme dbmmanage qui utilise les commandes suivantes : Commande adduser Signication pemet dajouter un utilisateur

ATRID Systmes http://www.atrid.fr

19

Chapitre 6. Authentication

delete check view

dtruit un utilisateur vrie le mot de passe associ un utilisateur afche le contenu de la base de donnes

Le principe de fonctionnement est identique en remplaant la directive AuthUserFile par AuthDBMUserFile . Pour la gestion des groupes, on utilise la directive AuthDBMGroupFile . Il existe dautres modules de connexion des bases de donnes telles que mSQL, PostgreSQL, etc... La directive IdentityCheck permet deffectuer une requte vers le dmon identd de la machine cliente (RFC 1413). Cependant cette information est rarement disponible et, lorsquelle est disponible, son intgrit est sujette caution. Cette directive peut gnrer des temps de rponse trs longs. Le module mod_anon permet, lorsquune politique daccs est dnie, dautoriser un utilisateur anonyme se connecter sur le site. Les directives associes sont : Directive Anonymous Anonymous_NoUserID Anonymous_LogEmail Anonymous_VerifyEmail Anonymous_MustGiveEmail Anonymous_Authoritative Signication permet de spcier lidenticateur dutilisateur utiliser permet de laisser les champs didentication vides les accs sont enregistrs dans un chier le mot de passe doit contenir @ et . il faut donner un mot de passe sous forme dune adresse email les autres possibilits dauthentication ne sont pas testes

Par exemple, les directives :


Anonymous invite anonyme Anonymous_NoUserID off Anonymous_LogEmail on Anonymous_VerifyEmail on Anonymous_MustGiveEmail on Anonymous_Authoritative off

autorisent les utilisateurs senregistrer avec les noms invite et anonyme en fournissant, comme mot de passe, leur adresse email. Tous les accs sont enregistrs dans le chier httpd_log. Les utilisateurs rfrencs utilisent leur identicateur habituel.

ATRID Systmes http://www.atrid.fr

20

Chapitre 7. Afchage des rpertoires


Dans le cas ou le chier index.html nexiste pas dans un rpertoire et que loption Indexes est valide, Apache retourne une liste des chiers du rpertoire demand. Lafchage de cette liste peut tre ajust grce au module mod_autoindex. Un exemple de site est donn dans /opt/formations/site9 . La directive FancyIndexing permet de valider la gestion de lafchage des rpertoires par le serveur. Celui-ci gre lafchage dune ligne dentte de colonne permettant le tri en fonction du critre afch (nom, date de modication, taille et description). Le contrle de lafchage est effectu grce aux directives suivantes : Directive AddIcon AddIconByEncoding AddIconByType DefaultIcon HeaderName IndexIgnore ReadmeName AddDescription AddAlt AddAltByEncoding AddAltByType Signication permet de spcier un chier image associ un type de chier donn permet de spcier un chier image associ un type dencodage MIME permet de spcier un chier image associ un type MIME permet de spcier licne par dfaut lorsque aucun type ne correspond nom du chier inclure en entte de lafchage spcie les chiers qui ne doivent pas tre afchs nom du chier inclure la n de lafchage permet de spcier le texte de description dun chier permet de spcier un texte associ un type de chier donn permet de spcier un texte associ un type dencodage MIME permet de spcier un texte associ un type MIME

La directive IndexOptions permet de contrler lafchage : Option IconHeight=pixels IconWidth=pixels IconsAreLinks NameWidth ScanHTMLTitle Signication donne la hauteur des icnes en pixels donne la largeur des icnes en pixels permet dutiliser les icnes comme des liens permet de forcer la largeur de la colonne nom Afche le titre des documents HTML

ATRID Systmes http://www.atrid.fr

21

Chapitre 7. Afchage des rpertoires

SuppressColumnSorting SuppressDescription SuppressLastModied SuppressSize

nafche pas lentte de tri nafche pas la description nafche pas la date de modication nafche pas la taille

ATRID Systmes http://www.atrid.fr

22

Chapitre 8. La ngociation de contenu


Apache a la possibilit de servir les documents dans le format demand par le programme client. Cela concerne les types MIME retourns ainsi que le langage et le jeux de caractres utiliss. Cette possibilit est offerte par le module mod_negociation qui est intgr par dfaut lors de la compilation. Apache supporte les spcications HTTP/1.1 pour la ngociation de contenu. Il reconnat les enttes Accept, Accept-Language , Accept-Charset et Accept-Encoding . Il existe deux possibilits de gestion du contenu :

par la directive Option Multiviews qui doit tre positionne pour les rpertoires dans lesquels la ngociation est possible. un chier type-map qui contient la liste exacte des variantes.

8.1. Loptions Multiviews


8.1.1. Les images
Le navigateur expose ses prfrences dans lentte de la requte par une ligne du type :
Accept : image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

Dans les pages HTML gnres, il ne faut pas donner les extensions des chiers images. Lorsque le navigateur demandera une image, Apache renverra le format disponible le plus adapt la demande.

8.1.2. Le langage
La directive AddLanguage permet de spcier une langue dans laquelle peuvent tre transmis les documents. La directive associe une extension sur les noms des chiers une demande de langage sous forme de type MIME. Les documents doivent tre raliss dans les langues supportes. La directive LanguagePriority permet au serveur de xer la priorit des langages dans le cas o le client nmet pas de prfrences.

8.2. Le chier type-map


Le chier type-map doit possder une entre pour chaque variante du document dans un format compatible avec la RFC 822, les dnitions tant spares par une ligne vide. Il est possible de spcier un critre de qualit de la variante avec le mot qs. La valeur spcie peut varier de 0.000 1.000, cette dernire tant la valeur par dfaut. Par exemple :
URI: sandra

ATRID Systmes http://www.atrid.fr

23

Chapitre 8. La ngociation de contenu

URI: sandra.jpeg Content-type: image/jpeg; qs=0.8 URI: sandra.gif Content-type: image/gif; qs=0.5 URI: sandra.txt Content-type: text/plain; qs=0.01

Les descriptions utilisent les termes suivants :


URI : donne le chier contenant la variante, la localisation est relative au chier de description Content-type: type du chier en prenant en compte le jeu de caractres et le niveau de qualit (type MIME) Content-language: le code du langage Content-encoding: le codage du document (x-compress ou x-gzip) Content-length: la taille du chier

ATRID Systmes http://www.atrid.fr

24

Chapitre 9. Le mode mandataire


Le module mod_proxy permet de faire fonctionner Apache en mandataire pour les protocoles HTTP et FTP. La directive ProxyRequests permet de faire fonctionner Apache en mode mandataire. Les directives associes sont : Directive ProxyRemote NoProxy ProxyPass ProxyPassReverse AllowCONNECT ProxyBlock ProxyDomain Signication permet de spcier un autre mandataire pour un URL ou un protocole donn permet de spcier des adresses qui ne passent pas par le proxy dni par ProxyRemote. permet de fonctionner apparemment en site miroir permet de rediriger les rponses dune machine pseudo miroir donne la liste des ports pour CONNECT (https) permet dinterdire laccs aux sites spcis par les options spcie le domaine DNS pour un intranet

Apache permet de grer un cache lorsquil fonctionne en mode mandataire. Les directives associes sont : Directive CacheRoot CacheSize CacheGcInterval CacheMaxExpire CacheLastModiedFactor CacheDirsLevels CacheDirLength CacheDefaultExpire NoCache Signication donne le rpertoire dans lequel seront stocks les chiers. spcie la taille du cache en kilo-octets donne lintervalle de temps entre deux tests du cache pour vrier la taille dure de validit dun document facteur de correction pour le calcul de la date de validit (fonction de la dernire modication) nombre maximum de niveaux de rpertoires dans le cache longueur dun chemin dans le cache donne une dure de validit par dfaut pour les protocoles nen fournissant pas permet de spcier des critres pour les documents ne devant pas tre dans le cache

ATRID Systmes http://www.atrid.fr

25

Chapitre 10. Les scripts inclus


Le module mod_include permet de grer des scripts intgrs aux documents fournis par le serveur (Server Side Includes). Le traitement du script est effectu si loption Includes est valide pour le chier. Il est possible dutiliser la directive XbitHack pour vrier lautorisation dexcution au niveau du chier. La dclaration du gestionnaire de scripts doit tre donne dans le chier de conguration :
AddType text/html .shtml AddHandler server-parsed .shtml

La syntaxe gnrale dune commande est :


<!-#element attribut=valeur attribut=valeur ... ->

avec les lments suivants :

cong : permet de contrler linterprtation :


errmsg : donne le message en cas derreur dinterprtation sizefmt : donne le format dafchage de la taille (bytes ou abbrev) timefmt : donne le format dafchage des temps (voir strftime())

echo : permet dafcher une variable exec : permet dexcuter un script en fonction de lattribut :

cgi : pour les scripts CGI cmd : pour un script shell fsize : afche la taille du chier en fonction de lattribut

le : relatif au rpertoire du script virtual : URL relatif sil ne commence pas par "/"

astmod afche la date de modication du chier (idem fsize) include : insre le texte dun autre document dans le chier courant ; loption IncludeNOEXEC empche lexcution des scripts (les attributs sont les mmes que pour fsize) printenv : afche les variables denvironnement set : initialise une variable :
<!-#set var="nom" value="sandra" ->

if, elif, else et endif : excution conditionnelle


<!-#if expr="test_condition" -> <!-#elif expr="test_condition" -> <!-#else ->

ATRID Systmes http://www.atrid.fr

26

Chapitre 10. Les scripts inclus

<!-#endif ->

Un exemple est donn dans /opt/formations/site11 .

ATRID Systmes http://www.atrid.fr

27

Chapitre 11. le contrle du fonctionnement


Le site donn dans /opt/formations/site10 permet davoir accs aux informations de conguration et dtat du serveur. Le module mod_status permet de dnir un URI pour laccs ltat du serveur. Les informations afches sont :

la date courante la date du dernier dmarrage la dure de fonctionnement le nombre total daccs et le trac gnr ltat du processeur de machine hte le nombre de requtes par secondes le nombre doctets par secondes le nombre doctets par requte le nombre de requte en cours le nombre de serveurs en attente ltat des serveurs

La directive ExtendedStatus permet dobtenir en plus le dtail de ltat pour chaque requte. Il est possible dobtenir un afchage rafrachi une priodicit donne en spciant ?refresh=T, ou T est la priode en secondes, la suite de lURI. Le module mod_info permet dafcher la conguration courante du serveur.

ATRID Systmes http://www.atrid.fr

28

Chapitre 12. La redirection


La redirection des URL permet daccder des documents situs ailleurs que sous le rpertoire donn par DocumentRoot. Les directives sont : Directive Alias ScriptAlias AliasMatch Redirect RedirectMatch RedirectTemp RedirectPermanent Signication dnit un chemin substituer dans les URL pour les chiers standards comme pour Alias mais sur les scripts permet dutiliser un expression rgulire pour la concordance permet de renvoyer un URL modi vers le client associ un mot dtat comme Redirect avec un expression rgulire la redirection est temporaire la redirection est permanente

Le module mod_rewrite permet de transformer les URL reus laide de rgles bases sur des expressions rgulires. Il ny a pas de limites sur le nombre de rgles pouvant tre appliques ; les dnitions pouvant tre effectues au niveau du serveur, du serveur virtuel, du bloc Directory ou du rpertoire.

ATRID Systmes http://www.atrid.fr

29

Chapitre 13. Les modules


Apache offre la possibilit de rajouter des modules pour effectuer une tche non prise en compte par les modules actuels. Pour ajouter un nouveau module dans Apache, il faut :

crer un rpertoire pour contenir les sources du module dans src/modules copier les chiers du module example modier les chiers ajouter la ligne suivante dans le chier src/Configuration.tmpl
Module nom_module modules/nom/mod_nom.o

compiler et installer Apache

Le reste de ce chapitre prsente le module example fournit en exemple avec les sources dApache. Ce module afche une trace des appels de ces fonctions. Les fonctions de lAPI Apache sont dclares dans les chiers du rpertoire include. Elles sont toutes prxes par la macro API_EXPORT.

13.1. Les rservoirs


Apache utilise la notion de rservoir (pool) pour la gestion des ressources internes. La destruction dun rservoir entrane la destruction des ressources qui lui sont associes. Il faut viter dutiliser les fonctions standards de gestion de mmoire. Cela permet aux modules de ne pas avoir grer la mmoire notamment sur les conditions derreur. Les fonctions de manipulation des rservoirs sont dclares dans include/alloc.h .

13.2. La structure dun module


La structure module est linterface entre le serveur et le module. Elle contient des pointeurs sur les fonctions et les donnes du module.
module example_module = { STANDARD_MODULE_STUFF, example_init, /* module initializer */ example_create_dir_config, /* per-directory config creator */ example_merge_dir_config, /* dir config merger */ example_create_server_config, /* server config creator */ example_merge_server_config, /* server config merger */ example_cmds, /* command table */ example_handlers, /* [7] list of handlers */ example_translate_handler, /* [2] filename-to-URI translation */ example_check_user_id, /* [5] check/validate user_id */

ATRID Systmes http://www.atrid.fr

30

Chapitre 13. Les modules

example_auth_checker, /* [6] check user_id is valid *here* */ example_access_checker, /* [4] check access by host address */ example_type_checker, /* [7] MIME type checker/setter */ example_fixer_upper, /* [8] fixups */ example_logger, /* [10] logger */ #if MODULE_MAGIC_NUMBER >= 19970103 example_header_parser, /* [3] header parser */ #endif #if MODULE_MAGIC_NUMBER >= 19970719 example_child_init, /* process initializer */ #endif #if MODULE_MAGIC_NUMBER >= 19970728 example_child_exit, /* process exit/cleanup */ #endif #if MODULE_MAGIC_NUMBER >= 19970902 example_post_read_request /* [1] post read_request handling */ #endif {;

MODULE_MAGIC_NUMER est dni dans le chier include/ap_mmn.h et sert tracer les modication de lAPI dApache. STANDARD_MODUL_STUFF permet dinitialiser lentte de la structure avec les valeurs par dfaut. La plupart des champs seront initialiss lexcution. Les gestionnaires du module qui retournent un entier peuvent gnrer les valeurs suivantes :

OK : le gestionnaire a trait la requte DECLINED : le gestionnaire ne fait rien HTTP_xxxx : un des codes du protocole HTTP (voir httpd.h)

13.2.1. example_init
Cette fonction est appele linitialisation du serveur avant quil accepte les requtes. Elle est excute de nouveau chaque conguration du serveur. La syntaxe est :
static void example_init(server_rec *s, pool *p)

13.2.2. example_create_dir_cong
Cette fonction est appele une fois avec le paramtre dirspec gal NULL linitialisation du serveur principal et pour chaque bloc Location, Directory, File ou chier .htaccess dans lequel apparat une directive du module. La syntaxe est :

ATRID Systmes http://www.atrid.fr

31

Chapitre 13. Les modules

static void *example_create_dir_config(pool *p, char *dirspec)

La fonction retourne le pointeur allou.

13.2.3. example_merge_dir_cong
Cette fonction est appele pour fusionner deux structures lies un rpertoire dans le cas dun hritage. La syntaxe est :
static void *example_merge_dir_config(pool *p, void *parent_conf, void *newloc_conf)

La fonction retourne le nouveau pointeur allou pour le rpertoire.

13.2.4. example_create_server_cong
Cette fonction cre la structure lie au serveur pour le module. Elle est appele une fois pour le serveur principal et ensuite pour chaque serveur virtuel. La syntaxe est :
static void *example_create_server_config(pool *p, server_rec *s)

La fonction retourne le pointeur allou.

13.2.5. example_merge_server_cong
Cette fonction est appele pour chaque serveur virtuel avec la structure alloue pour le serveur principal. Cela donne la possibilit de grer des hritages ventuels. La syntaxe est :
static void *example_merge_server_config(pool *p, void *server1_conf, void *server2_conf)

La fonction retourne le nouveau pointeur allou pour le serveur virtuel.

13.2.6. example_cmds
Cest un tableau de structures du type command_rec de description des directives.
static const command_rec example_cmds[] = { { "Example", /* directive name */ cmd_example, /* config action routine */ NULL, /* argument to include in call */ OR_OPTIONS, /* where available */

ATRID Systmes http://www.atrid.fr

32

Chapitre 13. Les modules

NO_ARGS, /* arguments */ "Example directive - no arguments" /* directive description */ {, {NULL{ {;

La description des arguments seffectue avec cmd_how :


enum cmd_how { RAW_ARGS, /* TAKE1, /* TAKE2, /* ITERATE, /* * (e.g., IndexIgnore) ITERATE2, /* FLAG, /* NO_ARGS, /* TAKE12, /* TAKE3, /* TAKE23, /* TAKE123, /* TAKE13 /* {;

cmd_func parses command line itself */ one argument only */ two arguments only */ one argument, occuring multiple times */ two arguments, 2nd occurs multiple times * (e.g., AddIcon) */ One of On or Off */ No args at all, e.g. </Directory> */ one or two arguments */ three arguments only */ two or three arguments */ one, two or three arguments */ one or three arguments */

La fonction appele pour grer la directive est :


static const char *cmd_example(cmd_parms *cmd, void *mconfig) { excfg *cfg = (excfg *) mconfig; /* * "Example Wuz Here" */ cfg->local = 1; trace_add(cmd->server, NULL, cfg, "cmd_example()"); return NULL; {

Le paramtre cmd_parms est initialis par le serveur :


typedef struct { void *info; /* Argument to command from cmd_table */ int override; /* Which allow-override bits are set */ int limited; /* Which methods are <Limit>ed */ configfile_t *config_file; /* Config file structure from * pcfg_openfile() */ ap_pool *pool; /* Pool to allocate new storage in */ struct pool *temp_pool; /* Pool for scratch memory * persists during

ATRID Systmes http://www.atrid.fr

33

Chapitre 13. Les modules

* configuration, but wipe * before the first * request is served */ server_rec *server; /* Server_rec being configured for */ char *path; /* If configuring for a directory, * pathname of that directory. * NOPE! Thats what it mean * previous to the * existance of <Files>, <Location> * and regex * matching. Now the only usefulness * that can * be derived from this field is * whether a command * is being called in a server * context (path == NULL) * or being called in a dir context * (path != NULL).*/ const command_rec *cmd; /* configuration command */ const char *end_token; /* end token required to end a * nested section */ { cmd_parms;

13.2.7. example_handlers
Il sagit dun tableau de structures effectuant lassociation entre le nom servant au rfrencement et le gestionnaire.
static const handler_rec example_handlers[] = { {"example-handler", example_handler{, {NULL{ {;

La fonction du gestionnaire est appele pour tous les documents quelle est sense grer. La syntaxe est :
static int example_handler(request_rec *r)

13.2.8. example_translate_handler
Cette fonction permet au module de traduire lURL en un nom de chier. Le premier module qui ne retourne pas DECLINED est suppos avoir effectu le travail. La syntaxe est :
static int example_translate_handler(request_rec *r)

ATRID Systmes http://www.atrid.fr

34

Chapitre 13. Les modules

13.2.9. example_check_user_id
Cette fonction permet au module de vrier les informations dauthentication. Le premier module qui ne retourne pas DECLINED est suppos avoir effectu le travail. La syntaxe est :
static int example_check_user_id(request_rec *r

13.2.10. example_auth_checker
Cette fonction permet au module de vrier si la ressource demande requiert une autorisation. Le premier module qui ne retourne pas DECLINED est suppos avoir effectu le travail. La syntaxe est :
static int example_auth_check(request_rec *r)

13.2.11. example_access_checker
Cette fonction permet au module de vrier les conditions daccs la ressource. Le premier module qui ne retourne pas DECLINED est suppos avoir effectu le travail. La syntaxe est :
static int example_access_checker(request_rec *r)

13.2.12. example_type_checker
Cette fonction permet au module de xer le type du document. Sil retourne OK, aucun autre module nest appel. La syntaxe est :
static int example_type_checker(request_rec *r)

13.2.13. example_xer_upper
Cette fonction est appele pour effectuer les dernires modications sur les enttes. La syntaxe est :
static int example_fixer_upper(request_rec *r)

13.2.14. example_logger

ATRID Systmes http://www.atrid.fr

35

Chapitre 13. Les modules

Cette fonction permet au module deffectuer les enregistrements de traces quil souhaite. La syntaxe est :
static int example_logger(request_rec *r)

13.2.15. example_header_parser
Cette fonction permet au module davoir accs lentte de la requte au dbut du processus. La syntaxe est :
static int example_header_parser(request_rec *r)

13.2.16. example_child_init
Cette fonction est appele linitialisation du processus serveur avant quil accepte les requtes. Cela permet dexcuter des actions qui ne doivent tre excutes quune fois par processus. La syntaxe est :
static void example_child_init(server_rec *s, pool *p)

13.2.17. example_child_exit
Cette fonction est appele larrt du processus serveur. La syntaxe est :
static void example_child_exit(server_rec *s, pool *p)

13.2.18. example_post_read_request
Cette fonction est appele aprs la lecture de la requte mais avant les autres phases. Cela permet, par exemple, de positionner des variables denvironnement. La syntaxe est :
static int example_post_read_request(request_rec *r)

ATRID Systmes http://www.atrid.fr

36