Documente Academic
Documente Profesional
Documente Cultură
Document crit par Stphane Gill Copyright 2004 Stphane Gill Ce document est soumis la licence GNU FDL. Permission vous est donne de distribuer et/ou modifier des copies de ce document tant que cette note apparat clairement.
Dfinir le rpertoire public_html Autoriser les CGI Qu' est-ce qu' un hte virtuel ? Named-Based Virtual Hosts NameVirtualHost VirtualHost ServerName ErrorLog IP-Based Virtual Hosts Mixed Name/IP-Based Virtual Hosts Port-Based Virtual Hosting Authentification Cration des mots de passe Directive dauthentification AuthType AuthName AuthUserFile AuthGroupFile require Fichier .htaccess
23 24 24 25 26 26 26 27 27 27 28 28 29 29 29 30 30 30 30 31
Document crit par Stphane Gill Copyright 2004 Stphane Gill Ce document est soumis la licence GNU FDL. Permission vous est donne de distribuer et/ou modifier des copies de ce document tant que cette note apparat clairement.
Introduction
Un serveur Web est un logiciel, dont le rle est dcouter des requtes dun type particulier (requte http) provenant dun client que lon appelle navigateur. Les navigateurs sont bien connus des utilisateurs, et les plus populaires sont Internet Explorer, Mozilla, FireFox et Opera. Dans ce document, une brve prsentation du protocole http et du langage html est prsent, avant de sintresser linstallation et la configuration dun serveur LAMP (Linux, Apache, MySQL et php).
Protocole http
Le protocole HTTP (HyperText Transfer Protocol) est le protocole le plus utilis sur Internet depuis 1990. La version 0.9 tait uniquement destine transfrer des donnes sur Internet (en particulier des pages Web crites en HTML. La version 1.0 du protocole (la plus utilise) permet dsormais de transfrer des messages avec des en-ttes dcrivant le contenu du message en utilisant un codage de type MIME. Le but du protocole HTTP est de permettre un transfert de fichiers (essentiellement des fichiers HTML) localis grce une chane de caractres appele URL entre un navigateur et un serveur Web
Page 3
Figure 1 : protocole HTTP En ralit la communication s'effectue en plus de temps si on considre le traitement de la requte par le serveur. tant donn que l'on s'intresse uniquement au protocole HTTP, le traitement du ct serveur ne sera pas explicit.
Requte HTTP
Une requte HTTP est un ensemble de lignes envoy au serveur par le navigateur. Elle comprend: une ligne de requte : c'est une ligne prcisant le type de document demand, la mthode qui doit tre applique, et la version du protocole utilise. La ligne comprend trois lments devant tre spar par un espace: La mthode L'URL La version du protocole utilis par le client (gnralement HTTP/1.0)
Les champs d' en-tte de la requte : ensemble de lignes facultatives permettant de donner des informations supplmentaires sur la requte et/ou le client (Navigateur,systme d'exploitation,...). Chacune de ces lignes est compose d'un nom qualifiant le type d'en-tte, suivi de deux points (:) et de la valeur de l'en-tte
Le corps de la requte : ensemble de ligne optionnelle devant tre spar des lignes prcdentes par une ligne vide et permettant par exemple un envoi de donnes par une commande POST lors de l'envoi de donnes au serveur par un formulaire
Page 4
Voici donc un exemple de requte HTTP: GET http://www.commentcamarche.net HTTP/1.0 Accept : text/html If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Rponse HTTP
Une rponse HTTP est un ensemble de lignes envoy au navigateur par le serveur. Elle comprend: une ligne de statut : c'est une ligne prcisant la version du protocole utilis et l'tat du traitement de la requte l'aide d'un code et d'un texte explicatif. La ligne comprend trois lments devant tre spar par un espace: La version du protocole utilis Le code de statut La signification du code
Les champs d' en-tte de la rponse : ensemble de lignes facultatives permettant de donner des informations supplmentaires sur la rponse et/ou le serveur. Chacune de ces lignes est compos d'un nom qualifiant le type d'en-tte, suivi de deux points (:) et de la valeur de l'en-tte
Voici donc un exemple de rponse HTTP: HTTP/1.0 200 OK Date : Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0 Content-Type : text/HTML Content-Lentgh : 1245 Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT
Page 5
Introduction HTML
Le langage HTML tire son origine du langage SGML (Standard Generalized Markup Language). Il s'agit d'un type particulier d'annotations destin au WWW et qui correspond une collection de styles reconnaissables par les navigateurs. Un navigateur est donc un logiciel qui interprte l'cran les commandes HTML contenues dans un document accessible sur le WWW. Le langage HTML est utilis sur le WWW depuis 1990. La version actuellement en vigueur est HTML 4.0. Dans cette section, une brve description du langage HTML est prsente.
Pages HTML
Il faut d'abord spcifier qu'un document contenant des annotations en HTML n'est rien de plus qu'un fichier texte. Il peut donc tre reconnu sans problmes de conversion d'un environnement un autre. Une page peut donc tre lue et interprte par n'importe quel navigateur sur n'importe quelle plate-forme. Pour crer un document HTML, il faut insrer les commandes suivantes au dbut du document: <HTML> "premire ligne du document" <head> "ouverture de la zone den-tte" <title> "titre de la page suivi de </title>" </head> "fermeture de la zone den-tte." <body> "ouverture du corps du document" "Mettre le texte et les images ici" </body> "fin du corps du document" </HTML> "fin du document HTML" Exemple : <HTML> <HEAD> <TITLE>HyperText Test</Title> </HEAD> <Body> <H1>Bonjour a tous</H1> <P>La vie est belle.<\P> </Body> </HTML>
Page 6
Formatage du texte
Cette section dcrit les diffrentes options disponibles pour formater le texte dans une page WWW.
Enttes (Headers)
Le formatage d'une page commence gnralement par le choix et l'usage d'en-ttes prdtermines qui s'chelonnent de H1 H6 (niveaux). La commande H1 est la plus grosse disponible et la H6 est la plus petite. Les commandes Hx comprennent un choix de taille, le caractre gras et un retour de paragraphe. Par exemple <H1> suivi de l'entte et de </H1> donne:
Autres commandes
Commande <center>texte</center> <P> <br> <b>texte</b> <strong></strong> <EM></EM> <I></I> <CITE></CITE> <TT></TT> Centrer le texte changement de paragraphe changement de ligne texte en gras texte en gras texte en italique texte en italique texte en italique texte format avec une fonte espacement constant Description
note:
Page 7
Les majuscules et les minuscules peuvent tre utilises indiffremment pour les annotations.
Les commandes <P> et <BR> n'ont pas tre fermes. Vous pouvez utiliser plusieurs commandes <BR> ou <P> rptitivement pour augmenter l'espacement.
Images
Les navigateurs HTML reconnaissent gnralement deux formats d'images; les images GIF et les images JPEG. Ces deux formats d'images sont comprims. L'insertion d'une image est possible en tapant la commande suivante: <img src="images/serviette50.gif">, ce qui donne: Le segment IMG SRC indique qu'il s'agit de la source d'une image, le premier terme entre les guillemets indique le nom du dossier o se trouve la ou les images, le deuxime terme indique le nom du fichier contenant l'image et le format de celle-ci. Une image en format GIF se termine par .GIF alors qu'une image en format JPEG se termine par .JPEG ou .JPG . La taille de l'image est dtermine par le fichier lui-mme. On peut placer par exemple une grande image occupant l'ensemble de l'cran:
Lignes horizontales
Pour crer des lignes en HTML, la commande de base est <HR>. Pour faire varier la largeur de la ligne, on utilise le code suivant: <HR WIDTH=75%> . Cela donne une ligne de 75% de la largeur
Page 8
de l'cran (selon la largeur de la fentre choisie par l'usager). Pour faire varier l'paisseur de la ligne: <HR SIZE="5"> donne une ligne d'paisseur 5: Les lignes peuvent aussi tre alignes gauche droite ou centres, on utilise alors les commandes suivantes : <HR ALIGN=left> <HR ALIGN=right> <HR ALIGN=center>
Pointeurs
Pour insrer un pointeur (lien hypertexte-hypermdia), il faut indiquer une rfrence (appele URL pour Uniform Ressource Locator) et un lment, texte ou image, visible l'cran sur lequel on doit cliquer pour y accder. Voici un exemple de code pour obtenir un pointeur: <A HREF="dossier/menu_du_jour.HTML">Menu du jour</A>. Le pointeur apparat alors en couleur contraste (bleu par dfaut dans Netscape) et soulign dans le navigateur. Les pointeurs peuvent diriger le navigateur vers des sites HTTP, FTP, TELNET, TN3270, GOPHER ou USENET. On peut aussi entrer directement sur un fichier sur le systme local ou sur un rseau local. Pour crer un pointeur, il s'agit tout simplement de dfinir le type de document dans la commande A HREF comme dans les exemples qui suivent.
Page 9
Le fonctionnement d'Apache est matrialis par la mise en route d'un dmon nomm httpd. Pour mettre en route Apache, il suffit dexcuter la commande: service httpd start Il est possible de passer immdiatement au test du serveur sans passer par la moindre phase de configuration. Pour cela un navigateur Web doit tre dmarrer puis lURL suivant doit tre saisie : http://127.0.0.1/
Page 10
La page de prsentation de Apache devrait apparatre. Par dfaut, Apache est configur de faon tel que les pages Web doivent tre installs dans le rpertoire /var/www/html.
Installation de PHP
L'installation de PHP se fait en utilisant les paquetages suivants : php-4.3 php-devel-4.3
Une fois l'installation des paquetages rpm termin, Apache doit tre redmarr afin de prendre en compte le module PHP. Il importe maintenant de vrifier le fonctionnement de PHP en crant un script test.php dans le rpertoire /var/www/html/ : <html> <? echo 'premier test php<br><br>'; phpinfo(); ?> </html> partir dun navigateur lURL http://127.0.0.1/test/test.php permet de charger le script.
Installation de MySQL
L'installation de mysql est elle aussi trs simple. Les packages suivants sont ncessaires (ils devraient avoir t installs par dfaut, en cas de besoin les installer par la suite): mysql-3.23.58-4 mysql-server-3.23.58-4 mysql-devel-3.23.58-4 php-mysql-4.3
Le dmarrage du serveur MySQL seffectue avec la commande suivante : service mysql start
Page 11
L'installation par dfaut utilise root comme compte administrateur du serveur et aucun mot de passe. Le fonctionnement du serveur MySQL peut tre test en utilisant simplement le client MySQL texte. # mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 4.0.18-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> Pour quitter MySQL, il suffit de taper quit l'invite MySQL.
Installation de phpMyAdmin
Plutt que de rdiger un script php qui va s'adresser au serveur MySQL il est prfrable dinstaller un ensemble de scripts nomms phpMyAdmin. Il s'agit tout simplement d'un ensemble de scripts PHP qui permet, via un navigateur Web, d'administrer des bases de donnes sous MySQL. Les sources de phpMyAdmin sont disponible cette adresse http://www.phpmyadmin.net/.
Servertokens
Le paramtre Servertokens spcifie la chane d'identification du serveur. On a le choix entre Prod, Min, OS, Full.
Page 12
Prod[uctOnly] : Server: Apache Min[imal] : Server: Apache/1.3.0 OS : Server: Apache/1.3.0 (Unix) Full (or not specified) : Server: Apache/1.3.0 (Unix) PHP/3.0 MyMod/1.2
ServerRoot
Le rpertoire ServerRoot est le rpertoire de niveau suprieur contenant les fichiers du serveur. Tant le serveur scuris que le serveur non-scuris tablissent la directive ServerRoot "/etc/httpd".
ScoreBoardFile
ScoreBoardFile stocke les informations internes au processus serveur utilises pour la communication entre le processus serveur parent et ses processus enfants. Red Hat Linux utilise la mmoire partage pour stocker ScoreBoardFile, la valeur par dfaut /etc/httpd/logs/apache_runtime_status n'est utilise qu'en cas de secours.
PidFile
PidFile est le nom du fichier dans lequel le serveur consigne son identifiant de processus (PID). Le PID par dfaut est /var/run/httpd.pid.
Timeout
Timeout dfinit, en secondes, la dure pendant laquelle le serveur attend des rceptions et des missions en cours de communication. Plus spcifiquement, Timeout dfinit la dure pendant laquelle le serveur attend de recevoir une requte GET, la dure pendant laquelle il attend de recevoir des paquets TCP sur une requte POST ou PUT et la dure pendant laquelle il attend entre des ACK rpondant aux paquets TCP. La valeur de Timeout est rgle 300 secondes par dfaut, ce qui est appropri dans la plupart des cas.
KeepAlive
KeepAlive dfinit si votre serveur autorisera plus d'un requte par connexion; cette directive peut servir empcher un client particulier d'utiliser une trop grande quantit des ressources du serveur.
Page 13
Par dfaut, la valeur de Keepalive est rgle sur off. Si la valeur de Keepalive est on et que le serveur devient trs occup, le serveur peut gnrer rapidement un maximum de processus enfants. Dans ce cas, les serveur sera considrablement ralenti. Si la directive Keepalive est active, il est recommand de donner KeepAliveTimeout une valeur basse
MaxKeepAliveRequests
Cette directive dfinit le nombre maximum de requtes autorises par connexion persistante. Le groupe Apache Project recommande l'utilisation d'un paramtrage lev, ce qui amliorera les performances du serveur. Par dfaut, la valeur de MaxKeepAliveRequests est paramtre sur 100, ce qui est appropri pour la plupart des situations.
KeepAliveTimeout
KeepAliveTimeout dfinit la dure en secondes pendant laquelle votre serveur attendra, aprs avoir servi une requte, avant d'interrompre la connexion. Une fois que le serveur reoit une requte, c'est la directive Timeout qui s'applique sa place. Par dfaut, la valeur donne KeepAliveTimeout est 15 secondes.
Les modules
## ## Server-Pool Size Regulation (MPM specific) ## <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 MaxClients 150 MaxRequestsPerChild 1000 </IfModule> <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> LoadModule access_module modules/mod_access.so . . . . . . . . . LoadModule cgi_module modules/mod_cgi.so
Page 14
IfModule
Les balises <IfModule> et </IfModule> crent un conteneur conditionnel dont les directives ne sont activs que si le module spcifi est charg. Les directives places entre les balises IfModule sont traites dans l'un des deux cas suivants. Les directives sont traites si le module contenu dans la balise de dbut <IfModule> est charg. Ou, si un point d'exclamation ([!]) figure devant le nom du module, les directives ne sont traites que si le module dans la balise <IfModule> n'est pas charg.
LoadModule
LoadModule est utilise pour charger des modules DSO (de l'anglais 'Dynamic Shared Object', objet partag dynamique).
Listen
The Listen identifie les ports sur lesquels votre serveur Web acceptera les demandes entrantes. Par dfaut, le Serveur HTTP Apache est paramtr pour couter sur le port 80 pour les communications Web non scurises et (dans /etc/httpd/conf.d/ssl.conf dfinissant tout serveur scuris) sur le port 443 pour les communications Web scurises. Si le Serveur HTTP Apache est configur pour couter sur un port dont le numro est infrieur 1024, il doit tre lanc en tant que super-utilisateur. En revanche, pour les ports dont le numro est gal ou suprieur 1024, httpd peut tre lanc en tant que simple utilisateur. La directive Listen peut galement tre utilise pour spcifier des adresses IP particulires sur lesquelles le serveur acceptera des connexions.
Page 15
User
La directive User dfinit le nom d'utilisateur du processus serveur et dtermine les fichiers auxquels le serveur peut avoir accs. Tous les fichiers inaccessibles cet utilisateur seront galement inaccessibles aux clients se connectant au Serveur HTTP Apache. La valeur par dfaut donne User est apache. Remarque : Pour des raisons de scurit, le Serveur HTTP Apache refuse d'tre excut en tant que super-utilisateur (ou root). user.
Group
Spcifie le nom de groupe des processus du Serveur HTTP Apache. La valeur par dfaut attribue Group est apache.
ServerAdmin
Donnez comme valeur la directive ServerAdmin l'adresse lectronique de l'administrateur du serveur Web. Cette adresse lectronique apparatra dans les messages d'erreur sur les pages Web gnres par le serveur afin que les utilisateurs puissent signaler un problme en envoyant un message lectronique l'administrateur du serveur. La valeur par dfaut donne ServerAdmin est root@localhost. Gnralement, la valeur donne ServerAdmin est Webmaster@example.com. Vous pouvez ensuite crer un alias pour Webmaster au nom de la personne responsable du serveur Web dans /etc/aliases et excuter /usr/bin/newaliases.
ServerName
Utilisez ServerName pour dfinir un nom d'hte et un numro de port (en accord avec la directive Listen) pour le serveur. La directive ServerName ne doit pas forcment correspondre au nom d'hte de l'ordinateur. Par exemple, le serveur Web pourrait tre www.example.com bien que le nom d'hte de l'ordinateur soit foo.example.com. La valeur spcifie dans ServerName doit tre un nom de domaine (ou DNS, de l'anglais 'Domain Name Service') valide qui peut tre rsolu par le systme ne vous contentez surtout pas d'en inventer un. Ci-dessous figure un exemple de directive ServerName:
Page 16
ServerName www.example.com:80 Lors de la dtermination d'un ServerName, assurez-vous que son adresse IP et son nom de serveur sont bien inclus dans le fichier /etc/hosts.
UseCanonicalName
Lorsque la valeur attribue cette directive est on, elle configure le Serveur HTTP Apache de manire ce qu'il se rfrence en utilisant les valeurs prcises dans les directives ServerName et Port. En revanche, lorsque la valeur de UseCanonicalName est off, le serveur emploiera la valeur utilise le client envoyant la requte lorsqu'il fait rfrence lui-mme. Par dfaut, la valeur attribue UseCanonicalName est off.
DocumentRoot
DocumentRoot est le rpertoire contenant la plupart des fichiers HTML qui seront servis en rponse aux requtes. La valeur par dfaut pour DocumentRoot aussi bien pour le serveur Web scuris que pour se serveur Web non-scuris est le rpertoire /var/www/html. Par exemple, le serveur pourrait recevoir une demande pour le document suivant: http://example.com/foo.html Le serveur recherche le fichier suivant dans le rpertoire par dfaut: /var/www/html/foo.html
Directives de blocs
< <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
Page 17
Directory
<Directory> et </Directory> sont utiliss pour "encapsuler" un groupe de directives applicables uniquement au rprtoire indiqu ainsi qu' ses sous-rpertoires. Toute directive autorise dans un contexte de rpertoire peut apparatre entre ces deux balises. nomrpertoire est soit le chemin entirement qualifi du rpertoire, ou un motif. Dans un motif, '?' remplace un caractre unique quelconque, et '*' remplace toute squence de zro ou plus caractres quelconques. Sur Apache 1.3, vous pouvez aussi utiliser les plages de caractres '[]' comme dans un shell UNIX. De plus aucun des mtacaractres ne peut remplacer un '/', ce qui correspond plus intimement la raction des shells UNIX. Exemple: <Directory /usr/local/httpd/htdocs> Options Indexes FollowSymLinks </Directory> A partir d'Apache 1.2 : Peuvent tre utilises les "expressions rgulires", lesquelles devront tre prcdes du caractre ~. Par exemple : <Directory ~ "^/www/.*/[0-9]{3}"> correspondrait des rpertoires dans /www/ dont le nom serait constitu de trois digits. Si plusieurs sections de rpertoires pointent sur le rpertoire d'un document (ou l'un de ses pres) sans qu'il s'agisse d'une expression rgulire, alors les directives sont appliques selon la loi de "la plus courte qualification d'abord", combines aux directives des fichiers .htaccess. Par exemple, avec l'criture <Directory /> AllowOverride None </Directory>
pour le contrle d'accs au document /home/web/dir/doc.html les tapes d'valuation sont les suivantes : Applique la directive AllowOverride None (dsactivant les fichiers .htaccess).
Page 18
Appliquela directive AllowOverride FileInfo (pour le rpertoire /home/web). Applique toutes les directives FileInfo de /home/web/.htaccess Les sections exprimant des rpertoires sous forme d'expressions rgulires sont grs lgrement diffremment par Apache 1.2 et 1.3. Sous Apache 1.2, elles sont combines aux sections "normales" et s'appliquent dans l'ordre o elles apparaissent dans le fichier de configuration. Elles ne s'appliquent qu'une fois, seulement pour celles qui font partie de la section " plus courte correspondance". Sous Apache 1.3 les sections bases sur des expressions rgulires ne sont pas values tant que toutes les sections "normales" n'ont pas t considres. A ce moment, les sections "rgulires" sont traites dans l'ordre o elles apparaissent dans le fichier de configuration. Par exemple, avec l'criture <Directory ~ abc$> ... directives ici ... </Directory> Supposez que le nom de fichier demand soit /home/abc/public_html/abc/index.html. Le serveur considre chacune des sections /, /home, /home/abc, /home/abc/public_html, et /home/abc/public_html/abc dans cet ordre. Sous Apache 1.2, lorsque /home/abc est pris en compte, l'expression rgulire correspondra et ses termes seront appliqus. Sous Apache 1.3 l'expression rgulire n'est pas considre du tout ce point de l'arbre. Elle ne le sera pas tant que toutes les sections "normales" <Directory>s et celles des fichiers .htaccess n'ont pas t appliques. A ce moment seulement l'expression rgulire reconnatra /home/abc/public_html/abc et les directives seront appliques. Notez que l'accs par dfaut d'Apache pour les sections <Directory> est Allow from All. Ceci veut dire que par dfaut, Apache desservira tout fichier indiqu par une URL. Nous recommandons de modifier ceci l'aide d'un bloc tel que <Directory /> Order Deny,Allow Deny from All </Directory> puis dsactiver slectivement la protection pour les rpertoires devant rester accessibles. Voir la page Security Tips pour plus de dtails. Les sections de rpertoires apparaissent habituellement dans le fichier access.conf, mais peuvent tre prsentes dans n'importe quel fichier de configuration. Les directives <Directory> ne peuvent tre imbriques, et ne peuvent petre incluses dans des sections <Limit>.
Page 19
Options
La directive Options contrle les fonctions du serveur disponibles dans un rpertoire particulier. Par exemple, en vertu des paramtres restrictifs spcifis pour le rpertoire root, Options est dfinie uniquement sur FollowSymLinks. Aucune fonction n'est active, l'exception du fait que le serveur est autoris suivre les liens symboliques dans le rpertoire root. Par dfaut, dans le rpertoire DocumentRoot, Options est paramtre pour inclure Indexes et FollowSymLinks. Indexes permet au serveur de gnrer le contenu d'un rpertoire si aucun DirectoryIndex (par exemple, index.html) n'est spcifi. FollowSymLinks permet au serveur de suivre des liens symboliques dans ce rpertoire. All : toutes options sauf MultiViews. ExecCGI : L'excution des scripts CGI est autorise. FollowSymLinks : Le serveur est autoris suivre les liens symboliques dans ce rpertoire. Includes : Les inclusions par Server-Side-Include sont permises. IncludesNOEXEC : Les SSI sont autoriss, mais pas la commande #exec ni #include des scripts CGI. Indexes :Si une URL requise pointe sur un rpertoire, et aucun fichier dfini par DirectoryIndex (ex. index.html) n'existe dans ce rpertoire, alors le serveur retourne une liste formate du contenu du rpertoire. MultiViews :Un contenu ngoci en MultiViews est permis. SymLinksIfOwnerMatch :Le serveur ne suivra les liens symboliques uniquement si le fichier vis ou le rpertoire vis appartiennent au mme utilisateur que le lien lui-mme.
AllowOverride
La directive AllowOverride dfinit si des Options peuvent tre invalides par les instructions d'un fichier .htaccess. Par dfaut, tant le rpertoire super-utilisateur que DocumentRoot sont rgls pour interdire les invalidations .htaccess.
Page 20
AuthConfig : Autorise l'usage de la directive Authorization (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, etc.).
FileInfo : Autorise l'usage de directives controllant l'accs aux types de documents (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, etc.).
Indexes : Autorise l'usage de directives controllant l'indexation des rpertoires (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).
Limit : Autorise l'usage de directives controllant les accs de certains htes (allow, deny et order).
Options : Autorise l'usage de directives contrlant certaines fonctionnalits spcifiques des rpertoires (Options and XBitHack).
Order
La directive Order contrle simplement l'ordre dans lequel les directives allow et deny sont analyses. Le serveur est configur pour analyser les directives Allow avant d'analyser les directives Deny pour votre rpertoire DocumentRoot.
Allow
Allow spcifie le demandeur pouvant accder un rpertoire donn. Le demandeur peut tre all, un nom de domaine, une adresse IP, une adresse IP partielle, une paire rseau/masque rseau, etc. Le rpertoire DocumentRoot est configur pour permettre (Allow) les requtes de quiconque (all), ainsi tout le monde peut y accder.
Deny
Deny fonctionne selon le mme principe que Allow, sauf que cette fois-ci, l'accs est refus un demandeur donn. Le DocumentRoot n'est pas configur par dfaut pour refuser (Deny) des requtes provenant d'un demandeur quelconque.
Page 21
UserDir
UserDir est le nom du sous-rpertoire, au sein du rpertoire personnel de chaque utilisateur, o devraient tre placs les fichiers HTML personnels devant tre servis par le serveur Web. Par dfaut, la valeur attribue cette directive est disable (dsactiver). Dans le fichier de configuration par dfaut, le nom du sous-rpertoire est public_html. Par exemple, le serveur pourrait recevoir la requte suivante: http://example.com/~nom-d'utilisateur/foo.html Le serveur rechercherait le fichier: /home/username/public_html/foo.html Dans l'exemple ci-dessus, /home/username/ est le rpertoire personnel de l'utilisateur (notez que le chemin d'accs par dfaut aux rpertoires personnels des utilisateurs peut tre diffrent sur votre systme). Assurez-vous que les autorisations relatives aux rpertoires personnels des utilisateurs sont correctement dfinies. Les rpertoires personnels des utilisateurs doivent tre dfinis sur 0711. Les bits de lecture (r) et d'excution (x) doivent tre dfinis sur les rpertoires public_html des utilisateurs (0755 fonctionnera). Les fichiers qui seront servis dans les rpertoires public_html des utilisateurs doivent tre dfinis sur au moins 0644.
Page 22
Limit
<Limit> et </Limit> sont utilises pour "encapsuler" un groupe de directives de contrle d'accs ne s'appliquant uniquement qu'aux mthodes d'accs HTTP spcifies par mthode. Toute directive autre qu'une autre directive <Limit> ou une directive <Directory> peut tre utilise; la majorit de ces directives ne seront pas affectes par <Limit>. Exemple: <Limit GET POST> require valid-user </Limit> Si une directive de contrle d'accs apparat en dehors d'une section <Limit>, alors elle s'applique toutes les mthodes d'accs. Les mthodes possibles peuvent tre l'une des suivantes : GET, POST, PUT, DELETE, CONNECT ou OPTIONS. Si la mthode GET est mentionne, la restriction s'appliquera aussi aux requtes HEAD. Si vous souhaitez implmenter une restriction pour toutes les mthodes, n'incluez aucune section <Limit>.
LimitExcept
<LimitExcept> and </LimitExcept> are used to enclose a group of access control directives which will then apply to any HTTP access method not listed in the arguments; i.e., it is the opposite of a <Limit> section and can be used to control both standard and nonstandard/unrecognized methods. See the documentation for <Limit> for more details. For example: <LimitExcept POST GET> Require valid-user </LimitExcept>
Page 23
SetHandler
Lorsqu'elle est inscrite dans un fichier .htaccess ou l'intrieur de sections <Directory> ou <Location>, cette directive force tous les fichiers qui correspondent la description tre servis aprs traitement par le gestionnaire nomm nom-handler. Par exemple, si un rpertoire ne contient que des fichiers de rgles "imagemap", et pour lesquelles l'extension n'est pas significative, vous pourriez crire ceci dans le fichier .htaccess de ce rpertoire : SetHandler imap-file
AddHandler
La directive AddHandler associe aux fichiers d'extension extension, le gestionnaire nom-handler. Par exemple, pour activer des scripts CGI crits dans des fichiers d'extension ".cgi", vous crirez : AddHandler cgi-script cgi Une fois que cette ligne a t crite dans votre fichier srm.conf ou httpd.conf, tout fichier dont le nom termine par ".cgi" sera considr comme un programme CGI.
Page 24
mthode pour le serveur consistant dterminer le nom de l'hte virtuel qui le client adresser une requtes, le support d'hte virtuel d'Apache a demand que l'on attribue chaque serveur une adresse IP. La documentation utilisant cette nouvelle approche est disponible (celle-ci marche trs bien) is available. Alors que l'approche dcrite ci-dessus fonctionne, avec un espace disponible pour les adresses IP diminuant, et le nombre de domaines utiliss par des socits augmentant, vous constatez que ce n'est pas la meilleure solution. Il est, en effet, difficile de raliser ceci sur certaines machines. Le protocole HTTP/1.1 contient une mthode pour le serveur, afin que celui-ci puisse identifier le nom de l'hte auquel un message a t adress. La version 1.1 d'Apache et les versions suivantes supportent galement cette approche aussi bien que la mthode traditionnelle des adresse IP pour des htes virtuels. L'avantage d'utiliser le nouveau support d ' hte virtuel est que l'on peut avoir un nombre pratiquement illimit de serveurs, faciles d'utilisation, simples configurer, et ne demandant aucun hardware ou software supplmentaire. Le principal inconvnient est que le navigateur de l'utilisateur doit supporter cette partie du protocole. Les dernires versions de beaucoup de navigateurs (Netscape Navigator 2.0 et les dernires versions incluent) le font l'exception des plus anciennes. Ceci peut causer des problmes, alors qu'une solution possible est explique ci-dessous.
Page 25
NameVirtualHost
La directive NameVirtualHost associe une adresse IP un numro de port, si ncessaire, pour tout hte virtuel portant un nom. La configuration d'htes virtuels nomms permet un Serveur HTTP Apache de servir diffrents domaines sans devoir pour ce faire utiliser de multiples adresses IP. Note : L'utilisation de tout hte virtuel nomm fonctionne seulement avec des connexions HTTP non-scurises. Si vous devez employer des htes virtuels avec un serveur scuris, utilisez plutt des htes virtuels bass sur l'adresse IP. Afin d'activer des htes virtuels bass sur le nom, supprimez le caractre de commentaire de la directive de configuration NameVirtualHost et ajoutez l'adresse IP correcte. Ajoutez ensuite des conteneurs VirtualHost supplmentaires pour chaque hte virtuel.
VirtualHost
Des balises <VirtualHost> et </VirtualHost> permettent de crer un conteneur soulignant les caractristiques d'un hte virtuel. Le conteneur <VirtualHost> accepte la plupart des directives de configuration. Un ensemble de conteneurs VirtualHost comments est fourni dans httpd.conf et illustre l'ensemble minimum de directives de configuration ncessaire pour chaque hte virtuel.
ServerName
Utilisez ServerName pour dfinir un nom d'hte et un numro de port (en accord avec la directive Listen) pour le serveur. La directive ServerName ne doit pas forcment correspondre au nom d'hte de l'ordinateur. Par exemple, le serveur Web pourrait tre www.example.com bien que le nom d'hte de l'ordinateur soit foo.example.com. La valeur spcifie dans ServerName doit tre un nom de domaine (ou DNS, de l'anglais 'Domain Name Service') valide qui peut tre rsolu par le systme ne vous contentez surtout pas d'en inventer un. Ci-dessous figure un exemple de directive ServerName: ServerName www.example.com:80
Page 26
Lors de la dtermination d'un ServerName, assurez-vous que son adresse IP et son nom de serveur sont bien inclus dans le fichier /etc/hosts.
ErrorLog
ErrorLog spcifie le fichier dans lequel sont consignes les erreurs du serveur. La valeur par dfaut pour cette directive est /var/log/httpd/error_log.
Page 27
</VirtualHost> <VirtualHost 192.168.10.3> ServerName www.charles.gill ServerAdmin webmestre@charles.gill DocumentRoot /var/www/site2 ErrorLog /var/log.httpd_site2/error_log TransferLog /var/log.httpd_site2/access_log </VirtualHost>
Authentification
Lauthentification est un principe simple. Elle permet de limiter laccs un site Web des utilisateurs autoriss. Pour ce faire, il faut dabord crer une base de donnes des utilisateurs avec un mot de passe pour chacun deux. Puis ensuite, modifier le fichier de configuration de Apache de faon activer lauthentification sur les rpertoires protger.
Page 28
Directive dauthentification
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 : <Directory /var/www/html/monrep> AuthType Basic AuthName nom AuthUserFile /var/www/MotDePasse AuthGroupFile /var/www/Groupe require valid-user <Directory>
AuthType
Cette directive slectionne le type d'authentification pour un rpertoire. Seul le type Basic est actuellement implment. (Digest est maintenant disponible, cod MD5).
Page 29
AuthName
Cette directive indique le nom du schma d'autorisation pour un rpertoire. Ce schma sera donn au client de sorte que l'utilisateur sache quel nom et quel mot de passe envoyer.
AuthUserFile
La directive AuthUserFile dfinit le nom du fichier texte dans lequel est enregistre une liste de noms d'utilisateurs et des mots de passe qui leur sont associs dans le but d'une authentification d'accs. nomFichier est le chemin d'accs absolu au fichier d'utilisateurs. Chaque ligne de ce fichier spcifie un nom d'utilisateur suivi d'un deux-points, puis du mot de passe sous sa forme crypte par la fonction crypt(). Le comportement en cas de multiples occurrences du mme nom d'utilisateur reste indtermin. Notez que ds que le fichier utilisateurs est de grande taille, cette mthode se rvle trs peu performante ; on prfrera utiliser AuthDBMUserFile la place.
AuthGroupFile
La directive AuthGroupFile dfinit le nom du fichier texte contenant la liste des groupes d'utilisateurs destine servir de base l'authentification d'accs. nomFichier est le chemin d'accs absolu du fichier de groupes. Chaque ligne du fichier de groupes d'utilisateurs contient le nom d'un groupe suivi par un deuxpoints, puis par la liste des noms d'utilisateurs assigns ce groupe, lesquels sont spars par des espaces. Exemple : mongroupe: bob jacques anne Notez que ds que le fichier de groupes est de grande taille, cette mthode se rvle trs peu performante ; on prfrera utiliser AuthDBMGroupFile la place.
require
Cette directive choisie quels utilisateurs autoriss peuvent accder un rpertoire. Les syntaxes valides sont :
Page 30
require user utilisateur utilisateur ... Seuls les utilisateurs nomms peuvent accder au rpertoire. require group nomGroupe nomGroupe ... Seuls les utilisateurs des groupes cits peuvent accder au rpertoire. require valid-user Tout utilisateur reconnu peut accder au rpertoire (par opposition aux non utilisateurs). Si require apparat dans une section <Limit>, alors les restrictions ne sont appliques qu'aux mthodes http mentionnes. Autrement, toutes les mthodes http sont restreintes. Exemple : AuthType Basic AuthName unDomaine AuthUserFile /web/users AuthGroupFile /web/groups <Limit GET POST> require group admin </Limit>
Fichier .htaccess
Les fichiers .htaccess sont, en fait, des fichiers de configuration d'Apache, permettant de dfinir des rgles dans un rpertoire et dans tous ses sous rpertoires (qui n'ont pas de tel fichier l'intrieur). On peut les utiliser pour protger un rpertoire par mot de passe, ou pour changer le nom ou l'extension de la page index, ou encore pour interdire l'accs au rpertoire. Exemple de fichier .htaccess pour protger l'accs un rpertoire par un mot de passe : # more .htaccess AuthType Basic AuthName darkness AuthUserFile /var/www/MotDePasse require valid-user
Dans le fichier /etc/httpd/conf/httpd.conf cest la directive AccessFileName qui permet de dfinir lele nom du fichier qui sera reconnu comme tant un fichier de restriction d'accs. Par dfaut, c'est .htaccess : AccessFileName .htaccess
Page 31
De plus, il est parfois ncessaire de modifier la directive AllowOverride de faon autoriser lutilisation des fichiers .htaccess. Voici un exemple : AllowOverride AuthConfig ou AllowOverride All
Page 32