Vous êtes sur la page 1sur 56

Les dossiers Open Source de la

Patrick Cardona

Congurer Apache

mars 2007

Ce dossier est public et libre au sens de la licence GNU-FDL : Permission vous est donn ee de copier, distribuer et/ou modier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ult erieure publi ee par la Free Software Foundation. 2007 Patrick CARDONA & Mission Acad emique TICE de Montpellier Une copie de cette Licence GNU Free Documentation License est consultable sur le site de la Fondation GNU [1].

Sommaire

Introduction 1 Principe de fonctionnement 2 Installation et conguration de base 2.1 Sur un syst` eme Windows . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Ex ecution du programme dinstallation . . . . . . . . . . . . 2.1.2 Arr et / D emarrage du serveur . . . . . . . . . . . . . . . . .

iv 1 2 2 2 6

2.2 Sur un syst` eme GNU/Linux . . . . . . . . . . . . . . . . . . . . . . 10 2.2.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.2 Arr et / D emarrage du serveur . . . . . . . . . . . . . . . . . 11 2.3 Test de linstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3 Conguration initiale 13

3.1 Les chiers de conguration . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Les directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 Conguration initiale . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4 R epertoire virtuel 15

4.1 Sur Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 Sur GNU/Linux ou BSD . . . . . . . . . . . . . . . . . . . . . . . . 15 5 Authentication 17

5.1 Restriction dacc` es au r epertoire ESSAI . . . . . . . . . . . . . . . . 17

ii

SOMMAIRE

iii

5.1.1 Mise en uvre dans un environnement Windows . . . . . . 17 5.1.2 Mise en uvre dans un environnement GNU/Linux . . . . 19 6 Indexation 21

6.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2 Combinaison de directives et doptions . . . . . . . . . . . . . . . . 22 6.2.1 Avec loption Options None dans la directive . . . . . . . . 22 6.2.2 Avec loption Options Indexes dans la directive Directory 24 6.2.3 Pour masquer le r epertoire parent dans la liste du contenu de r epertoire (variante du 6.2.2 ci-dessus) : . . . . . . . . . 25 6.2.4 Pour am eliorer lafchage (variante du 6.2.3) . . . . . . . . 26 27

7 Journalisation

7.1 Directives et formats de journalisation . . . . . . . . . . . . . . . . 27 7.2 Rotation quotidienne des journaux . . . . . . . . . . . . . . . . . . 28 7.3 Outils de statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8 Gestion des pages dynamiques 29

8.1 Interpr eteur Perl et scripts CGI . . . . . . . . . . . . . . . . . . . . 29 8.1.1 Installation de Perl sous Windows . . . . . . . . . . . . . . . 29 8.1.2 CGI Perl sur un serveur GNU/Linux . . . . . . . . . . . . . 34 8.2 Interpr eteur PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8.2.1 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

8.2.2 Installation de PHP sur un syst` eme Microsoft Windows . . 37 8.2.3 Installation de PHP sur un syst` eme GNU/Linux . . . . . . . 45 A Les messages derreur B Sources des scripts 46 47

B.1 CGI Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 C Colophon 49

Introduction
` travers quelques exemples simples Ce petit manuel se propose de rappeler a les principaux aspects de la conguration dun serveur Web Apache [10] : installation et conguration de base, notion de Directive, cr eation dun repertoire virtuel, authentication, indexation et journalisation, ainsi que pages dynamiques au moyen de scripts Perl [9] ou PHP [17]. Le serveur Web Apache est un logiciel Open source [6] et multiplate-forme : on peut linstaller aussi bien sur un h ote GNU/Linux [21], FreeBSD [16] ou un serveur Microsoft Windows [8] 2003. La conguration sera identique, ` lexception de certains chiers parfois r a epartis en deux ou trois chiers compl ementaires ou la notation des chemins de r epertoires, qui seront sp eciques ` chaque syst` a eme (Type MS-DOS ou UNIX).

iv

Chapitre

Principe de fonctionnement
Un serveur Web communique avec un client (navigateur tel que Microsoft Internet Explorer [18], Firefox [12] ou Camino [20]) au moyen du protocole HTTP [5]. On peut r esumer ainsi le dialogue : 1. Le client demande un chier (ou une liste de r epertoire, voir indexation, chapitre 6.2.4 page 27) au moyen dune URL. Cest une ( ( requ ete ) ) de la forme : http://serveur:port/dossier/fichier Par exemple : http://pedagogie.ac-montpellier.fr:8080/technologie/modele.zip 2. Le serveur examine les points suivants : (a) le chier demand e existe, sinon il renvoie un message derreur A. (b) il existe une restriction dacc` es : dans ce cas le serveur demande pr ealablement un identiant (login ) et un mot de passe, et g` ere les ventuelles erreurs A ; sinon le chier demand e e est envoy e au navigateur qui le traite en fonction de son type (afchage, ouverture au moyen dun programme incorpor e (plugin ) ou ext erieur, enregistrement sur le disque, etc.) ` la requ (c) le navigateur met n a ete. Parfois, la connexion est rompue t par le serveur si le d elai de connexion pr evu a e e d epass e. Certains noms de chiers sont des scripts (extension .php ou .pl, par exemple) et sont pr ealablement interpr et es sur le serveur par un interpr eteur esulte de ce PHP [17] ou Perl [9] avant de renvoyer un ux de texte qui r traitement. Cest la notion de page dynamique, chapitre 8 page 29. Ces scripts ` des bases de donn peuvent servir dinterface a ees comme MySQL [19].

Chapitre

Installation et conguration de base


` respecter les caract Lors de linstallation dApache, veillez a eristiques suivantes : tre install Le serveur Apache doit e e en tant que ( ( service )) ; coute Si vous faites cohabiter ce serveur avec un autre serveur Web qui e couter les requ par d efaut sur le port 80, le serveur Apache doit alors e etes HTTP [5] sur un autre port, conventionnellement le port 8080.

2.1

Sur un syst` eme Windows

Dans ce qui suit, on choisit comme emplacement du dossier dinstallation : ` adapter le cas C:\Apache. Sinon, tenez-en compte dans les param` etres a ch e eant.

2.1.1

Ex ecution du programme dinstallation

` partir du On installe la version 2.2.4 sur un serveur Windows [8] 2003 a chier MSI suivant : apache_2.2.4-win32-x86-no_ssl.msi 1. Clic-droit sur apache_2.2.4-win32-x86-no_ssl.msi Dans le menu contextuel, choisissez ( ( Installer ) ). 2. Le dialogue de certicat (gure 2.1) safche : ne tenez pas compte du ` tout. . . message alarmant. Apache nest pas un produit Microsoft, voila Cliquez sur Ex ecuter . 3. Le dialogue de lAssistant (angl. wizard ) dinstallation s afche (gure 2.2) : bouton Next 2

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.1 Certicat dinstallation

F IG . 2.2 Assistant dinstallation

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.3 Licence ` la Licence safche (gure 2.3) : s 4. Le dialogue relatif a electionnez loption ( ( I accept the terms. . . ) ), puis cliquez sur Next . 5. Le dialogue ( ( Read this rst ) ) safche (gure 2.4) : cliquez sur Next . 6. Le dialogue ( ( Server Information ) ) safche (gure 2.5) : Renseignez les champs demand es : Network Domain : nom de domaine, par exemple : ac-montpellier.fr Server Name : nom quali e du serveur, par exemple : monserveur.ac-montpellier.fr Administrators Email address : courriel du webmestre, par exemple : webmestre@ac-montpellier.fr

Choisissez loption ( ( For all users, on Port 80, as a service . . . ) ) Autrement dit : le serveur Apache fonctionnera en tant que service, ind ependamment des sessions locales des utilisateurs connect es au serveur. N.B. : Ne vous inqui etez pas du port 80 qui sera effectivement modi ea posteriori. Cliquez sur Next . 7. Le dialogue ( ( Setup Type ) ) safche (gure 2.6). Conservez loption ( ( Typical ) ) puis cliquez sur Next . 8. Le dialogue ( ( Destination Folder ) )safche (gure 2.7) : cliquez sur Change , ` la rapuis sur lic one ( ( Create new folder ) ) : cr eez un dossier Apache a

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

` lire (en anglais. . .) F IG . 2.4 A

F IG . 2.5 Conguration de base

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.6 Type dinstallation

cine du lecteur C: C:\Apache 9. Le dialogue ( ( Ready to Install. . . )) safche (gure 2.8) : cliquez sur Install . ` une 10. Enn le dialogue ( ( Installation Wizard completed ) ) (gure ) succ` ede a bo te de progression (qui sest afch ee quelques secondes seulement) : cliquez sur ( ( Finish ) )

2.1.2
2.1.2.1

Arr et / D emarrage du serveur


M ethode graphique

` c Vous remarquerez dans la zone de notication, a ot e de lhorloge, une ic one dont lapparence indique l etat du serveur : d emarr e . En cliquant sur cette ic one, il est possible dafcher un menu permettant larr et ou le (re)d emarrage du serveur (gure 2.10) ou arr et e:

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.7 R epertoire de destination

F IG . 2.8 Pr et pour linstallation

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.9 Fin de linstallation

F IG . 2.10 Menu arr et / (re)d emarrage du serveur

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.11 Arr et / (re)d emarrage du serveur dans une invite de commande CMD

2.1.2.2

Dans une invite de commande

Ouvrez une invite de commande CMD (gure 2.11). Recherche du service : net start |find "Apache" renvoie le nom du service : Apache2 Arr et du service : net stop Apache2 net start Apache2 D emarrage du service :

N.B. : Il nexiste pas de commande restart en ligne de commande : on est oblig e de proc eder en deux temps : net stop puis net start.

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

10

2.2

Sur un syst` eme GNU/Linux

Nous prenons lexemple dun syst` eme fond e sur Debian : Ubuntu [11].

2.2.1

Installation

mulation de terminal (Xterm). 1. Ouvrez une console ou une e 2. Installez Apache2 au moyen de loutil apt-get : sudo apt-get install apache2 Lecture des listes de paquets... Fait Construction de larbre des d ependances Lecture de linformation d etat... Fait Les paquets suppl ementaires suivants seront install es : apache2-common apache2-mpm-worker apache2-utils libapr0 Paquets sugg er es : apache2-doc Les NOUVEAUX paquets suivants seront install es : apache2 apache2-common apache2-mpm-worker apache2-utils libapr0 0 mis ` a jour, 5 nouvellement install es, 0 ` a enlever et 4 non mis ` a jour. Il est n ecessaire de prendre 1282ko dans les archives. Apr` es d epaquetage, 4325ko despace disque suppl ementaires seront utilis es. Souhaitez-vous continuer [O/n] ? 3. Aceptez en saisisant <O> puis Entr ee (...) D epaquetage de apache2 (` a partir de .../apache2_2.0.55-4ubuntu4_i386.deb) ... Param etrage de libapr0 (2.0.55-4ubuntu4) ... Param etrage de apache2-utils (2.0.55-4ubuntu4) ... Param etrage de apache2-common (2.0.55-4ubuntu4) ... Setting Apache2 to Listen on port 80. If this is not desired, please edit /etc/apache2/ports.conf as desired. Note that the Port directive no longer works. Module userdir installed; run /etc/init.d/apache2 force-reload to enable. Param etrage de apache2-mpm-worker (2.0.55-4ubuntu4) ... * Starting apache 2.0 web server... apache2: Could not determine the servers fully

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

11

qualified domain name, using 127.0.0.1 for ServerName [ ok ] ` ni. . .Le serveur est d Et hop ! cest d eja emarr e. Qui a dit que GNU/Linux [21] tait compliqu e e?

2.2.2

Arr et / D emarrage du serveur

mul Dans une console ou un terminal e e: Arr et du serveur sudo /etc/init.d/apache2 stop Password: * Stopping apache 2.0 web server... D emarrage du serveur sudo /etc/init.d/apache2 start Password: * Starting apache 2.0 web server... [ ok ] Red emarrage du serveur sudo /etc/init.d/apache2 restart Password: [ ok ] * Forcing reload of apache 2.0 web server...

2.3

Test de linstallation

Une fois le service d emarr e, ouvrez dans votre navigateur lURL : http://localhost:80/ ou http://localhost:8080/ en fonction du port choisi. Selon les environnements, vous obtiendrez une page laconique ( ( It works ! )) sur Windows [8] ou un listage de la racine sur Ubuntu [11], par exemple (gure 2.12).

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

12

F IG . 2.12 Test de linstallation

Chapitre

3
Les chiers de conguration

Conguration initiale
3.1

Apache utilise essentiellement deux sortes de chiers de conguration : Le chier de conguration g en erale, httpd.conf, plac e dans C:\Apache\conf (Windows [8]) ou apache2.conf plac e dans /etc/apache2 et associ e ` dautres chiers (ports.conf et sites-available/default) sur les a syst` emes GNU/Linux [21] ou BSD [16]. Un chier secondaire et facultatif, appel e .htaccess , que lon copie dans certains r epertoires. Nous en verrons un exemple dans le chapitre 5.1.2, page 21.

3.2

Les directives

Le chier principal httpd.conf ou apache2.conf se compose de lignes simples sous la forme Clef Valeur, comme celles-ci : ServerRoot "C:/Apache" Listen 8080 Ou bien de sections appel ees Directives, constitu ees dune balise ouvrante <Balise>, dune s erie de paires Option Valeur regroup ees, et pour clore le ` ceci : tout, dune balise fermante </Balise>, ce qui ressemble a <Balise> Option Valeur Option Valeur (...) </Balise> 13

CHAPITRE 3. CONFIGURATION INITIALE

14

Par exemple, voici la directive du r epertoire des scripts CGI : <Directory "C:/Apache/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>

Un commentaire est pr ec ed e du signe di` ese #

3.3

Conguration initiale

` adapter ou a ` v Voici les Options a erier : 1. Racine du serveur (dossier dinstallation) # Sur Windows : ServerRoot "C:/Apache" # ou bien sur GNU/Linux ou BSD : ServerRoot "/usr/var/Apache2" coute le serveur Apache : option Listen. Pour e couter 2. Le port sur lequel e crit dans httpd.conf (sur Windows) ou bien dans sur le port 8080, on e /etc/apache2/ports.conf sur GNU/Linux ou BSD : Listen 8080

3. La racine des documents servis par le serveur Web se trouve indiqu ee soit dans httpd.conf (sur Windows), soit dans /etc/apache2/sites-available/de sur GNU/Linux ou BSD # Sur Windows DocumentRoot "C:/Apache/htdocs" # Sur GNU/Linux ou BSD DocumentRoot /var/www

Pour prendre en compte un changement doption, il faut red emarrer le serveur Apache.

Chapitre

4
Sur Windows

R epertoire virtuel
4.1

Pour cr eer un Alias ESSAI pointant vers le dossier D:\essai_Apache : 1. Cr eez pr ealablement le r epertoire D:\essai_Apache ` lint 2. Editez le chier httpd.conf et ajoutez-y la directive suivante, a erieur de la directive <IfModule alias_module> . . .</IfModule> 1 : Alias /ESSAI/ D:/essai_apache/ <Directory "D:/essai_apache"> AllowOverride AuthConfig Options Indexes IndexOptions FancyIndexing IndexIgnore .. Order allow,deny Allow from all </Directory> 3. On red emarre le serveur Apache... Les diff erentes options seront expliqu ees dans les chapitres suivants (authentication et indexation ).

4.2

Sur GNU/Linux ou BSD

1. On cr ee le dossier /home/essai_Apache 2. Dans /etc/apache2/sites-enabled/ on ajoute la directive : Alias /ESSAI/ "/home/essai_Apache/"


1

Cette directive remplace lancienne directive IfModule mod alias.c

15

CHAPITRE 4. REPERTOIRE VIRTUEL

16

F IG . 4.1 Requ ete sur lAlias ESSAI

<Directory "/home/essai_Apache/"> Options Indexes MultiViews FollowSymLinks #AllowOverride None AllowOverride AuthConfig Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> 3. On red emarre le serveur Apache... ` . .(gure 4.1) Et voila.

Chapitre

5
Restriction dacc` es au r epertoire ESSAI

Authentication
5.1

Pour mettre en uvre ce contr ole dacc` es, nous utilisons un chier .htaccess ` un utilisateur autoris pour restreindre cet acc` es a e : matice. tapes suivantes, assurez-vous davoir cr un r Avant de suivre les e ee epertoire virtuel ESSAI comme indiqu e dans le chapitre 4 et davoir remplac e loption : AllowOverride None par AllowOverride AuthConfig

5.1.1

Mise en uvre dans un environnement Windows

1. Dabord, le chier des mots de passe : cr eez un dossier C:\Apache\etc, 2. Copiez-y lutilitaire C:\Apache\bin\htpasswd.exe, 3. Ouvrez une invite de commande CMD, 4. D eplacez-vous dans le dossier C:\Apache\etc : CD \ CD Apache\etc 5. Ex ecutez-y la commande suivante : htpasswd.exe -bc .htpasswd matice motdepasse videmment. Notez pr En y remplac ant motdepasse, bien e ecieusement ce mot de passe an de le diffuser aux personnes autoris ees. Il convient de garder le nom de chier .htpasswd car le serveur Apache interdit par d efaut lafchage de ce chier par un utilisateur distant. Le ` ceci : contenu du chier .htpasswd ressemble a matice:motdepassecrypt e

17

CHAPITRE 5. AUTHENTIFICATION

18

` ESSAI F IG . 5.1 Authentication requise pour acc eder a

, nous pouvons appli6. Maintenant que le chier de mots de passe est cr ee quer la restriction dacc` es au moyen dun chier .htaccess : d eplacezvous dans D:\essai_Apache. D: CD \essai_Apache 7. Cr eez-y un chier htaccess.txt : Notepad htaccess.txt 8. Et saisissez-y ceci : Authname "ESSAI" AuthUserFile C:/Apache/etc/.htpasswd AuthType Basic require valid-user 9. Enregistrez le chier et renommez le ainsi : MOVE htaccess.txt .htaccess 10. Testez la connexion : dans un navigateur, saisissez lURL : http://localhost:8080/ESSAI/ Vous devez voir appara tre linvite dauthentication comme sur la gure 5.1.

CHAPITRE 5. AUTHENTIFICATION

19

5.1.2

Mise en uvre dans un environnement GNU/Linux

Pour mettre en uvre cette authentication, il faut dabord cr eer un chier de mots de passe. Par d efaut, loutil de cr eation du chier de mots de passe fourni par apache, htpasswd, utilise lalgorithme MD5. 1. Cr eation du chier des mots de passe. Dans une console ou un terminal mul e e, d eplacez-vous dans le r epertoire : /etc/apache2 cd /etc/apache2 2. Puis saisissez la commande : sudo htpasswd -bc .htpasswd matice motdepasse Ce qui cr ee le chier concern e et y ajoute lutilisateur matice avec le mot motdepasse. Adding password for user matice N.B. : Si vous omettez le mot de passe dans la commande pr ec edente (option -c au lieu de -bc), une invite vous demande de saisir ce mot de cho a ` l passe sans e ecran, s ecurit e oblige ! Notez pr ecieusement ce mot de passe an de le diffuser aux personnes autoris ees. Il convient de garder le nom de chier .htpasswd car le serveur Apache interdit par d efaut lafchage de ce chier par un utilisateur distant. Le ` ceci : contenu du chier .htpasswd ressemble a matice:motdepassecrypt e , nous pouvons appli3. Maintenant que le chier de mots de passe est cr ee quer la restriction dacc` es au moyen dun chier .htaccess : d eplacezvous dans /home/essai Apache. cd /home/essai_Apache 4. Cr eez-y un chier .htaccess : touch .htaccess diteur pr 5. Editez-le dans votre e ef er e1 : sudo vi .htaccess et saisissez-y ceci : Authname "ESSAI" AuthUserFile /etc/apache2/.htpasswd AuthType Basic require valid-user 6. Enregistrez le chier. 7. Testez la connexion : dans un navigateur, saisissez lURL : http://localhost/ESSAI/ Vous devez voir appara tre linvite dauthentication comme sur la gure 5.2.
1

vi, nano. . .

CHAPITRE 5. AUTHENTIFICATION

20

` ESSAI : serveur F IG . 5.2 Authentication requise pour acc eder a GNU/Linux, client Firefox

Chapitre

6
Principe

Indexation
6.1

Voici en quelques mots comment personnaliser la gestion de lindexation avec un serveur Web Apache. On travaille avec un alias de r ef erence : ESSAI, ce qui correspond aux directives suivantes dans httpd.conf : Alias /ESSAI/ D:/essai_apache/ <Directory "D:/essai_apache"> AllowOverride None Options None Order allow,deny Allow from all </Directory> Et la directive commune : <IfModule dir_module> DirectoryIndex index.html </IfModule> qui d esigne le chier index.html comme index par d efaut si lURL est un r epertoire. On peut aussi ajouter dautres chiers dans cette liste, par ordre de priorit e, s epar e par un espace ; par exemple : <IfModule dir_module> DirectoryIndex index.html index.htm index.php index.pl </IfModule>

21

CHAPITRE 6. INDEXATION

22

F IG . 6.1 Par d efaut, erreur dacc` es 403

6.2
6.2.1

Combinaison de directives et doptions


Avec loption Options None dans la directive

<Directory "D:/essai_apache"> (...) Options None (...) </Directory> La demande de lURL : http://localhost:8080/ESSAI/ provoque un refus dacc` es si aucun chier index.html nest pr esent : erreur 403 (gure 6.1). On peut aussi, dans loption DirectoryIndex, indiquer un chemin absolu vers un chier derreur plus explicite si aucun des chiers envisag es nest dabord trouv e: <IfModule dir_module> DirectoryIndex index.html /ESSAI/erreur.txt </IfModule> Ce qui donne alors le message de la gure 6.2.

CHAPITRE 6. INDEXATION

23

F IG . 6.2 Message derreur personnalis e

CHAPITRE 6. INDEXATION

24

F IG . 6.3 Indexation avec loption Option Indexes

6.2.2

Avec loption Options Indexes dans la directive Directory

<Directory "D:/essai_apache"> (...) Options Indexes (...) </Directory> et labsence de chier derreur personnalis e: <IfModule dir_module> DirectoryIndex index.html index.htm index.php </IfModule> la demande de lURL : http://localhost:8080/ESSAI/ provoque lafchage du contenu du r epertoire si aucun chier index.html nest pr esent (gure 6.3) :

CHAPITRE 6. INDEXATION

25

F IG . 6.4 Indexation avec loption IndexIgnore ..

6.2.3 Pour masquer le r epertoire parent dans la liste du contenu de r epertoire (variante du 6.2.2 ci-dessus) :
On ajoute loption IndexIgnore suivie du nom du r epertoire parent .. : <Directory "D:/essai_apache"> (...) Options Indexes IndexIgnore .. </Directory> Ce qui donne la gure 6.4.

CHAPITRE 6. INDEXATION

26

F IG . 6.5 Indexation avec loption FancyIndexing

6.2.4

Pour am eliorer lafchage (variante du 6.2.3)

On ajoute loption IndexOptions FancyIndexing <Directory "D:/essai_apache"> (...) Options Indexes IndexOptions FancyIndexing IndexIgnore .. (...) </Directory> Ce qui donne la gure 6.5.

Chapitre

7
Directives et formats de journalisation

Journalisation
7.1

Sous Linux, lemplacement du journal des erreurs est indiqu e dans /etc/apache2/apac par la directive ErrorLog : ErrorLog /var/log/apache2/error.log Les autres param` etres de journalisation sont indiqu es dans chaque chier ` un site dans le r de conguration li ea epertoire /etc/apache2/sites-available : Le niveau dalerte est d eni par la directive LogLevel dans le chier de conguration default. Par exemple : LogLevel warn Les valeurs possibles sont, du plus b enin au plus grave : debug, info, notice, warn, error, crit. Lemplacement du journal de connexion est indiqu e par la directive CustomLog : CustomLog /var/log/apache2/access.log combined Par d efaut, Apache propose quatre formats de journaux, d ecrits dans la directive LogFormat du chier apache2.conf. Les voici du plus complexe au plus simple : combined, common, referer, agent. Voici, par exemple, la d enition de common : LogFormat "%h %l %u %t \"%r\" %>s %b" common

27

CHAPITRE 7. JOURNALISATION

28

7.2

Rotation quotidienne des journaux

Par d efaut, Apache cr ee un journal acces.log dont la taille peut atteindre 5 Go ! Il convient de d ecouper automatiquement ce journal. Loutil fourni avec Apache, logrotate.exe dans le cas de Windows, ou logrotate sous GNU/Linux, ne convient pas car il produit des journaux incr ement es de la ` i prend a ` chaque rotation la valeur i + 1. forme accessi .log ou Cette convention de nommage ne permet pas une recherche par date. Nous conseillons dutiliser un outil tiers appel e cronolog [13]. Prenons le cas dun dun journal Apache sous Windows : 1. T el echargez larchive : win32 version (ZIP le), [14], 2. D ecompressez-la, 3. Copiez lex ecutable cronolog.exe 4. Cr eez un dossier C:\cronolog, 5. Collez-y lex ecutable, 6. Editez le chier de conguration dApache ainsi : Notepad C:\Apache\conf\httpd.conf 7. Rep erez la section : <IfModule log_config_module> 8. Puis modiez ainsi la directive CustomLog : CustomLog "| C:/cronolog/cronolog.exe logs/access-%Y%m%d.log" common 9. Red emarrez le serveur apache. 10. V eriez dans C:\Apache\logs la prise en compte du nouveau format.

7.3

Outils de statistiques

` lanalyse des serveurs Web. Il existe des outils de statistiques d edi es a ` awstats [23]. Voyez notre dossier consacr ea

Chapitre

8
Interpr eteur Perl et scripts CGI
Installation de Perl sous Windows

Gestion des pages dynamiques


8.1
8.1.1

1. On se procure la distribution Perl de l editeur Activestate, ActivePerl. Dans notre cas, la version est : ActivePerl 5.8.8 Build 819. (a) Ex ecution de lAssistant dinstallation (gure 8.1). (b) Dans le dialogue suivant, s electionnez loption ( ( I accept the terms. . . )), puis cliquez sur Next (gure 8.2). l (c) Dans le dialogue suivant, s electionnez les e ements indiqu es, sans installer la documentation ni les exemples, puis cliquez sur Next (gure 8.3). (d) Dans le dialogue suivant, d ecochez la derni` ere option ( ( Create virtual IIS directory. . . ) ), puis cliquez sur Next (gure 8.4). Dans le dialogue suivant, lancez linstallation en cliquant sur Install (gure 8.5). (e) Refermez lassistant en cliquant sur Finish dans le dialogue suivant (gure 8.6).

29

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

30

F IG . 8.1 Installation de Perl (1)

F IG . 8.2 Installation de Perl (2)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

31

F IG . 8.3 Installation de Perl (3)

F IG . 8.4 Installation de Perl (4)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

32

F IG . 8.5 Installation de Perl (5)

F IG . 8.6 Installation de Perl (6)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

33

F IG . 8.7 Installation de Perl (7)

2. Maintenant que Perl est install e, il faut congurer Apache pour les scripts Perl-CGI. Dans notre exemple, linterpr eteur perl est dans C:\Perl\bin\ (a) Si on essaie tout de suite dinvoquer une URL avec un chier .pl , celui-ci ne sera pas correctement interpr et e (gure 8.7). viter ce type derreur, il faut respecter trois principes : Pour e Tout script Perl doit commencer par une ( ( incantation ) ), cette premi` ere ligne, non indent ee d ebutant par #! et contenant le chemin de lex ecutable perl.exe ; dans notre cas : #!c:/perl/bin/perl.exe -w Il faut aussi placer les scripts dans un r epertoire d eclar e par la directive ScriptAlias, par exemple : ScriptAlias /cgi-bin/ "D:/cgi-bin/" Il faut indiquer enn la directive Directory correspondante, plac ee en dehors de la section <IfModule alias_module> Par exemple : <Directory "D:/cgi-bin/"> AllowOverride None Options None Order allow,deny Allow from all </Directory> (b) Une fois ces modications effectu ees, un red emarrage du serveur Apache sera n ecessaire. (c) LURL appel ee sera : http://localhost:8080/cgi-bin/monscript.pl?clef=essai On voit sur la capture d ecran (gure ) que le param` etre Toutes a t e e r ecup er e par la script au moment de son interpr etation.

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

34

F IG . 8.8 Ex ecution correcte du script CGI-Perl

Il ne faut pas placer le dossier cgi-bin sous un dos` associ ` un alias existant. sier d eja ea Par exemple, D:\essai_apache\cgi-bin\ avec lURL http://localhost: 8080/ESSAI/cgi-bin/monscript.pl ne fonctionnera pas, car ESSAI est un alias, et provoquera une erreur.

8.1.2

CGI Perl sur un serveur GNU/Linux

Par d efaut, toutes les distributions GNU/Linux ont une version de Perl install ee. Nous donnons ici lexemple dune distribution de type Debian : Ubuntu. Pour conna tre la version install ee sur un syst` eme de type Debian/Ubuntu, ex ecutez la commande : dpkg -l perl Ce qui renvoie dans mon cas : ii perl 5.8.8-6 ...

Pour d eterminer le chemin de lex ecutable perl, on ex ecute la commande suivante : whereis perl Ce qui dans mon cas renvoie :

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

35

perl: /usr/bin/perl /etc/perl /usr/lib/perl /usr/X11R6/bin/perl ` placer au d Lincantation a ebut des scripts Perl sera donc : #!/usr/bin/perl -w Il faut aussi installer le module mod perl [22] dApache : sudo apt-get install libapache2-mod-perl2 Pour v erier que ce module est bien activ e: sudo a2enmod perl This module is already enabled! t ` Pour tester le script monscript.pl, dont lincantation a e e adapt ee a notre environnement GNU/Linux (voir ci-dessus, chemin de linterpr eteur perl) nous le copions dans : /usr/lib/cgi-bin/ : sudo cp monscript.pl /usr/lib/cgi-bin/ Password: ` la directive ScriptAlias dans : Ce chemin des CGI est conforme a /etc/apache2/available_sites/default t eteur Celle-ci a e e adapt ee ainsi an de prendre mod perl comme interpr de scripts Perl dans Apache2 : ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> t Le serveur Apache2 ayant e e red emarr e: sudo /etc/init.d/apache2 reload Ainsi lURL http://localhost/cgi-bin/monscript.pl afche la page dynamique. . .(gure 8.9). Le source de la version GNU/Linux de monscript.pl est disponible dans lannexe.

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

36

F IG . 8.9 Cgi Perl sous GNU/Linux

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

37

F IG . 8.10 Installation de PHP pour Apache (1)

8.2
8.2.1

Interpr eteur PHP


PHP

PHP [17] est un langage de script qui permet l ecriture de pages dynamiques. Une section de script PHP se caract erise par les balises : <?php instruction ; ?>

8.2.2

Installation de PHP sur un syst` eme Microsoft Windows

1. Procurez-vous le programme dinstallation de PHP pour Windows. Dans notre exemple, nous avons utilis e le site de t el echargement de PHP : http://fr2.php.net/downloads.php Version : 5.2.1 Installateur : php-5.2.1-win32-installer.msi 2. Ex ecutez php-5.2.1-win32-installer.msi tapes : En voici les e (a) Certicat de l editeur : passez outre la mise en garde. . . en cliquant sur Ex ecuter (gure 8.10). (b) Lassistant dinstallation de PHP safche. Cliquez sur Next (gure 8.11). ` la licence : cochez loption ( (c) Safche le dialogue relatif a ( I accept the terms. . . ) ). Puis cliquez sur Next (gure 8.12). (d) Dans le dialogue suivant, indiquez le dossier de destination. Dans notre exemple, C:\php\ (gure 8.13).

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

38

F IG . 8.11 Installation de PHP pour Apache (2)

F IG . 8.12 Installation de PHP pour Apache (3)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

39

F IG . 8.13 Installation de PHP pour Apache (4)

` congurer pour (e) Dans le dialogue suivant, indiquez le serveur Web a interpr eter les scripts PHP : dans notre cas, il sagit dune version 2.2.4 dApache, donc nous cochons loption (( Apache 2.2.x Module )). Puis cliquez sur Next (gure 8.14). (f) Dans le dialogue suivant, indiquez le chemin du dossier de congu` se trouve notamment, httpd.conf) : dans notre ration dApache (ou exemple, C:\Apache\conf\. Puis cliquez sur Next (gure 8.15). (g) Dans le dialogue suivant, d eveloppez larborescence des extensions et s electionnez lextension MySQL an de supporter des applications PHP-MySQL1 . Puis cliquez sur Next (gure 8.16). (h) LAssistant est pr et pour linstallation. Cliquez sur install (gure 8.17). (i) Lassistant vous propose de modier la conguration dApache. Acceptez (gure 8.18). En fait, les lignes suivantes seront ajout ees dans httpd.conf : #BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL PHPIniDir "C:\\PHP\\" LoadModule php5_module "C:\\PHP\\php5apache2_2.dll" #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL Puis celles-ci dans mime.types : application/x-httpd-php php application/x-httpd-php-source phps ` lassistant (8.19). (j) Cliquez sur Finish pour mettre n a
MySQL est un serveur de bases de donn ees SQL. Nous naborderons pas son installation ici qui d epasserait notre propos.
1

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

40

F IG . 8.14 Installation de PHP pour Apache (5)

F IG . 8.15 Installation de PHP pour Apache (6)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

41

F IG . 8.16 Installation de PHP pour Apache (7-8)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

42

F IG . 8.17 Installation de PHP pour Apache (9)

(k) Red emarrez le serveur Apache. Si vous oubliez de le red emarrer, vous obtiendrez lerreur de la gure 8.20 : le script est afch e sans tre interpr e et e pr ealablement sur le serveur. En revanche, apr` es red emarrage du serveur Apache, linstruction suivante dans le script info.php afchera la page dinformation sur PHP dans votre navi` lURL : gateur (gure 8.21) a http://localhost:8080/ESSAI/info.php <?php phpinfo(); ?>

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

43

F IG . 8.18 Installation de PHP pour Apache (10-12)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

44

F IG . 8.19 Installation de PHP pour Apache (13)

F IG . 8.20 Installation de PHP pour Apache (14)

F IG . 8.21 Installation de PHP pour Apache (15)

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

45

F IG . 8.22 Conguration de PHP sous GNU/Linux afch ee par info.php

8.2.3

Installation de PHP sur un syst` eme GNU/Linux

Exemple sur une distribution de type Debian : Ubuntu. mul Dans une console ou un terminal e e, proc edez ainsi : 1. Installez le paquet g en erique php5 : sudo apt-get install php5 2. Pour tester linstallation, copiez le chier info.php suivant dans /var/www : <?php infophp(); ?> 3. Ouvrez lURL suivante dans votre navigateur : http://localhost/info.php Vous obtiendrez lafchage de la conguration (gure 8.22).

Annexe

Les messages derreur


Voici les erreurs les plus fr equemment retourn ees au client par le serveur Apache. Une bonne compr ehension de ces erreurs constitue un bon outil de diagnostic.
Code retourn e 401 403 404 405 408 500 Mots cl es UNAUTHORIZED FORBIDDEN NOT FOUND METHOD NOT ALLOWED REQUEST TIME OUT INTERNAL SERVER ERROR Explication Droits dex ecution insufsant (1) Acc` es interdit (2) Fichier introuvable M ethode non autoris ee D elai de connexion d epass e. Erreur serveur interne (3)

(1) Il sagit le plus souvent dun droit insufsant sur un script : ajouter un droit dex ecution (chmod a+x) r esout g en eralement le probl` eme. chec de lauthentication Apache lors de la saisie du login ou du mot (2) Il sagit dun e de passe. ` une erreur de syntaxe dans un script. (3) Une erreur interne est souvent due a

46

Annexe

B
CGI Perl

Sources des scripts


B.1

` GNU/Linux. Il a e t Voici la version de monscript.pl adapt ee a e notamment n ecessaire de g erer le probl` eme des en-t etes renvoy es par Apache2 en ajoutant la section : use Apache2::RequestRec (); my $r = shift; $r->content_type(text/html); an de g erer l ecriture diff er ee des sections du type : print<<FIN; Voici le script complet : #!/usr/bin/perl -w use Apache2::RequestRec (); my $r = shift; $r->content_type(text/html); ### ### ### ### CGI avec Mod_perl sous Linux (c)2007 Patrick CARDONA - MATICE de Montpellier.fr Licence GNU-GPL monscript.pl ###

use strict; use CGI; my $cgi = new CGI; use CGI::Carp qw(fatalsToBrowser); 47

ANNEXE B. SOURCES DES SCRIPTS

48

print <<FIN;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Exemple de script CGI Perl </title> <STYLE TYPE=text/css> body { font-family:Verdana,Arial,Sans ; font-size:10pt ; color:blue } h1 { color:#3366FF ; font-size:12pt } a:link,a:visited { text-decoration:none ; color:#3366ff } </STYLE> </head> <body topmargin="70"> <h1>Exemple de script Perl CGI</h1> <HR> <p> FIN print "<P>Variable pass&eacute;e au script : " ; print $cgi->param(clef); print <<PIED;

<P>&nbsp; <P>&nbsp; <p>&nbsp; <HR> <p><SPAN STYLE=\"font-size:8pt\"> &copy; 2006-2007 MATICE de Montpellier | <a href=\"mailto:tice\@ac-montpellier.fr\">Courriel<a/> </SPAN></p> </body> </html> PIED

Annexe

Colophon
A t Ce manuel a e e r ealis e au moyen du langage de mise en page L TEX [24], ` savoir Ubuntu. dans sa distribution TEXLive [25] sur un syst` eme GNU/Linux, a t dit Les textes ont e ee es dans l editeur TeXmaker [26] et compil es au moyen de la commande pdflatex.

t Illustrations : les captures d ecran ont e e r ealis ees sur le syst` eme Microsoft Windows 2003 dun ordinateur portable pr et e par la MATICE de Montpellier, enregistr ees au format PNG et retouch ees au moyen de ImageMagick [27] ou Gthumb [28]. Les logos GNU-FDL et Open Source sont les logos respectifs de ces fondations. Le dessin de la couverture provient de la collection de LUS National Oceanic and Atmospheric Administration. Cest une image libre de droits, r ef erenc ee ici : http://gimp-savvy.com/.

49

Bibliographie

[1] Licence GNU-FDL http://www.gnu.org/copyleft/fdl.html angl. [2] Licence Gen Publique GNU http://fsffrance.org/gpl/gpl-fr.fr. erale html [3] Apache France, http://www.apachefrance.com/ d. [4] B EN L AURIE ET P ETER L AURIE, Apache, installation et mise en uvre, e dition, mars 2000. OReilly, 2nde e [5] RFC 1945, HTTP 1.0 http://abcdrfc.free.fr/rfc-vf/rfc1945.html [6] Patrick Cardona, Introduction aux logiciels libres http://pedagogie.ac-montpellier.fr/tice/ll_matice/introduction. html [7] MATICE de Montpellier http://pedagogie.ac-montpellier.fr/tice/ [8] Site ofciel de Microsoft, Windows http://www.microsoft.com/france/windows/ [9] Le langage Perl http://fr.wikipedia.org/wiki/Perl_%28langage%29 [10] Wikip edia, Article Apache HTTP Server http://fr.wikipedia.org/wiki/Apache_HTTP_Server [11] Ubuntu http://www.ubuntu-fr.org/ [12] Fondation Mozilla, Firefox http://firefox.fr/ [13] Cronolog http://cronolog.org/ [14] Archive win-32 de cronolog [15] Apache-split exe http://patrick.cardona.free.fr/matice/apache-split.

[16] FreeBSD, http://www.freebsd-fr.org/fr/ [17] PHP France http://www.phpfrance.com/ [18] Miscrosoft Internet Explorer http://www.microsoft.com/france/windows/downloads/ie/getitnow. mspx [19] MySQL http://www.mysql.fr/ [20] Camino, ttp://www.caminobrowser.org/ [21] GNU/Linux http://www.linux.org/

50

BIBLIOGRAPHIE

51

[22] mod perl http://perl.apache.org/ [23] Dossier Open Source no 2 http://pedagogie.ac-montpellier.fr/tice/assets/ll_matice/res/ ASSISAW.pdf
A [24] L TEX http://www.latex-project.org/

[25] TEXLive http://www.tug.org/texlive/ [26] TeXmaker http://www.xm1math.net/texmaker/index_fr.html [27] ImageMagick http://www.imagemagick.org/script/index.php [28] Gthumb gthumb [29] Le Gimp http://www.gimp-fr.org/news.php