Sunteți pe pagina 1din 32

Le serveur Web : Apache

Stphane Gill Stephane.Gill@CollegeAhuntsic.qc.ca

Table des matires


Introduction Protocole http Communication entre navigateur et serveur Requte HTTP Rponse HTTP Introduction HTML Pages HTML Formatage du texte Images Lignes horizontales Pointeurs Installation dun serveur LAMP Installation d'Apache Installation de PHP Installation de MySQL Installation de phpMyAdmin Fichier de configuration httpd.conf Paramtre de configuration globale Les modules Configuration du serveur principal Directives de blocs Site Web pour les utilisateurs Activer les sites web pour les utilisateurs 3 3 3 4 5 6 6 7 8 8 9 10 10 11 11 12 12 12 14 15 17 22 22

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.

Le serveur Web : Apache

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

Communication entre navigateur et serveur


La communication entre le navigateur et le serveur se fait en deux temps : Le navigateur effectue une requte HTTP Le serveur traite la requte puis envoie une rponse HTTP

Copyright 2004 Stphane Gill

Page 3

Le serveur Web : Apache

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

Copyright 2004 Stphane Gill

Page 4

Le serveur Web : Apache

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

Le corps de la rponse : Il contient le document demand

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

Copyright 2004 Stphane Gill

Page 5

Le serveur Web : Apache

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>

Copyright 2004 Stphane Gill

Page 6

Le serveur Web : Apache

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:

Exemple de header de niveau 1


Il n'est pas ncessaire d'ajouter les commandes <P> ou <BR> la fin des lignes de H1 H6 puisque celles-ci sont implicites.

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:

Copyright 2004 Stphane Gill

Page 7

Le serveur Web : Apache

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.

Caractres spciaux dans HTML


Certains caractres ont une signification spcifique dans HTML. Pour les utiliser comme tels dans une page, il faut utiliser les commandes alternatives pour les afficher correctement l'cran. Ces commandes sont: &lt; pour: < &gt; pour: > &amp; pour: & &quot; pour: "

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

Copyright 2004 Stphane Gill

Page 8

Le serveur Web : Apache

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.

Site HTTP (WWW)


Le code: <A HREF="http://WWW.fsaa.ulaval.ca">Serveur WWW de la FSAA</A> donne accs un serveur WWW, notamment celui de la Facult des sciences de l'agriculture et de l'alimentation de l'Universit Laval.

Fichier sur le systme hte


Le code: <A HREF="fichier.HTML">fichier</A> donne tout simplement accs un fichier HTML situ au mme niveau hirarchique que le fichier actuellement ouvert sur le serveur.

Copyright 2004 Stphane Gill

Page 9

Le serveur Web : Apache

Installation dun serveur LAMP


L'objet de cette section est de guider ladministrateur dbutant dans linstallation de la trilogie Apache, PHP, MySQL. Depuis un certain nombre de versions de Red Hat Linux, il est possible de tout faire fonctionner sans retoucher le moindre fichier de configuration, simplement en installant les rpm. Rappelons brivement que: Apache est un serveur Web. l s'agit du serveur le plus utilis actuellement sur le Web puisqu'il reprsente plus de 70% des serveurs installs. PHP est un langage de programmation interprt. Correctement interfac avec Apache il permet au serveur de fournir des pages dynamiques gres en fonction des besoins du client. En clair, la page n'est plus un document statique mais peut voluer, afficher des informations diffrentes selon les souhaits de l'utilisateur. MySQL est un gestionnaire de bases de donnes. Il peut trs bien fonctionner en utilisant son propre client en mode texte sans l'utilisation d'une quelconque interface graphique.

Installation d' Apache


L'installation d'Apache sous Fedora Core 1 ne pose habituellement pas de problmes, il suffit dinstaller les paquetages suivants : httpd-devel-2.0 httpd-2.0

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/

Copyright 2004 Stphane Gill

Page 10

Le serveur Web : Apache

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

Copyright 2004 Stphane Gill

Page 11

Le serveur Web : Apache

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/.

Fichier de configuration httpd.conf


Paramtre de configuration globale
### Section 1: Global Environment ServerTokens OS ServerRoot "/etc/httpd" #ScoreBoardFile run/httpd.scoreboard PidFile run/httpd.pid Timeout 300 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15

Servertokens
Le paramtre Servertokens spcifie la chane d'identification du serveur. On a le choix entre Prod, Min, OS, Full.

Copyright 2004 Stphane Gill

Page 12

Le serveur Web : Apache

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.

Copyright 2004 Stphane Gill

Page 13

Le serveur Web : Apache

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

Copyright 2004 Stphane Gill

Page 14

Le serveur Web : Apache

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).

Configuration du serveur principal


### Section 2: 'Main' server configuration #Listen 12.34.56.78:80 Listen 80 User apache Group apache ServerAdmin root@localhost #ServerName new.host.name:80 UseCanonicalName Off DocumentRoot "/var/www/html"

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.

Copyright 2004 Stphane Gill

Page 15

Le serveur Web : Apache

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:

Copyright 2004 Stphane Gill

Page 16

Le serveur Web : Apache

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>

Copyright 2004 Stphane Gill

Page 17

Le serveur Web : Apache

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>

<Directory /home/*> AllowOverride FileInfo </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).

Copyright 2004 Stphane Gill

Page 18

Le serveur Web : Apache

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>.

Copyright 2004 Stphane Gill

Page 19

Le serveur Web : Apache

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.

Copyright 2004 Stphane Gill

Page 20

Le serveur Web : Apache

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.

Copyright 2004 Stphane Gill

Page 21

Le serveur Web : Apache

Site Web pour les utilisateurs


Les utilisateurs du systme peuvent galement mettre leur page Web disposition du monde. Par exemple, pour l'utilisateur toto, il suffit qu'il cre un rpertoire public_html/ dans son home avec un fichier index.html dedans. La page web de toto est dsormais disponible au monde entier l'adresse http://nom_DNS_de_la_machine/~toto/

Activer les sites web pour les utilisateurs


<IfModule mod_userdir.c> #UserDir disable UserDir public_html </IfModule>

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.

Copyright 2004 Stphane Gill

Page 22

Le serveur Web : Apache

Dfinir le rpertoire public_html


<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory>

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>

Copyright 2004 Stphane Gill

Page 23

Le serveur Web : Apache

Autoriser les CGI


Les CGI sont autoriss dans le rpertoire /home/*/public_html/cgi-bin. <Directory /home/*/public_html/cgi-bin> Options ExecCGI SetHandler cgi-script </Directory>

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.

Qu' est-ce qu' un hte virtuel ?


"L'hte virtuel" ( virtual host ) se rfre la pratique de maintenir plus d'un serveur sur une seule machine, ceux-ci tant diffrencis par leur nom d'hte apparent. Par exemple, il est souvent dsirable, pour des socits partageant un serveur web, d'avoir leurs propres espaces avec des serveurs accessibles comme www.company1.com et www.company2.com, et sans demander l'utilisateur de connatre des informations supplmentaires sur le chemin suivre. Apache a t l'un des premiers serveurs contenir et supporter des htes virtuels right out of the box, mais depuis la base HTTP (HyperText Transport Protocol) standard ne permet aucune

Copyright 2004 Stphane Gill

Page 24

Le serveur Web : Apache

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.

Named-Based Virtual Hosts


NameVirtualHost 192.168.10.2 <VirtualHost www.stephane.gill> ServerName www.stephane.gill ServerAdmin webmestre@stephane.gill DocumentRoot /var/www/site1 ErrorLog /var/log.httpd_site1/error_log TransferLog /var/log.httpd_site1/access_log </VirtualHost> <VirtualHost www.charles.gill> 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>

Copyright 2004 Stphane Gill

Page 25

Le serveur Web : Apache

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

Copyright 2004 Stphane Gill

Page 26

Le serveur Web : Apache

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.

IP-Based Virtual Hosts


<VirtualHost 192.168.10.2> ServerName www.stephane.gill ServerAdmin webmestre@stephane.gill DocumentRoot /var/www/site1 ErrorLog /var/log.httpd_site1/error_log TransferLog /var/log.httpd_site1/access_log </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>

Mixed Name/IP-Based Virtual Hosts


NameVirtualHost 192.168.10.2 <VirtualHost www.stephane.gill> ServerName www.stephane.gill ServerAdmin webmestre@stephane.gill DocumentRoot /var/www/site1 ErrorLog /var/log.httpd_site1/error_log TransferLog /var/log.httpd_site1/access_log </VirtualHost> <VirtualHost www.charles.gill> 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

Copyright 2004 Stphane Gill

Page 27

Le serveur Web : Apache

</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>

Port-Based Virtual Hosting


Listen 80 Listen 8080 <VirtualHost 192.168.10.2:80> ServerName www.stephane.gill ServerAdmin webmestre@stephane.gill DocumentRoot /var/www/site1 ErrorLog /var/log.httpd_site1/error_log TransferLog /var/log.httpd_site1/access_log </VirtualHost> <VirtualHost 192.168.10.2:8080> 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.

Copyright 2004 Stphane Gill

Page 28

Le serveur Web : Apache

Cration des mots de passe


La base de donnes contenant les mots de passe des utilisateurs est stocke dans un fichier dont le format est semblable celui du fichier /etc/passwd de Linux. Ce fichier est gr laide de la commande htpasswd et doit tre crer lextrieur du rpertoire point par DocumentRoot. Lexemple suivant prsente la cration du fichier laide de la commande htpasswd : # htpasswd -c /var/www/MotDePasse DeBoss New password: Re-type new password: Adding password for user DeBoss Lajout dutilisateurs dans le fichier de mot de passe est effectu comme dans lexemple suivant : # htpasswd /var/www/MotDePasse PetitBoss New password: Re-type new password: Adding password for user PetitBoss Le fichier est lisible et modifiable avec un diteur de texte mais les mots de passe sont crypts. # more /var/www/MotDePasse DeBoss:Bz9Wp3o8tchOM PetitBoss:.arflSl7hToLE

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).

Copyright 2004 Stphane Gill

Page 29

Le serveur Web : Apache

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 :

Copyright 2004 Stphane Gill

Page 30

Le serveur Web : Apache

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

Copyright 2004 Stphane Gill

Page 31

Le serveur Web : Apache

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

Copyright 2004 Stphane Gill

Page 32

S-ar putea să vă placă și