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 modification 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
identifiable(s) (ventuellement au travers dun alias) ;
cette licence est prserve et sapplique lensemble du document et des modifications 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 modification, 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 modifie 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. Dfinitions ............................................................................................................................................... 7
3. Compilation et installation................................................................................................................................ 8
3.1. Configuration .......................................................................................................................................... 8
3.2. Compilation............................................................................................................................................. 8
3.3. Installation............................................................................................................................................... 9
4. Le premier site ................................................................................................................................................. 10
4.1. Introduction ........................................................................................................................................... 10
4.2. Un site plus volu ................................................................................................................................ 11
4.3. Les enregistrements............................................................................................................................... 12
4.4. La gestion des accs.............................................................................................................................. 13
4.5. Les serveurs virtuels.............................................................................................................................. 13
4.6. Les blocs de spcifications .................................................................................................................... 14
4.6.1. Bloc Directory .......................................................................................................................... 14
4.6.2. Bloc Location ........................................................................................................................... 15
4.6.3. Bloc Files.................................................................................................................................. 15
4.7. Le fichier .htaccess ................................................................................................................................ 15
4.8. Lordre dvaluation .............................................................................................................................. 16
5. Les scripts CGI ................................................................................................................................................ 17
5.1. les gestionnaires (handlers) ................................................................................................................... 17
5.2. Scurit et suEXEC............................................................................................................................... 18
6. Authentification................................................................................................................................................ 19
7. Affichage 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 fichier 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_config..................................................................................................... 31
13.2.3. example_merge_dir_config .................................................................................................... 32

ATRID Systmes http://www.atrid.fr 4


13.2.4. example_create_server_config ............................................................................................... 32
13.2.5. example_merge_server_config ............................................................................................... 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_fixer_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 5


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 modifications 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 suffit de contribuer
activement au projet pour pouvoir tre nomm membre du Apache Group.

ATRID Systmes http://www.atrid.fr 6


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 configuration.
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. Dfinitions
URL : Unified Resource Locator
ex : http://www.apache.org/download/apache_1_3_3_tar.gz
URI : Unified Resource Indicator
ex : /download/apache_1_3_3_tar.gz

ATRID Systmes http://www.atrid.fr 7


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 fichier 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 fichier archive cre le rpertoire apache_1.3.3 et extrait les fichiers dans ce rpertoire. Il est
conseill de lire les fichiers README, README.configure et INSTALL avant de procder la compilation et
linstallation du logiciel.

3.1. Configuration
La configuration du logiciel consiste excuter le script configure avec les arguments personnalisant linstallation.
Les principales options de configuration sont :

Option Signification
layout affiche les rpertoires dinstallation et de fonctionnement.
help affiche la signification des options
verbose affiche plus de messages lors de la configuration
quiet naffiche aucun message lors de la configuration
prefix=rpertoire chemin dinstallation du logiciel (ex : /opt/apache)
enable- valide le module dont le nom est donn
module=nom

disable- dvalide le module dont le nom est donn


module=nom

ajoute le fichier dans le rpertoire des modules, et dans le fichier de configuration et valide
add-module=fichier 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 8


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 configuration.
Dans la suite de ce document, nous allons prsenter des directives de configuration du serveur Apache. Le fichier
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 : spcifie dans quel contexte la directive peut etre utilise (configuration 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 9


Chapitre 4. Le premier site

4.1. Introduction
Nous allons parcourir les options de configuration 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 fichier de configuration du serveur httpd.
La documentation dApache propose dutiliser trois fichiers de configuration en fonction des directives utilises :

le fichier httpd.conf contient les directives de contrle du dmon


le fichier srm.conf contient les directives de spcification des documents fournis par le serveur
le fichier access.conf contient les directives de contrle daccs aux documents.
Nous allons utiliser un seul fichier httpd.conf pour la prsentation de nos exemples. Nous signifions au serveur
de ne pas chercher les autres fichiers en spcifiant les directives :

AccessConfig /dev/null
ResourceConfig /dev/null

Les fichiers de ce premier exemple se trouvent dans le rpertoire /opt/formation/site1 . Le fichier de con-
figuration 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 signification des directives utilises.

Directive Signification
User Identificateur de lutilisateur pour lexcution du serveur
Group Identificateur de groupe pour lexcution du serveur
ServerName Nom du serveur pour la redirection des URL
DocumentRoot Rpertoire racine des fichiers publis

Le chemin spcifi dans la directive DocumentRoot est ajout aux noms des fichiers demands dans un URL. Par
exemple, la demande http://www.ligerwine.com/prix.html va chercher le fichier /opt/formations/site1/html/prix.html .
Lorsque lon se connecte sur le site, le serveur envoie la liste des fichiers contenus dans le rpertoire donn par la
directive DocumentRoot.
Le fichier var/log/error_log contient les enregistrements derreurs dtectes par le serveur. Apache per-
met denvoyer les enregistrements derreurs dautres endroits en utilisant la directive ErrorLog. La directive
LogLevel permet de spcifier le niveau denregistrement :

Niveau Signification
debug les messages de mise au point
info informations de fonctionnement
notice conditions normales mais significatives
warn petits problmes non graves
error conditions derreur
crit niveau critique perturbant le fonctionnement
alert il faut ragir immdiatement
emerg systme inutilisable

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

4.2. Un site plus volu


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

ATRID Systmes http://www.atrid.fr 11


Chapitre 4. Le premier site

Directive Signification
StartServers Permet de dfinir le nombre de serveurs lancs au dmarrage.
MinSpareServers Nombre minimum de serveurs en attente
MaxSpareServers Nombre maximum de serveurs en attente
MaxRequestsPer- Nombre maximum de requtes traites par un processus (0 => infini)
Child

MaxClients Nombre maximum de serveurs crs


ServerAdmin Permet de spcifier une adresse mail pour les messages derreur.
ServerSignature Permet dajouter une ligne de signature aux messages gnrs automatiquement (On ou
EMail)
TimeOut Temps maximum dattente pour quune requte soit complte.
HostNameLookup Permet denregistrer le nom dun client plutt que son adresse dans les fichiers
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 charge-
ment de pages possdant de nombreuses images. Cependant, cette fonction nest active que pour les fichiers dont
la taille est connue lavance. Cela ne fonctionne donc pas avec des scripts CGI.
Les directives de contrle de cette fonction sont :

Directive Signification
KeepAlive Spcifie 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 configurer de nombreux enregistrements de son activit. La directive TransferLog spcifie
la destination de lenregistrement dfini par une directive LogFormat antrieure. Il est possible denregistrer des
informations dans un fichier ou de les envoyer sur un tube vers un processus. Si aucune directive LogFormat na
t spcifie, 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 spcifi
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 : lidentificateur 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 fichiers du rpertoire.
La directive Options permet, entre autres, dliminer ce problme en utilisant le paramtre -Indexes. Plus
gnralement, elle permet de spcifier ce qui est autoris dans un rpertoire donn :

Paramtre Description
All toutes les options sauf Multiviews
ExecCGI lexcution de scripts est autorise
FollowSymLinks le serveur suivra les liens symboliques rencontrs dans le rpertoire
Includes permet lutilisation de SSI
IncludesNOEXEC permet lutilisation de SSI sauf les directives #exec et #include
Indexes permet laffichage des rpertoires
MultiViews permet la ngociation de contenu
SymLinksIfOwner- le serveur suivra les liens symboliques rencontrs dans le rpertoire si le fichier 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 spcifier 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
spcifier 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 NameVirtu-
alHost dfinit 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 fichiers denregistrement peut gnrer des
problmes de disponibilit didentificateurs de fichiers.
Un exemple est donn dans /opt/formations/site6 .

4.6. Les blocs de spcifications

4.6.1. Bloc Directory


Un bloc Directory permet de spcifier un ensemble doptions pour un ou plusieurs rpertoires. La syntaxe est :

<Directory dir>
...
</Directory>

Largument dir peut tre une expression rgulire permettant de spcifier un ensemble de rpertoires.
Ce bloc peut contenir des directives de contrle daccs :

Directive Signification
allow from donne la liste des clients ayant accs ce bloc
deny from donne la liste des clients dont laccs est refus
order spcifie 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 spcifier 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 spcifier des directives particulires pour un ou plusieurs fichiers.
La syntaxe est :

<Files noms>
...
</Files>

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

4.7. Le fichier .htaccess


Il est possible dajouter un fichier .htaccess dans chaque rpertoires partir de DocumentRoot. Ce fichier
contient des directives particulires pour le rpertoire o il se trouve ainsi que pour tous les sous-rpertoires. Le
nom de ce fichier est spcifi par la directive AccessConfigFile .
Ce mcanisme permet de modifier des droits daccs sans avoir redmarrer le serveur. Par contre, cela oblige le
serveur analyser ce fichier chaque accs, pour tous les rpertoires du chemin daccs.
La directive AllowOverride permet de spcifier quelles directives peuvent tre modifies par le fichier .htac-
cess. La valeur par dfaut autorise toutes les modifications.
Les arguments peuvent tre :

Arguments Signification
All autorise tout (valeur par dfaut)
None interdit tout (le fichier .htaccess nest pas lu)

ATRID Systmes http://www.atrid.fr 15


Chapitre 4. Le premier site

AuthConfig permet dutiliser les directives contrlant les autorisation daccs


FileInfo permet dutiliser les directives contrlant les types de document
Indexes permet dutiliser les directives de contrle de laffichage des rpertoires
Limit permet de spcifier le contrle des accs client (allow, deny, order)
Options 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 conflit, lvaluation est effectue dans
lordre des dclarations.

<Directory> (sauf avec des expressions rgulires) et le fichier .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 configuration 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 configuration
standard dApache.Il faut soit valider loption ExecCGI, soit avoir une directive ScriptAlias permettant de
dfinir 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
fichiers local :

ScriptAlias cheminURL rpertoire

La directive ScriptLog permet de spcifier un fichier denregistrement des traces dexcution des scripts CGI.
La directive ScriptLogLength permet de limiter la taille de ce fichier. ScriptLogBuffer spcifie 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 authentification
Le module mod_env permet de passer des variables denvironnement aux scripts CGI. Ces variables peuvent tre
dfinies 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 dfinir 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 fichier est
demand. Lassociation entre un fichier et un gestionnaire est effectue soit en fonction de sa position dans le
systme de fichier, soit en fonction de lextension du fichier. Les gestionnaires standards intgrs Apache sont :

send-as-is: envoie le fichier tel quel


cgi-script: gre le fichier comme un script CGI
imap-file: gre le fichier comme un fichier 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 fichier un gestionnaire existant.
La directive SetHandler est utilise dans un bloc Directory ou Location pour associer tous les fichiers de ce bloc
au gestionnaire spcifi.

5.2. Scurit et suEXEC


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

configurer le fichier 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 spcifiant 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
identificateurs donns. Il peut aussi tre utilis directement dans les scripts CGI.

ATRID Systmes http://www.atrid.fr 18


Chapitre 6. Authentification
La gestion de lauthentification 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 fichier dont le format est semblable celui du fichier /etc/passwd dUnix. Ce
fichier est gr avec le programme htpasswd livr avec Apache dans le sous-rpertoire support.
Il faut crer le fichier 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 fichier est lisible et modifiable avec un diteur de texte mais les mots de passe sont crypts.
La configuration du serveur consiste dfinir un espace dans lequel lauthentification est ncessaire. Ceci est
effectu dans un bloc Directory en spcifiant 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 identification. Cette identification est renvoye automatiquement par le
navigateur la demande du serveur.
La directive AuthType spcifie 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 dauthentification.
La directive AuthUserFile donne le nom du fichier contenant la liste des utilisateurs autoriss. Il est possible de
spcifier une directive AuthGroupFile donnant le nom dun fichier de groupes dutilisateurs. Ce fichier a une
syntaxe proche de celle du fichier /etc/group dUnix.
la directive require permet de spcifier 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 spcifier des directives particulires en fonction de la mthode HTTP utilise.
Ce mcanisme nest pas trs efficace pour un grand nombre dutilisateurs. Le module mod_auth_dbm permet
dutiliser les fichier dbm pour stocker les informations dauthentification 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 Signification
adduser pemet dajouter un utilisateur

ATRID Systmes http://www.atrid.fr 19


Chapitre 6. Authentification

delete dtruit un utilisateur


check vrifie le mot de passe associ un utilisateur
view affiche 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 dfinie, dautoriser un utilisateur anonyme se
connecter sur le site.
Les directives associes sont :

Directive Signification
Anonymous permet de spcifier lidentificateur dutilisateur
utiliser
Anonymous_NoUserID permet de laisser les champs didentification vides
Anonymous_LogEmail les accs sont enregistrs dans un fichier
Anonymous_VerifyEmail le mot de passe doit contenir @ et .
Anonymous_MustGiveEmail il faut donner un mot de passe sous forme dune
adresse email
Anonymous_Authoritative les autres possibilits dauthentification 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 fichier httpd_log. Les utilisateurs rfrencs utilisent
leur identificateur habituel.

ATRID Systmes http://www.atrid.fr 20


Chapitre 7. Affichage des rpertoires
Dans le cas ou le fichier index.html nexiste pas dans un rpertoire et que loption Indexes est valide, Apache
retourne une liste des fichiers du rpertoire demand. Laffichage 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 laffichage des rpertoires par le serveur. Celui-ci
gre laffichage dune ligne dentte de colonne permettant le tri en fonction du critre affich (nom, date de
modification, taille et description).
Le contrle de laffichage est effectu grce aux directives suivantes :

Directive Signification
AddIcon permet de spcifier un fichier image associ un type
de fichier donn
AddIconByEncoding permet de spcifier un fichier image associ un type
dencodage MIME
AddIconByType permet de spcifier un fichier image associ un type
MIME
DefaultIcon permet de spcifier licne par dfaut lorsque aucun
type ne correspond
HeaderName nom du fichier inclure en entte de laffichage
IndexIgnore spcifie les fichiers qui ne doivent pas tre affichs
ReadmeName nom du fichier inclure la fin de laffichage
AddDescription permet de spcifier le texte de description dun fichier
AddAlt permet de spcifier un texte associ un type de fichier
donn
AddAltByEncoding permet de spcifier un texte associ un type
dencodage MIME
AddAltByType permet de spcifier un texte associ un type MIME

La directive IndexOptions permet de contrler laffichage :

Option Signification
IconHeight=pixels donne la hauteur des icnes en pixels
IconWidth=pixels donne la largeur des icnes en pixels
IconsAreLinks permet dutiliser les icnes comme des liens
NameWidth permet de forcer la largeur de la colonne nom
ScanHTMLTitle Affiche le titre des documents HTML

ATRID Systmes http://www.atrid.fr 21


Chapitre 7. Affichage des rpertoires

SuppressColumnSorting naffiche pas lentte de tri


SuppressDescription naffiche pas la description
SuppressLastModified naffiche pas la date de modification
SuppressSize naffiche 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 spcifications 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 fichier 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 fichiers 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 spcifier une langue dans laquelle peuvent tre transmis les documents. La
directive associe une extension sur les noms des fichiers 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 fixer la priorit des langages dans le cas o le client
nmet pas de prfrences.

8.2. Le fichier type-map


Le fichier type-map doit possder une entre pour chaque variante du document dans un format compatible avec
la RFC 822, les dfinitions tant spares par une ligne vide. Il est possible de spcifier un critre de qualit de la
variante avec le mot qs. La valeur spcifie 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 fichier contenant la variante, la localisation est relative au fichier de description
Content-type: type du fichier 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 fichier

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 Signification
ProxyRemote permet de spcifier un autre mandataire pour un URL
ou un protocole donn
NoProxy permet de spcifier des adresses qui ne passent pas par
le proxy dfini par ProxyRemote.
ProxyPass permet de fonctionner apparemment en site miroir
ProxyPassReverse permet de rediriger les rponses dune machine pseudo
miroir
AllowCONNECT donne la liste des ports pour CONNECT (https)
ProxyBlock permet dinterdire laccs aux sites spcifis par les
options
ProxyDomain spcifie le domaine DNS pour un intranet

Apache permet de grer un cache lorsquil fonctionne en mode mandataire. Les directives associes sont :

Directive Signification
CacheRoot donne le rpertoire dans lequel seront stocks les
fichiers.
CacheSize spcifie la taille du cache en kilo-octets
CacheGcInterval donne lintervalle de temps entre deux tests du cache
pour vrifier la taille
CacheMaxExpire dure de validit dun document
CacheLastModifiedFactor facteur de correction pour le calcul de la date de
validit (fonction de la dernire modification)
CacheDirsLevels nombre maximum de niveaux de rpertoires dans le
cache
CacheDirLength longueur dun chemin dans le cache
CacheDefaultExpire donne une dure de validit par dfaut pour les
protocoles nen fournissant pas
NoCache permet de spcifier 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 fichier. Il est possible
dutiliser la directive XbitHack pour vrifier lautorisation dexcution au niveau du fichier. La dclaration du
gestionnaire de scripts doit tre donne dans le fichier de configuration :

AddType text/html .shtml


AddHandler server-parsed .shtml

La syntaxe gnrale dune commande est :

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

avec les lments suivants :

config : permet de contrler linterprtation :

errmsg : donne le message en cas derreur dinterprtation


sizefmt : donne le format daffichage de la taille (bytes ou abbrev)
timefmt : donne le format daffichage des temps (voir strftime())

echo : permet dafficher une variable


exec : permet dexcuter un script en fonction de lattribut :

cgi : pour les scripts CGI


cmd : pour un script shell

fsize : affiche la taille du fichier en fonction de lattribut

file : relatif au rpertoire du script


virtual : URL relatif sil ne commence pas par "/"

flastmod affiche la date de modification du fichier (idem fsize)


include : insre le texte dun autre document dans le fichier courant ; loption IncludeNOEXEC empche
lexcution des scripts (les attributs sont les mmes que pour fsize)
printenv : affiche 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 configuration et dtat
du serveur.
Le module mod_status permet de dfinir un URI pour laccs ltat du serveur. Les informations affiches sont :

la date courante
la date du dernier dmarrage
la dure de fonctionnement
le nombre total daccs et le trafic 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 affichage rafrachi une priodicit donne en spcifiant ?refresh=T, ou T est la
priode en secondes, la suite de lURI.
Le module mod_info permet dafficher la configuration 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 Docu-
mentRoot.

Les directives sont :

Directive Signification
Alias dfinit un chemin substituer dans les URL pour les
fichiers standards
ScriptAlias comme pour Alias mais sur les scripts
AliasMatch permet dutiliser un expression rgulire pour la
concordance
Redirect permet de renvoyer un URL modifi vers le client
associ un mot dtat
RedirectMatch comme Redirect avec un expression rgulire
RedirectTemp la redirection est temporaire
RedirectPermanent 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 dfinitions 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 fichiers du module example
modifier les fichiers
ajouter la ligne suivante dans le fichier 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
affiche une trace des appels de ces fonctions.
Les fonctions de lAPI Apache sont dclares dans les fichiers du rpertoire include. Elles sont toutes prfixes
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 dfini dans le fichier include/ap_mmn.h et sert tracer les modification 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 configuration du serveur.
La syntaxe est :

static void example_init(server_rec *s, pool *p)

13.2.2. example_create_dir_config
Cette fonction est appele une fois avec le paramtre dirspec gal NULL linitialisation du serveur principal
et pour chaque bloc Location, Directory, File ou fichier .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_config
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_config
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_config
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, /* cmd_func parses command line itself */
TAKE1, /* one argument only */
TAKE2, /* two arguments only */
ITERATE, /* one argument, occuring multiple times
* (e.g., IndexIgnore) */
ITERATE2, /* two arguments, 2nd occurs multiple times * (e.g., AddIcon) */
FLAG, /* One of On or Off */
NO_ARGS, /* No args at all, e.g. </Directory> */
TAKE12, /* one or two arguments */
TAKE3, /* three arguments only */
TAKE23, /* two or three arguments */
TAKE123, /* one, two or three arguments */
TAKE13 /* 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 fichier. 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 vrifier les informations dauthentification. Le premier module qui ne re-
tourne 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 vrifier 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 vrifier 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 fixer 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_fixer_upper
Cette fonction est appele pour effectuer les dernires modifications 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

Vous aimerez peut-être aussi