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 e de copier, distribuer et/ou modier e ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ult rieure publi e par la Free Software e e Foundation. 2007 Patrick CARDONA & Mission Acad mique TICE de e 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` me Windows . . . . . . . . . . . . . . . . . . . . . . . . e 2.1.1 Ex cution du programme dinstallation . . . . . . . . . . . . e 2.1.2 Arr t / D marrage du serveur . . . . . . . . . . . . . . . . . e e

iv 1 2 2 2 6

2.2 Sur un syst` me GNU/Linux . . . . . . . . . . . . . . . . . . . . . . 10 e 2.2.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.2 Arr t / D marrage du serveur . . . . . . . . . . . . . . . . . 11 e e 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 pertoire virtuel e 15

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

5.1 Restriction dacc` s au r pertoire ESSAI . . . . . . . . . . . . . . . . 17 e e

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 pertoire parent dans la liste du contenu e de r pertoire (variante du 6.2.2 ci-dessus) : . . . . . . . . . 25 e 6.2.4 Pour am liorer lafchage (variante du 6.2.3) . . . . . . . . 26 e 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 teur Perl et scripts CGI . . . . . . . . . . . . . . . . . . . . 29 e 8.1.1 Installation de Perl sous Windows . . . . . . . . . . . . . . . 29 8.1.2 CGI Perl sur un serveur GNU/Linux . . . . . . . . . . . . . 34 8.2 Interpr teur PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 e 8.2.1 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

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

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

Introduction
` Ce petit manuel se propose de rappeler a travers quelques exemples simples les principaux aspects de la conguration dun serveur Web Apache [10] : installation et conguration de base, notion de Directive, cr ation dun repertoire e 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 te GNU/Linux [21], FreeBSD [16] o ou un serveur Microsoft Windows [8] 2003. La conguration sera identique, ` a lexception de certains chiers parfois r partis en deux ou trois chiers e compl mentaires ou la notation des chemins de r pertoires, qui seront sp ciques e e e ` a chaque syst` me (Type MS-DOS ou UNIX). e

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 sumer ainsi le dialogue : e 1. Le client demande un chier (ou une liste de r pertoire, voir indexation, e chapitre 6.2.4 page 27) au moyen dune URL. Cest une ( requ te ) de la ( e ) 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 existe, sinon il renvoie un message derreur A. e (b) il existe une restriction dacc` s : dans ce cas le serveur demande e pr alablement un identiant (login) et un mot de passe, et g` re les e e eventuelles erreurs A ; sinon le chier demand est envoy au navie e gateur qui le traite en fonction de son type (afchage, ouverture au moyen dun programme incorpor (plugin) ou ext rieur, enregistree e ment sur le disque, etc.) ` (c) le navigateur met n a la requ te. Parfois, la connexion est rompue e e e par le serveur si le d lai de connexion pr vu a et d pass . e e e Certains noms de chiers sont des scripts (extension .php ou .pl, par exemple) et sont pr alablement interpr t s sur le serveur par un interpr teur e ee e e PHP [17] ou Perl [9] avant de renvoyer un ux de texte qui r sulte de ce traitement. Cest la notion de page dynamique, chapitre 8 page 29. Ces scripts ` peuvent servir dinterface a des bases de donn es comme MySQL [19]. e

Chapitre

Installation et conguration de base


` Lors de linstallation dApache, veillez a respecter les caract ristiques suie vantes : Le serveur Apache doit etre install en tant que ( service )) ; e ( Si vous faites cohabiter ce serveur avec un autre serveur Web qui ecoute par d faut sur le port 80, le serveur Apache doit alors ecouter les requ tes e e HTTP [5] sur un autre port, conventionnellement le port 8080.

2.1

Sur un syst` me Windows e

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

2.1.1

Ex cution du programme dinstallation e

` On installe la version 2.2.4 sur un serveur Windows [8] 2003 a partir du 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 ` message alarmant. Apache nest pas un produit Microsoft, voila tout. . . Cliquez sur Ex cuter . e 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 ` 4. Le dialogue relatif a la Licence safche (gure 2.3) : s lectionnez loption e ( 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 s : e Network Domain : nom de domaine, par exemple : ac-montpellier.fr Server Name : nom quali du serveur, par exemple : e 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 ser( vice. . . ) ) Autrement dit : le serveur Apache fonctionnera en tant que service, ind pendamment des sessions locales des utilisateurs connect s au sere e veur. N.B. : Ne vous inqui tez pas du port 80 qui sera effectivement modi a e e posteriori. Cliquez sur Next . 7. Le dialogue ( Setup Type ) safche (gure 2.6). Conservez loption ( Ty( ) ( pical ) puis cliquez sur Next . ) 8. Le dialogue ( Destination Folder ) ( )safche (gure 2.7) : cliquez sur Change , ` puis sur lic ne ( Create new folder ) : cr ez un dossier Apache a la rao ( ) e

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

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

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 . ( ` 10. Enn le dialogue ( Installation Wizard completed ) (gure ) succ` de a une ( ) e bote de progression (qui sest afch e quelques secondes seulement) : e cliquez sur ( Finish ) ( )

2.1.2
2.1.2.1

Arr t / D marrage du serveur e e


M thode graphique e

` oe Vous remarquerez dans la zone de notication, a c t de lhorloge, une ic ne dont lapparence indique l tat du serveur : d marr o e e e . En cliquant sur cette ic ne, il est possible dafcher un menu permettant o larr t ou le (re)d marrage du serveur (gure 2.10) e e ou arr t : ee

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.7 R pertoire de destination e

F IG . 2.8 Pr t pour linstallation e

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.9 Fin de linstallation

F IG . 2.10 Menu arr t / (re)d marrage du serveur e e

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

F IG . 2.11 Arr t / (re)d marrage du serveur dans une invite de commande e e 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 t du service : e net stop Apache2 net start Apache2 D marrage du service : e

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

CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE

10

2.2

Sur un syst` me GNU/Linux e

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

2.2.1

Installation

1. Ouvrez une console ou une emulation de terminal (Xterm). 2. Installez Apache2 au moyen de loutil apt-get : sudo apt-get install apache2 Lecture des listes de paquets... Fait Construction de larbre des dpendances e Lecture de linformation dtat... Fait e Les paquets supplmentaires suivants seront installs : e e apache2-common apache2-mpm-worker apache2-utils libapr0 Paquets suggrs : e e apache2-doc Les NOUVEAUX paquets suivants seront installs : e apache2 apache2-common apache2-mpm-worker apache2-utils libapr0 0 mis ` jour, 5 nouvellement installs, 0 ` enlever a e a et 4 non mis ` jour. a Il est ncessaire de prendre 1282ko dans les archives. e Apr`s dpaquetage, 4325ko despace disque supple e e mentaires seront utiliss. e Souhaitez-vous continuer [O/n] ? 3. Aceptez en saisisant <O> puis Entre e (...) Dpaquetage de apache2 (` partir de e a .../apache2_2.0.55-4ubuntu4_i386.deb) ... Paramtrage de libapr0 (2.0.55-4ubuntu4) ... e Paramtrage de apache2-utils (2.0.55-4ubuntu4) ... e Paramtrage de apache2-common (2.0.55-4ubuntu4) ... e 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. Paramtrage de apache2-mpm-worker e (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 ] Et hop ! cest d ja ni. . .Le serveur est d marr . Qui a dit que GNU/Linux [21] e ` e e etait compliqu ? e

2.2.2

Arr t / D marrage du serveur e e

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

2.3

Test de linstallation

Une fois le service d marr , ouvrez dans votre navigateur lURL : e e 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 n rale, httpd.conf, plac dans C:\Apache\conf e e e (Windows [8]) ou apache2.conf plac dans /etc/apache2 et associ e e ` a dautres chiers (ports.conf et sites-available/default) sur les syst` mes GNU/Linux [21] ou BSD [16]. e Un chier secondaire et facultatif, appel .htaccess , que lon copie e dans certains r pertoires. Nous en verrons un exemple dans le chae pitre 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 es Directives, constitu es dune balise ouvrante e e <Balise>, dune s rie de paires Option Valeur regroup es, et pour clore le e e ` tout, dune balise fermante </Balise>, ce qui ressemble a ceci : <Balise> Option Valeur Option Valeur (...) </Balise> 13

CHAPITRE 3. CONFIGURATION INITIALE

14

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

Un commentaire est pr c d du signe di` se # e e e e

3.3

Conguration initiale

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

3. La racine des documents servis par le serveur Web se trouve indiqu e e 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 marrer le serveur Apache. e

Chapitre

4
Sur Windows

R pertoire virtuel e
4.1

Pour cr er un Alias ESSAI pointant vers le dossier D:\essai_Apache : e 1. Cr ez pr alablement le r pertoire D:\essai_Apache e e e ` 2. Editez le chier httpd.conf et ajoutez-y la directive suivante, a lint rieur e 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 marre le serveur Apache... e Les diff rentes options seront expliqu es dans les chapitres suivants (aue e thentication et indexation).

4.2

Sur GNU/Linux ou BSD

1. On cr e le dossier /home/essai_Apache e 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 te sur lAlias ESSAI e

<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 marre le serveur Apache... e ` Et voila. . .(gure 4.1)

Chapitre

5
Restriction dacc` s au r pertoire ESSAI e e

Authentication
5.1

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

5.1.1

Mise en uvre dans un environnement Windows

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

17

CHAPITRE 5. AUTHENTIFICATION

18

` F IG . 5.1 Authentication requise pour acc der a ESSAI e

6. Maintenant que le chier de mots de passe est cr e, nous pouvons applie quer la restriction dacc` s au moyen dun chier .htaccess : d placeze e vous dans D:\essai_Apache. D: CD \essai_Apache 7. Cr ez-y un chier htaccess.txt : e 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 apparatre 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 er un chier e de mots de passe. Par d faut, loutil de cr ation du chier de mots de passe e e fourni par apache, htpasswd, utilise lalgorithme MD5. 1. Cr ation du chier des mots de passe. Dans une console ou un terminal e emul , d placez-vous dans le r pertoire : e e e /etc/apache2 cd /etc/apache2 2. Puis saisissez la commande : sudo htpasswd -bc .htpasswd matice motdepasse Ce qui cr e le chier concern et y ajoute lutilisateur matice avec le mot e e motdepasse. Adding password for user matice N.B. : Si vous omettez le mot de passe dans la commande pr c dente e e (option -c au lieu de -bc), une invite vous demande de saisir ce mot de ` e passe sans echo a l cran, s curit oblige ! e e Notez pr cieusement ce mot de passe an de le diffuser aux personnes e autoris es. e Il convient de garder le nom de chier .htpasswd car le serveur Apache interdit par d faut lafchage de ce chier par un utilisateur distant. Le e ` contenu du chier .htpasswd ressemble a ceci : matice:motdepassecrypt e 3. Maintenant que le chier de mots de passe est cr e, nous pouvons applie quer la restriction dacc` s au moyen dun chier .htaccess : d placeze e vous dans /home/essai Apache. cd /home/essai_Apache 4. Cr ez-y un chier .htaccess : e touch .htaccess 5. Editez-le dans votre editeur pr f r 1 : ee e 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 apparatre linvite dauthentication comme sur la gure 5.2.
1

vi, nano. . .

CHAPITRE 5. AUTHENTIFICATION

20

` F IG . 5.2 Authentication requise pour acc der a ESSAI : serveur e 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 f rence : ESSAI, ee 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 signe le chier index.html comme index par d faut si lURL est un e e r pertoire. On peut aussi ajouter dautres chiers dans cette liste, par ordre e de priorit , s par par un espace ; par exemple : e e e <IfModule dir_module> DirectoryIndex index.html index.htm index.php index.pl </IfModule>

21

CHAPITRE 6. INDEXATION

22

F IG . 6.1 Par d faut, erreur dacc` s 403 e e

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` s si aucun chier index.html nest pr sent : erreur e e 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 s nest e 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 pertoire si aucun chier index.html e nest pr sent (gure 6.3) : e

CHAPITRE 6. INDEXATION

25

F IG . 6.4 Indexation avec loption IndexIgnore ..

6.2.3 Pour masquer le r pertoire parent dans la liste du contenu e de r pertoire (variante du 6.2.2 ci-dessus) : e
On ajoute loption IndexIgnore suivie du nom du r pertoire parent .. : e <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 liorer lafchage (variante du 6.2.3) e

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 dans /etc/apache2/apac e par la directive ErrorLog : ErrorLog /var/log/apache2/error.log Les autres param` tres de journalisation sont indiqu s dans chaque chier e e de conguration li a un site dans le r pertoire /etc/apache2/sites-available : e` e Le niveau dalerte est d ni par la directive LogLevel dans le chier de cone guration default. Par exemple : LogLevel warn Les valeurs possibles sont, du plus b nin au plus grave : debug, info, notice, e warn, error, crit. Lemplacement du journal de connexion est indiqu par la directive CustomLog : e CustomLog /var/log/apache2/access.log combined Par d faut, Apache propose quatre formats de journaux, d crits dans la e e directive LogFormat du chier apache2.conf. Les voici du plus complexe au plus simple : combined, common, referer, agent. Voici, par exemple, la d nition de common : e LogFormat "%h %l %u %t \"%r\" %>s %b" common

27

CHAPITRE 7. JOURNALISATION

28

7.2

Rotation quotidienne des journaux

Par d faut, Apache cr e un journal acces.log dont la taille peut atteindre e e 5 Go ! Il convient de d couper automatiquement ce journal. Loutil fourni e avec Apache, logrotate.exe dans le cas de Windows, ou logrotate sous GNU/Linux, ne convient pas car il produit des journaux incr ment s de la e e ` ` forme accessi .log ou i prend a chaque rotation la valeur i + 1. Cette convention de nommage ne permet pas une recherche par date. Nous conseillons dutiliser un outil tiers appel cronolog [13]. Prenons le cas dun e dun journal Apache sous Windows : 1. T l chargez larchive : win32 version (ZIP le), [14], ee 2. D compressez-la, e 3. Copiez lex cutable cronolog.exe e 4. Cr ez un dossier C:\cronolog, e 5. Collez-y lex cutable, e 6. Editez le chier de conguration dApache ainsi : Notepad C:\Apache\conf\httpd.conf 7. Rep rez la section : e <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 marrez le serveur apache. e 10. V riez dans C:\Apache\logs la prise en compte du nouveau format. e

7.3

Outils de statistiques

Il existe des outils de statistiques d di s a lanalyse des serveurs Web. e e ` Voyez notre dossier consacr a awstats [23]. e `

Chapitre

8
Interpr teur Perl et scripts CGI e
Installation de Perl sous Windows

Gestion des pages dynamiques


8.1
8.1.1

1. On se procure la distribution Perl de l diteur Activestate, ActivePerl. e Dans notre cas, la version est : ActivePerl 5.8.8 Build 819. (a) Ex cution de lAssistant dinstallation (gure 8.1). e (b) Dans le dialogue suivant, s lectionnez loption ( I accept the terms. . . )), e ( puis cliquez sur Next (gure 8.2). e (c) Dans le dialogue suivant, s lectionnez les el ments indiqu s, sans e e installer la documentation ni les exemples, puis cliquez sur Next (gure 8.3). (d) Dans le dialogue suivant, d cochez la derni` re option ( Create virtual e e ( 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 , il faut congurer Apache pour les scripts e Perl-CGI. Dans notre exemple, linterpr teur perl est dans C:\Perl\bin\ e (a) Si on essaie tout de suite dinvoquer une URL avec un chier .pl , celui-ci ne sera pas correctement interpr t (gure 8.7). ee Pour eviter ce type derreur, il faut respecter trois principes : Tout script Perl doit commencer par une ( incantation ) cette ( ), premi` re ligne, non indent e d butant par #! et contenant le chee e e min de lex cutable perl.exe ; dans notre cas : e #!c:/perl/bin/perl.exe -w Il faut aussi placer les scripts dans un r pertoire d clar par la e e e directive ScriptAlias, par exemple : ScriptAlias /cgi-bin/ "D:/cgi-bin/" Il faut indiquer enn la directive Directory correspondante, plac e e 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 es, un red marrage du serveur e e Apache sera n cessaire. e (c) LURL appel e sera : e http://localhost:8080/cgi-bin/monscript.pl?clef=essai On voit sur la capture d cran (gure ) que le param` tre Toutes a e e e e et r cup r par la script au moment de son interpr tation. e e e

CHAPITRE 8. GESTION DES PAGES DYNAMIQUES

34

F IG . 8.8 Ex cution correcte du script CGI-Perl e

Il ne faut pas placer le dossier cgi-bin sous un dossier d ja associ a un alias existant. e ` e ` 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 faut, toutes les distributions GNU/Linux ont une version de Perl inse tall e. Nous donnons ici lexemple dune distribution de type Debian : Ubuntu. e Pour connatre la version install e sur un syst` me de type Debian/Ubuntu, e e ex cutez la commande : e dpkg -l perl Ce qui renvoie dans mon cas : ii perl 5.8.8-6 ...

Pour d terminer le chemin de lex cutable perl, on ex cute la commande e e e 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 ` Lincantation a placer au d but des scripts Perl sera donc : e #!/usr/bin/perl -w Il faut aussi installer le module mod perl [22] dApache : sudo apt-get install libapache2-mod-perl2 Pour v rier que ce module est bien activ : e e sudo a2enmod perl This module is already enabled! e Pour tester le script monscript.pl, dont lincantation a et adapt e a e ` notre environnement GNU/Linux (voir ci-dessus, chemin de linterpr teur e perl) nous le copions dans : /usr/lib/cgi-bin/ : sudo cp monscript.pl /usr/lib/cgi-bin/ Password: ` Ce chemin des CGI est conforme a la directive ScriptAlias dans : /etc/apache2/available_sites/default e e Celle-ci a et adapt e ainsi an de prendre mod perl comme interpr teur e 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> e Le serveur Apache2 ayant et red marr : e 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 teur PHP e


PHP

PHP [17] est un langage de script qui permet l criture de pages dynae miques. Une section de script PHP se caract rise par les balises : e <?php instruction ; ?>

8.2.2

Installation de PHP sur un syst` me Microsoft Windows e

1. Procurez-vous le programme dinstallation de PHP pour Windows. Dans notre exemple, nous avons utilis le site de t l chargement de PHP : e ee http://fr2.php.net/downloads.php Version : 5.2.1 Installateur : php-5.2.1-win32-installer.msi 2. Ex cutez php-5.2.1-win32-installer.msi e En voici les etapes : (a) Certicat de l diteur : passez outre la mise en garde. . . en cliquant e sur Ex cuter (gure 8.10). e (b) Lassistant dinstallation de PHP safche. Cliquez sur Next (gure 8.11). ` (c) Safche le dialogue relatif a la licence : cochez loption ( 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)

` (e) Dans le dialogue suivant, indiquez le serveur Web a congurer pour interpr ter les scripts PHP : dans notre cas, il sagit dune version e 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` ration dApache (ou se trouve notamment, httpd.conf) : dans notre exemple, C:\Apache\conf\. Puis cliquez sur Next (gure 8.15). (g) Dans le dialogue suivant, d veloppez larborescence des extensions e et s lectionnez lextension MySQL an de supporter des applications e PHP-MySQL1 . Puis cliquez sur Next (gure 8.16). (h) LAssistant est pr t pour linstallation. Cliquez sur install (gure 8.17). e (i) Lassistant vous propose de modier la conguration dApache. Acceptez (gure 8.18). En fait, les lignes suivantes seront ajout es e 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 ` (j) Cliquez sur Finish pour mettre n a lassistant (8.19).
MySQL est un serveur de bases de donn es SQL. Nous naborderons pas son installation e ici qui d passerait notre propos. e
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 marrez le serveur Apache. Si vous oubliez de le red marrer, e e vous obtiendrez lerreur de la gure 8.20 : le script est afch sans e etre interpr t pr alablement sur le serveur. En revanche, apr` s ee e e red marrage du serveur Apache, linstruction suivante dans le script e info.php afchera la page dinformation sur PHP dans votre navi` gateur (gure 8.21) a lURL : 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 e par info.php e

8.2.3

Installation de PHP sur un syst` me GNU/Linux e

Exemple sur une distribution de type Debian : Ubuntu. Dans une console ou un terminal emul , proc dez ainsi : e e 1. Installez le paquet g n rique php5 : e e 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 quemment retourn es au client par le serveur e e Apache. Une bonne compr hension de ces erreurs constitue un bon outil de e diagnostic.
Code retourn e 401 403 404 405 408 500 Mots cl s e UNAUTHORIZED FORBIDDEN NOT FOUND METHOD NOT ALLOWED REQUEST TIME OUT INTERNAL SERVER ERROR Explication Droits dex cution insufsant (1) e Acc` s interdit (2) e Fichier introuvable M thode non autoris e e e D lai de connexion d pass . e e e Erreur serveur interne (3)

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

46

Annexe

B
CGI Perl

Sources des scripts


B.1

e Voici la version de monscript.pl adapt e a GNU/Linux. Il a et notame ` ment n cessaire de g rer le probl` me des en-t tes renvoy s par Apache2 en e e e e e ajoutant la section : use Apache2::RequestRec (); my $r = shift; $r->content_type(text/html); an de g rer l criture diff r e des sections du type : e e e e 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 e e Ce manuel a et r alis au moyen du langage de mise en page LTEX [24], e ` dans sa distribution TEXLive [25] sur un syst` me GNU/Linux, a savoir Ubuntu. e e e Les textes ont et edit s dans l diteur TeXmaker [26] et compil s au moyen e e de la commande pdflatex.

e e Illustrations : les captures d cran ont et r alis es sur le syst` me Microsoft e e e Windows 2003 dun ordinateur portable pr t par la MATICE de Montpellier, ee enregistr es au format PNG et retouch es au moyen de ImageMagick [27] ou e e 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 f renc e ee e ici : http://gimp-savvy.com/.

49

Bibliographie

[1] Licence GNU-FDL http://www.gnu.org/copyleft/fdl.html angl. [2] Licence Generale Publique GNU http://fsffrance.org/gpl/gpl-fr.fr. html [3] Apache France, http://www.apachefrance.com/ [4] B EN L AURIE ET P ETER L AURIE, Apache, installation et mise en uvre, ed. OReilly, 2nde edition, mars 2000. [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 dia, Article Apache HTTP Server e 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] LTEX 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

Vous aimerez peut-être aussi