apache tutoriel
TRANSCRIPT
-
8/22/2019 Apache Tutoriel
1/56
Les dossiers Open Source de la
Patrick Cardona
Configurer Apache
mars 2007
-
8/22/2019 Apache Tutoriel
2/56
i
Ce dossier est public et libre au sens de la licence GNU-FDL :
Permission vous est donnee de copier, distribuer et/ou modifier
ce document selon les termes de la Licence GNU Free Documenta-
tion License, Version 1.1 ou ulterieure publiee par la Free Software
Foundation.
2007 Patrick CARDONA & Mission Academique TICE de
Montpellier
Une copie de cette Licence GNU Free Documentation License est
consultable sur le site de la Fondation GNU [1].
-
8/22/2019 Apache Tutoriel
3/56
Sommaire
Introduction iv
1 Principe de fonctionnement 1
2 Installation et configuration de base 2
2.1 Sur un systeme Windows . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1 Execution du programme dinstallation . . . . . . . . . . . . 2
2.1.2 Arret / Demarrage du serveur . . . . . . . . . . . . . . . . . 6
2.2 Sur un systeme GNU/Linux . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Arret / Demarrage du serveur . . . . . . . . . . . . . . . . . 11
2.3 Test de linstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Configuration initiale 13
3.1 Les fichiers de configuration . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Les directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Configuration initiale . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Repertoire virtuel 15
4.1 Sur Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Sur GNU/Linux ou BSD . . . . . . . . . . . . . . . . . . . . . . . . 15
5 Authentification 17
5.1 Restriction dacces au repertoire ESSAI . . . . . . . . . . . . . . . . 17
ii
-
8/22/2019 Apache Tutoriel
4/56
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 repertoire parent dans la liste du contenu
de repertoire (variante du 6.2.2 ci-dessus) : . . . . . . . . . 25
6.2.4 Pour ameliorer laffichage (variante du 6.2.3) . . . . . . . . 26
7 Journalisation 27
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 Interpreteur Perl et scripts CGI . . . . . . . . . . . . . . . . . . . . 29
8.1.1 Installation de Perl sous Windows . . . . . . . . . . . . . . . 298.1.2 CGI Perl sur un serveur GNU/Linux . . . . . . . . . . . . . 34
8.2 Interpreteur PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2.1 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2.2 Installation de PHP sur un systeme Microsoft Windows . . 3 7
8.2.3 Installation de PHP sur un systeme GNU/Linux. . . . . . . 45
A Les messages derreur 46
B Sources des scripts 47
B.1 CGI Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
C Colophon 49
-
8/22/2019 Apache Tutoriel
5/56
Introduction
Ce petit manuel se propose de rappelera travers quelques exemples simples
les principaux aspects de la configuration dun serveur Web Apache [10] : ins-
tallation et configuration de base, notion de Directive, creation dun r epertoire
virtuel, authentification, indexation et journalisation, ainsi que pages dyna-
miques 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 hote GNU/Linux [21], FreeBSD [16]
ou un serveur Microsoft Windows [8] 2003. La configuration sera identique,
a lexception de certains fichiers parfois repartis en deux ou trois fichiers
complementaires ou la notation des chemins de repertoires, qui seront specifiques
a chaque systeme (Type MS-DOS ou UNIX).
iv
-
8/22/2019 Apache Tutoriel
6/56
Chapitre1
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 resumer ainsi le dialogue :
1. Le client demande un fichier (ou une liste de repertoire, voir indexation,
chapitre 6.2.4 page 27) au moyen dune URL. Cest une (( requete )) 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 fichier demande existe, sinon il renvoie un message derreurA.
(b) il existe une restriction dacces : dans ce cas le serveur demande
prealablement un identifiant (login) et un mot de passe, et gere les
eventuelles erreurs A; sinon le fichier demande est envoye au navi-
gateur qui le traite en fonction de son type (affichage, ouverture au
moyen dun programme incorpore (plugin) ou exterieur, enregistre-
ment sur le disque, etc.)
(c) le navigateur met fin a la requete. Parfois, la connexion est rompue
par le serveur si le delai de connexion prevu a ete depasse.Certains noms de fichiers sont des scripts (extension .php ou .pl, par
exemple) et sont prealablement interpretes sur le serveur par un interpreteur
PHP [17] ou Perl [9] avant de renvoyer un flux de texte qui resulte de ce
traitement. Cest la notion de page dynamique, chapitre 8 page 29. Ces scripts
peuvent servir dinterface a des bases de donnees comme MySQL [19].
1
-
8/22/2019 Apache Tutoriel
7/56
Chapitre2
Installation et configuration debase
Lors de linstallation dApache, veillez a respecter les caracteristiques sui-
vantes :
Le serveur Apache doitetre installe en tant que (( service )) ;
Si vous faites cohabiter ce serveur avec un autre serveur Web qui ecoute
par defaut sur le port80, le serveur Apache doit alors ecouter les requetes
HTTP [5] sur un autre port, conventionnellement le port 8080.
2.1 Sur un systeme Windows
Dans ce qui suit, on choisit comme emplacement du dossier dinstallation :
C:\Apache. Sinon, tenez-en compte dans les parametres a adapter le cas
echeant.
2.1.1 Execution du programme dinstallation
On installe la version 2.2.4 sur un serveur Windows [8] 2003 a partir du
fichier MSI suivant :apache_2.2.4-win32-x86-no_ssl.msi
1. Clic-droit surapache_2.2.4-win32-x86-no_ssl.msi
Dans le menu contextuel, choisissez (( Installer)).
2. Le dialogue de certificat (figure 2.1) saffiche : ne tenez pas compte du
message alarmant. Apache nest pas un produit Microsoft, voila tout. . .
Cliquez sur Executer .
3. Le dialogue de lAssistant (angl. wizard) dinstallation s affiche (figure 2.2) :
bouton Next
2
-
8/22/2019 Apache Tutoriel
8/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 3
FIG. 2.1 Certificat dinstallation
FIG . 2.2 Assistant dinstallation
-
8/22/2019 Apache Tutoriel
9/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 4
FIG . 2.3 Licence
4. Le dialogue relatifa la Licence saffiche (figure 2.3) : selectionnez loption
(( I accept the terms. . . )), puis cliquez sur Next .
5. Le dialogue (( Read this first)) saffiche (figure 2.4) : cliquez sur Next .
6. Le dialogue (( Server Information )) saffiche (figure 2.5) :
Renseignez les champs demandes :
Network Domain : nom de domaine, par exemple :
ac-montpellier.fr
Server Name : nom qualifie du serveur, par exemple :monserveur.ac-montpellier.fr
Administrators Email address : courriel du webmestre, par exemple :
Choisissez loption (( For all users, on Port 80, as a ser-
vice. . . ))
Autrement dit : le serveur Apache fonctionnera en tant que service,
independamment des sessions locales des utilisateurs connectes au ser-veur.
N.B. : Ne vous inquietez pas du port80 qui sera effectivement modifie a
posteriori.
Cliquez sur Next .
7. Le dialogue (( Setup Type )) saffiche (figure 2.6). Conservez loption (( Ty-
pical )) puis cliquez sur Next .
8. Le dialogue (( Destination Folder))saffiche (figure 2.7) : cliquez sur Change ,
puis sur licone (( Create new folder)) : creez un dossier Apache a la ra-
-
8/22/2019 Apache Tutoriel
10/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 5
FIG . 2.4 `A lire (en anglais. . .)
FIG . 2.5 Configuration de base
-
8/22/2019 Apache Tutoriel
11/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 6
FIG. 2.6 Type dinstallation
cine du lecteur C:
C:\Apache
9. Le dialogue (( Ready to Install. . . )) saffiche (figure 2.8) : cliquez sur Install .
10. Enfin le dialogue (( Installation Wizard completed )) (figure ) succede a une
bote de progression (qui sest affichee quelques secondes seulement) :
cliquez sur (( Finish ))
2.1.2 Arret / Demarrage du serveur
2.1.2.1 Methode graphique
Vous remarquerez dans la zone de notification, a cote de lhorloge, une
icone dont lapparence indique letat du serveur : demarre ou arr ete :
.
En cliquant sur cette icone, il est possible dafficher un menu permettant
larret ou le (re)demarrage du serveur (figure 2.10)
-
8/22/2019 Apache Tutoriel
12/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 7
FIG . 2.7 Repertoire de destination
FIG. 2.8 Pret pour linstallation
-
8/22/2019 Apache Tutoriel
13/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 8
FIG. 2.9 Fin de linstallation
FIG . 2.10 Menu arret / (re)demarrage du serveur
-
8/22/2019 Apache Tutoriel
14/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 9
FIG . 2.11 Arret / (re)demarrage du serveur dans une invite de commande
CMD
2.1.2.2 Dans une invite de commande
Ouvrez une invite de commande CMD (figure 2.11).
Recherche du service : net start |find "Apache"
renvoie le nom du service :
Apache2
Arret du service : net stop Apache2
Demarrage du service : net start Apache2
N.B. : Il nexiste pas de commande restart en ligne de commande : on est
oblige de proceder en deux temps : net stop puis net start.
-
8/22/2019 Apache Tutoriel
15/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 10
2.2 Sur un systeme GNU/Linux
Nous prenons lexemple dun systeme fonde surDebian : Ubuntu [11].
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 dependances
Lecture de linformation detat... Fait
Les paquets supplementaires suivants seront installes :
apache2-common apache2-mpm-worker apache2-utilslibapr0
Paquets suggeres :
apache2-doc
Les NOUVEAUX paquets suivants seront installes :
apache2 apache2-common apache2-mpm-worker
apache2-utils libapr0
0 mis a jour, 5 nouvellement installes, 0 a enlever
et 4 non mis a jour.
Il est necessaire de prendre 1282ko dans les archives.
Apres depaquetage, 4325ko despace disque supple-
mentaires seront utilises.Souhaitez-vous continuer [O/n] ?
3. Aceptez en saisisant puis Entree
(...)
Depaquetage de apache2 (a partir de
.../apache2_2.0.55-4ubuntu4_i386.deb) ...
Parametrage de libapr0 (2.0.55-4ubuntu4) ...
Parametrage de apache2-utils (2.0.55-4ubuntu4) ...
Parametrage 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.
Parametrage de apache2-mpm-worker
(2.0.55-4ubuntu4)
...
* Starting apache 2.0 web server...
apache2: Could not determine the servers fully
-
8/22/2019 Apache Tutoriel
16/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 11
qualified domain name, using 127.0.0.1 for
ServerName [ ok ]
Et hop ! cest deja fini. . .Le serveur est demarre. Qui a dit que GNU/Linux [21]
etait complique ?
2.2.2 Arret / Demarrage du serveur
Dans une console ou un terminal emule :
Arret du serveur sudo /etc/init.d/apache2 stop
Password:
* Stopping apache 2.0 web server...
Demarrage du serveur sudo /etc/init.d/apache2 start
Password:
* Starting apache 2.0 web server... [ ok ]
Redemarrage du serveur sudo /etc/init.d/apache2 restart
Password:
* Forcing reload of apache 2.0 web server... [ ok ]
2.3 Test de linstallation
Une fois le service demarre, 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
(figure 2.12).
-
8/22/2019 Apache Tutoriel
17/56
CHAPITRE 2. INSTALLATION ET CONFIGURATION DE BASE 12
FIG . 2.12 Test de linstallation
-
8/22/2019 Apache Tutoriel
18/56
Chapitre3
Configuration initiale
3.1 Les fichiers de configuration
Apache utilise essentiellement deux sortes de fichiers de configuration :
Le fichier de configuration generale, httpd.conf, place dans C:\Apache\conf
(Windows [8]) ou apache2.conf place dans /etc/apache2 et associe
a dautres fichiers (ports.conf et sites-available/default) sur les
systemes GNU/Linux [21] ou BSD [16].
Un fichier secondaire et facultatif, appele .htaccess , que lon copie
dans certains repertoires. Nous en verrons un exemple dans le cha-
pitre 5.1.2, page 21.
3.2 Les directives
Le fichier 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 appelees Directives, constituees dune balise ouvrante
, dune serie de paires Option Valeur regroupees, et pour clore le
tout, dune balise fermante , ce qui ressemble a ceci :
Option Valeur
Option Valeur
(...)
13
-
8/22/2019 Apache Tutoriel
19/56
CHAPITRE 3. CONFIGURATION INITIALE 14
Par exemple, voici la directive du repertoire des scripts CGI :
AllowOverride NoneOptions None
Order allow,deny
Allow from all
Un commentaire est precede du signe diese #
3.3 Configuration initiale
Voici les Options a adapter ou a verifier :
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 serveurApache: optionListen
. Pour ecoutersur 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 indiquee
soit dans httpd.conf (sur Windows), soit dans /etc/apache2/sites-available/d
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 redemarrer le serveur Apache.
-
8/22/2019 Apache Tutoriel
20/56
Chapitre4
Repertoire virtuel
4.1 Sur Windows
Pour creer un Alias ESSAI pointant vers le dossier D:\essai_Apache :
1. Creez prealablement le repertoire D:\essai_Apache
2. Editez le fichierhttpd.conf et ajoutez-y la directive suivante, a linterieur
de la directive . . . 1 :
Alias /ESSAI/ D:/essai_apache/
AllowOverride AuthConfig
Options Indexes
IndexOptions FancyIndexing
IndexIgnore ..
Order allow,deny
Allow from all
3. On redemarre le serveur Apache...
Les differentes options seront expliquees dans les chapitres suivants (au-
thentification et indexation).
4.2 Sur GNU/Linux ou BSD
1. On cree le dossier /home/essai_Apache
2. Dans /etc/apache2/sites-enabled/ on ajoute la directive :
Alias /ESSAI/ "/home/essai_Apache/"
1Cette directive remplace lancienne directive IfModule mod alias.c
15
-
8/22/2019 Apache Tutoriel
21/56
CHAPITRE 4. REPERTOIRE VIRTUEL 16
FIG . 4.1 Requete sur lAlias ESSAI
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
3. On redemarre le serveur Apache...
Et voila. . .(figure 4.1)
-
8/22/2019 Apache Tutoriel
22/56
Chapitre5
Authentification
5.1 Restriction dacces au repertoire ESSAI
Pour mettre en uvre ce controle dacces, nous utilisons un fichier.htaccess
pour restreindre cet acces a un utilisateur autorise : matice.
Avant de suivre les etapes suivantes, assurez-vous davoir cree u n r epertoire
virtuel ESSAI comme indique dans le chapitre 4 et davoir remplace loption :
AllowOverride None
par
AllowOverride AuthConfig
5.1.1 Mise en uvre dans un environnement Windows
1. Dabord, le fichier des mots de passe : creez un dossier C:\Apache\etc,
2. Copiez-y lutilitaire C:\Apache\bin\htpasswd.exe,
3. Ouvrez une invite de commande CMD,
4. Deplacez-vous dans le dossierC:\Apache\etc :
CD \
CD Apache\etc
5. Executez-y la commande suivante :htpasswd.exe -bc .htpasswd matice motdepasse
En y remplacant motdepasse, bien evidemment. Notez precieusement ce
mot de passe afin de le diffuser aux personnes autorisees.
Il convient de garder le nom de fichier .htpasswd car le serveur Apache
interdit par defaut laffichage de ce fichier par un utilisateur distant. Le
contenu du fichier.htpasswd ressemble a ceci :
matice:motdepassecrypte
17
-
8/22/2019 Apache Tutoriel
23/56
CHAPITRE 5. AUTHENTIFICATION 18
FIG. 5.1 Authentification requise pour acceder a ESSAI
6. Maintenant que le fichier de mots de passe est cree, nous pouvons appli-
quer la restriction dacces au moyen dun fichier .htaccess : deplacez-
vous dans D:\essai_Apache.
D:
CD \essai_Apache
7. Creez-y un fichier 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 fichier 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 dauthentification comme sur la fi-
gure 5.1.
-
8/22/2019 Apache Tutoriel
24/56
CHAPITRE 5. AUTHENTIFICATION 19
5.1.2 Mise en uvre dans un environnement GNU/Linux
Pour mettre en uvre cette authentification, il faut dabord creer un fichier
de mots de passe. Par defaut, loutil de creation du fichier de mots de passefourni par apache, htpasswd, utilise lalgorithme MD5.
1. Creation du fichier des mots de passe. Dans une console ou un terminal
emule, deplacez-vous dans le repertoire :
/etc/apache2
cd /etc/apache2
2. Puis saisissez la commande :
sudo htpasswd -bc .htpasswd matice motdepasse
Ce qui cree le fichier concerne et y ajoute lutilisateur matice avec le mot
motdepasse.
Adding password for user maticeN.B. : Si vous omettez le mot de passe dans la commande precedente
(option -c au lieu de -bc), une invite vous demande de saisir ce mot de
passe sans echo a lecran, securite oblige !
Notez precieusement ce mot de passe afin de le diffuser aux personnes
autorisees.
Il convient de garder le nom de fichier .htpasswd car le serveur Apache
interdit par defaut laffichage de ce fichier par un utilisateur distant. Le
contenu du fichier.htpasswd ressemble a ceci :
matice:motdepassecrypte
3. Maintenant que le fichier de mots de passe est cree, nous pouvons appli-quer la restriction dacces au moyen dun fichier .htaccess : deplacez-
vous dans /home/essai Apache.
cd /home/essai_Apache
4. Creez-y un fichier .htaccess :
touch .htaccess
5. Editez-le dans votre editeur prefere1 :
sudo vi .htaccess
et saisissez-y ceci :
Authname "ESSAI"
AuthUserFile /etc/apache2/.htpasswdAuthType Basic
require valid-user
6. Enregistrez le fichier.
7. Testez la connexion : dans un navigateur, saisissez lURL :
http://localhost/ESSAI/
Vous devez voir apparatre linvite dauthentification comme sur la fi-
gure 5.2.
1vi, nano. . .
-
8/22/2019 Apache Tutoriel
25/56
CHAPITRE 5. AUTHENTIFICATION 20
FIG . 5.2 Authentification requise pour acceder a ESSAI : serveur
GNU/Linux, client Firefox
-
8/22/2019 Apache Tutoriel
26/56
Chapitre6
Indexation
6.1 Principe
Voici en quelques mots comment personnaliser la gestion de lindexation
avec un serveur Web Apache. On travaille avec un alias de reference : ESSAI,
ce qui correspond aux directives suivantes dans httpd.conf :
Alias /ESSAI/ D:/essai_apache/
AllowOverride None
Options NoneOrder allow,deny
Allow from all
Et la directive commune :
DirectoryIndex index.html
qui designe le fichier index.html comme index par defaut si lURL est un
repertoire. On peut aussi ajouter dautres fichiers dans cette liste, par ordre
de priorite, separe par un espace ; par exemple :
DirectoryIndex index.html index.htm index.php index.pl
21
-
8/22/2019 Apache Tutoriel
27/56
CHAPITRE 6. INDEXATION 22
FIG . 6.1 Par defaut, erreur dacces 403
6.2 Combinaison de directives et doptions
6.2.1 Avec loption Options None dans la directive
(...)
Options None
(...)
La demande de lURL :
http://localhost:8080/ESSAI/
provoque un refus dacces si aucun fichier index.html nest present : erreur
403 (figure 6.1).
On peut aussi, dans loption DirectoryIndex, indiquer un chemin absolu
vers un fichier derreur plus explicite si aucun des fichiers envisages nest
dabord trouve :
DirectoryIndex index.html /ESSAI/erreur.txt
Ce qui donne alors le message de la figure 6.2.
-
8/22/2019 Apache Tutoriel
28/56
CHAPITRE 6. INDEXATION 23
FIG . 6.2 Message derreur personnalise
-
8/22/2019 Apache Tutoriel
29/56
CHAPITRE 6. INDEXATION 24
FIG. 6.3 Indexation avec loption Option Indexes
6.2.2 Avec loption Options Indexes dans la directive Directory
(...)
Options Indexes
(...)
et labsence de fichier derreur personnalise :
DirectoryIndex index.html index.htm index.php
la demande de lURL :
http://localhost:8080/ESSAI/
provoque laffichage du contenu du repertoire si aucun fichier index.html
nest present (figure 6.3) :
-
8/22/2019 Apache Tutoriel
30/56
CHAPITRE 6. INDEXATION 25
FIG. 6.4 Indexation avec loption IndexIgnore ..
6.2.3 Pour masquer le repertoire parent dans la liste du contenude repertoire (variante du 6.2.2 ci-dessus) :
On ajoute loption IndexIgnore suivie du nom du repertoire parent .. :
(...)
Options Indexes
IndexIgnore ..
Ce qui donne la figure 6.4.
-
8/22/2019 Apache Tutoriel
31/56
CHAPITRE 6. INDEXATION 26
FIG. 6.5 Indexation avec loption FancyIndexing
6.2.4 Pour ameliorer laffichage (variante du 6.2.3)
On ajoute loption IndexOptions FancyIndexing
(...)
Options Indexes
IndexOptions FancyIndexing
IndexIgnore ..
(...)
Ce qui donne la figure 6.5.
-
8/22/2019 Apache Tutoriel
32/56
Chapitre7
Journalisation
7.1 Directives et formats de journalisation
Sous Linux, lemplacement du journal des erreurs est indique dans /etc/apache2/apa
par la directive ErrorLog :
ErrorLog /var/log/apache2/error.log
Les autres parametres de journalisation sont indiques dans chaque fichier
de configuration lie a un site dans le r epertoire /etc/apache2/sites-available :
Le niveau dalerte est defini par la directive LogLevel dans le fichier de confi-guration default. Par exemple :
LogLevel warn
Les valeurs possibles sont, du plus benin au plus grave : debug, info, notice,
warn, error, crit.
Lemplacement du journal de connexion est indique par la directive CustomLog :
CustomLog /var/log/apache2/access.log combined
Par defaut, Apache propose quatre formats de journaux, decrits dans la
directive LogFormat du fichierapache2.conf. Les voici du plus complexe au
plus simple : combined, common, referer, agent.
Voici, par exemple, la definition de common :
LogFormat "%h %l %u %t \"%r\" %>s %b" common
27
-
8/22/2019 Apache Tutoriel
33/56
CHAPITRE 7. JOURNALISATION 28
7.2 Rotation quotidienne des journaux
Par defaut, Apache cree un journal acces.log dont la taille peut atteindre
5 Go ! Il convient de decouper automatiquement ce journal. Loutil fourniavec Apache, logrotate.exe dans le cas de Windows, ou logrotate sous
GNU/Linux, ne convient pas car il produit des journaux incrementes de la
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 appele cronolog [13]. Prenons le cas dun
dun journal Apache sous Windows :
1. Telechargez larchive : win32 version (ZIP file), [14],
2. Decompressez-la,
3. Copiez lexecutable cronolog.exe
4. Creez un dossier C:\cronolog,
5. Collez-y lexecutable,
6. Editez le fichier de configuration dApache ainsi :
Notepad C:\Apache\conf\httpd.conf
7. Reperez la section :
8. Puis modifiez ainsi la directive CustomLog :
CustomLog "| C:/cronolog/cronolog.exe logs/access-%Y%m%d.log" common
9. Redemarrez le serveur apache.
10. Verifiez dans C:\Apache\logs la prise en compte du nouveau format.
7.3 Outils de statistiques
Il existe des outils de statistiques dedies a lanalyse des serveurs Web.
Voyez notre dossier consacre a awstats [23].
-
8/22/2019 Apache Tutoriel
34/56
Chapitre8
Gestion des pages dynamiques
8.1 Interpreteur Perl et scripts CGI
8.1.1 Installation de Perl sous Windows
1. On se procure la distribution Perl de lediteur Activestate, ActivePerl.
Dans notre cas, la version est : ActivePerl 5.8.8 Build 819.
(a) Execution de lAssistant dinstallation (figure 8.1).
(b) Dans le dialogue suivant, selectionnez loption((
I accept the terms. . .))
,puis cliquez sur Next (figure 8.2).
(c) Dans le dialogue suivant, selectionnez les elements indiques, sans
installer la documentation ni les exemples, puis cliquez sur Next
(figure 8.3).
(d) Dans le dialogue suivant, decochez la derniere option (( Create virtual
IIS directory. . . )), puis cliquez sur Next (figure 8.4).
Dans le dialogue suivant, lancez linstallation en cliquant sur Install
(figure 8.5).
(e) Refermez lassistant en cliquant sur Finish dans le dialogue sui-
vant (figure 8.6).
29
-
8/22/2019 Apache Tutoriel
35/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 30
FIG . 8.1 Installation de Perl (1)
FIG . 8.2 Installation de Perl (2)
-
8/22/2019 Apache Tutoriel
36/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 31
FIG . 8.3 Installation de Perl (3)
FIG . 8.4 Installation de Perl (4)
-
8/22/2019 Apache Tutoriel
37/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 32
FIG . 8.5 Installation de Perl (5)
FIG . 8.6 Installation de Perl (6)
-
8/22/2019 Apache Tutoriel
38/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 33
FIG . 8.7 Installation de Perl (7)
2. Maintenant que Perl est installe, il faut configurerApachepour les scripts
Perl-CGI. Dans notre exemple, linterpreteur perl est dans C:\Perl\bin\
(a) Si on essaie tout de suite dinvoquer une URL avec un fichier .pl ,
celui-ci ne sera pas correctement interprete (figure 8.7).
Pour eviter ce type derreur, il faut respecter trois principes :
Tout script Perl doit commencer par une (( incantation )), cette
premiere ligne, non indentee debutant par#! et contenant le che-
min de lexecutable perl.exe ; dans notre cas :
#!c:/perl/bin/perl.exe -w
Il faut aussi placer les scripts dans un repertoire declare par la
directive ScriptAlias, par exemple :
ScriptAlias /cgi-bin/ "D:/cgi-bin/"
Il faut indiquer enfin la directive Directory correspondante, placee
en dehors de la section
Par exemple :
AllowOverride None
Options None
Order allow,denyAllow from all
(b) Une fois ces modifications effectuees, un redemarrage du serveur
Apache sera necessaire.
(c) LURL appelee sera :
http://localhost:8080/cgi-bin/monscript.pl?clef=essai
On voit sur la capture decran (figure ) que le parametre Toutes a
ete recupere par la script au moment de son interpretation.
http://localhost:8080/cgi-bin/monscript.pl?clef=essaihttp://localhost:8080/cgi-bin/monscript.pl?clef=essai -
8/22/2019 Apache Tutoriel
39/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 34
FIG. 8.8 Execution correcte du script CGI-Perl
Il ne faut pas placer le dossier cgi-bin sous un dos-
sier deja associe a un alias existant.
Par exemple, D:\essai_apache\cgi-bin\ avec lURLhttp://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 defaut, toutes les distributions GNU/Linux ont une version de Perl ins-
tallee. Nous donnons ici lexemple dune distribution de type Debian : Ubuntu.
Pour connatre la version installee sur un systeme de type Debian/Ubuntu,
executez la commande :
dpkg -l perl
Ce qui renvoie dans mon cas :
ii perl 5.8.8-6 ...
Pour determiner le chemin de lexecutable perl, on execute la commande
suivante :
whereis perl
Ce qui dans mon cas renvoie :
http://localhost:8080/ESSAI/cgi-bin/%20monscript.plhttp://localhost:8080/ESSAI/cgi-bin/%20monscript.plhttp://localhost:8080/ESSAI/cgi-bin/%20monscript.plhttp://localhost:8080/ESSAI/cgi-bin/%20monscript.pl -
8/22/2019 Apache Tutoriel
40/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 35
perl: /usr/bin/perl /etc/perl /usr/lib/perl /usr/X11R6/bin/perl
Lincantation a placer au debut 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 verifier que ce module est bien active :
sudo a2enmod perl
This module is already enabled!
Pour tester le script monscript.pl, dont lincantation a ete adaptee anotre environnement GNU/Linux (voir ci-dessus, chemin de linterpreteur
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
Celle-ci a ete adaptee ainsi afin de prendre mod perl comme interpreteur
de scripts Perl dans Apache2 :
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Le serveur Apache2 ayant ete redemarre :
sudo /etc/init.d/apache2 reload
Ainsi lURL http://localhost/cgi-bin/monscript.pl
affiche la page dynamique. . .(figure 8.9).
Le source de la version GNU/Linux de monscript.pl est disponible dans
lannexe.
http://localhost/cgi-bin/monscript.plhttp://localhost/cgi-bin/monscript.pl -
8/22/2019 Apache Tutoriel
41/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 36
FIG. 8.9 Cgi Perl sous GNU/Linux
-
8/22/2019 Apache Tutoriel
42/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 37
FIG. 8.10 Installation de PHP pour Apache (1)
8.2 Interpreteur PHP
8.2.1 PHP
PHP [17] est un langage de script qui permet lecriture de pages dyna-
miques.
Une section de script PHP se caracterise par les balises :
8.2.2 Installation de PHP sur un systeme Microsoft Windows
1. Procurez-vous le programme dinstallation de PHP pour Windows. Dans
notre exemple, nous avons utilise le site de telechargement de PHP :
http://fr2.php.net/downloads.php
Version : 5.2.1 Installateur : php-5.2.1-win32-installer.msi
2. Executez php-5.2.1-win32-installer.msi
En voici les etapes :(a) Certificat de lediteur : passez outre la mise en garde. . . en cliquant
sur Executer (figure 8.10).
(b) Lassistant dinstallation de PHP saffiche. Cliquez sur Next (fi-
gure 8.11).
(c) Saffiche le dialogue relatifa la licence : cochez loption (( I accept the
terms. . . )). Puis cliquez sur Next (figure 8.12).
(d) Dans le dialogue suivant, indiquez le dossier de destination. Dans
notre exemple, C:\php\ (figure 8.13).
http://fr2.php.net/downloads.phphttp://fr2.php.net/downloads.php -
8/22/2019 Apache Tutoriel
43/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 38
FIG. 8.11 Installation de PHP pour Apache (2)
FIG. 8.12 Installation de PHP pour Apache (3)
-
8/22/2019 Apache Tutoriel
44/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 39
FIG. 8.13 Installation de PHP pour Apache (4)
(e) Dans le dialogue suivant, indiquez le serveur Web a configurer pour
interpreter 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 (figure 8.14).
(f) Dans le dialogue suivant, indiquez le chemin du dossier de configu-
ration dApache (ou se trouve notamment, httpd.conf) : dans notre
exemple, C:\Apache\conf\. Puis cliquez sur Next (figure 8.15).
(g) Dans le dialogue suivant, developpez larborescence des extensionset selectionnez lextension MySQL afin de supporter des applications
PHP-MySQL1. Puis cliquez sur Next (figure 8.16).
(h) LAssistant est pret pour linstallation. Cliquez sur install (figure 8.17).
(i) Lassistant vous propose de modifier la configuration dApache. Ac-
ceptez (figure 8.18). En fait, les lignes suivantes seront ajoutees
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 fin a lassistant (8.19).
1MySQL est un serveur de bases de donnees SQL. Nous naborderons pas son installationici qui depasserait notre propos.
-
8/22/2019 Apache Tutoriel
45/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 40
FIG. 8.14 Installation de PHP pour Apache (5)
FIG. 8.15 Installation de PHP pour Apache (6)
-
8/22/2019 Apache Tutoriel
46/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 41
FIG . 8.16 Installation de PHP pour Apache (7-8)
-
8/22/2019 Apache Tutoriel
47/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 42
FIG. 8.17 Installation de PHP pour Apache (9)
(k) Redemarrez le serveur Apache. Si vous oubliez de le redemarrer,
vous obtiendrez lerreur de la figure 8.20 : le script est affiche sans
etre interprete prealablement sur le serveur. En revanche, apres
redemarrage du serveurApache, linstruction suivante dans le script
info.php affichera la page dinformation sur PHP dans votre navi-
gateur (figure 8.21) a lURL :
http://localhost:8080/ESSAI/info.php
http://localhost:8080/ESSAI/info.phphttp://localhost:8080/ESSAI/info.php -
8/22/2019 Apache Tutoriel
48/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 43
FIG . 8.18 Installation de PHP pour Apache (10-12)
-
8/22/2019 Apache Tutoriel
49/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 44
FIG . 8.19 Installation de PHP pour Apache (13)
FIG . 8.20 Installation de PHP pour Apache (14)
FIG . 8.21 Installation de PHP pour Apache (15)
-
8/22/2019 Apache Tutoriel
50/56
CHAPITRE 8. GESTION DES PAGES DYNAMIQUES 45
FIG . 8.22 Configuration de PHP sous GNU/Linux affichee par info.php
8.2.3 Installation de PHP sur un systeme GNU/Linux
Exemple sur une distribution de type Debian : Ubuntu.
Dans une console ou un terminal emule, procedez ainsi :
1. Installez le paquet generique php5 :
sudo apt-get install php5
2. Pour tester linstallation, copiez le fichierinfo.php suivant dans /var/www :
3. Ouvrez lURL suivante dans votre navigateur :
http://localhost/info.php
Vous obtiendrez laffichage de la configuration (figure 8.22).
http://localhost/info.phphttp://localhost/info.php -
8/22/2019 Apache Tutoriel
51/56
AnnexeA
Les messages derreur
Voici les erreurs les plus frequemment retournees au client par le serveur
Apache. Une bonne comprehension de ces erreurs constitue un bon outil de
diagnostic.
Code retourne Mots cles Explication
401 UNAUTHORIZED Droits dex ecution insuffisant (1)403 FORBIDDEN Acces interdit (2)404 NOT FOUND Fichier introuvable405 METHOD NOT ALLOWED Methode non autorisee
408 REQUEST TIME OUT Delai de connexion depasse.500 INTERNAL SERVER ERROR Erreur serveur interne (3)
(1) Il sagit le plus souvent dun droit insuffisant sur un script : ajouter un droit dexecution(chmod a+x) resout generalement le probleme.
(2) Il sagit dun echec de lauthentification Apache lors de la saisie du login ou du motde passe.
(3) Une erreur interne est souvent due a une erreur de syntaxe dans un script.
46
-
8/22/2019 Apache Tutoriel
52/56
AnnexeB
Sources des scripts
B.1 CGI Perl
Voici la version de monscript.pl adaptee a GNU/Linux. Il a ete notam-
ment necessaire de gerer le probleme des en-tetes renvoyes par Apache2 en
ajoutant la section :
use Apache2::RequestRec ();
my $r = shift;
$r->content_type(text/html);
afin de gerer lecriture differee des sections du type :
print
-
8/22/2019 Apache Tutoriel
53/56
ANNEXE B. SOURCES DES SCRIPTS 48
print param(clef);
print
-
8/22/2019 Apache Tutoriel
54/56
AnnexeC
Colophon
Ce manuel a ete realise au moyen du langage de mise en page LATEX [24],
dans sa distribution TEXLive [25] sur un systeme GNU/Linux, a savoirUbuntu.
Les textes ont ete edites dans lediteur TeXmaker [26] et compiles au moyen
de la commande pdflatex.
Illustrations : les captures decran ontete realisees sur le systeme Microsoft
Windows 2003 dun ordinateur portable prete par la MATICE de Montpellier,
enregistrees au format PNG et retouchees au moyen de ImageMagick [27] ou
Gthumb [28].
Les logos GNU-FDL et Open Source sont les logos respectifs de ces fonda-
tions.
Le dessin de la couverture provient de la collection de LUS National Ocea-
nic and Atmospheric Administration. Cest une image libre de droits, referencee
ici : http://gimp-savvy.com/.
49
http://gimp-savvy.com/http://gimp-savvy.com/http://gimp-savvy.com/ -
8/22/2019 Apache Tutoriel
55/56
Bibliographie
[1] Licence GNU-FDL http://www.gnu.org/copyleft/fdl.html angl.
[2] Licence G en erale Publique GNU http://fsffrance.org/gpl/gpl-fr.fr.html
[3] Apache France, http://www.apachefrance.com/
[4] BEN LAU RI E ET PETER LAU RI E, 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 libreshttp://pedagogie.ac-montpellier.fr/tice/ll_matice/introduction.
html
[7] MATICE de Montpellier http://pedagogie.ac-montpellier.fr/tice/
[8] Site officiel de Microsoft, Windowshttp://www.microsoft.com/france/windows/
[9] Le langage Perl http://fr.wikipedia.org/wiki/Perl_%28langage%29
[10] Wikipedia, Article Apache HTTP Serverhttp://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 http://patrick.cardona.free.fr/matice/apache-split.exe
[16] FreeBSD, http://www.freebsd-fr.org/fr/
[17] PHP France http://www.phpfrance.com/
[18] Miscrosoft Internet Explorerhttp://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
http://www.gnu.org/copyleft/fdl.htmlhttp://fsffrance.org/gpl/gpl-fr.fr.htmlhttp://fsffrance.org/gpl/gpl-fr.fr.htmlhttp://www.apachefrance.com/http://abcdrfc.free.fr/rfc-vf/rfc1945.htmlhttp://pedagogie.ac-montpellier.fr/tice/ll_matice/introduction.htmlhttp://pedagogie.ac-montpellier.fr/tice/ll_matice/introduction.htmlhttp://pedagogie.ac-montpellier.fr/tice/http://www.microsoft.com/france/windows/http://fr.wikipedia.org/wiki/Perl_%28langage%29http://fr.wikipedia.org/wiki/Apache_HTTP_Serverhttp://www.ubuntu-fr.org/http://firefox.fr/http://cronolog.org/http://patrick.cardona.free.fr/matice/apache-split.exehttp://patrick.cardona.free.fr/matice/apache-split.exehttp://www.freebsd-fr.org/fr/http://www.phpfrance.com/http://www.microsoft.com/france/windows/downloads/ie/getitnow.mspxhttp://www.microsoft.com/france/windows/downloads/ie/getitnow.mspxhttp://www.mysql.fr/http://ttp//www.caminobrowser.org/http://www.linux.org/http://www.linux.org/http://ttp//www.caminobrowser.org/http://www.mysql.fr/http://www.microsoft.com/france/windows/downloads/ie/getitnow.mspxhttp://www.microsoft.com/france/windows/downloads/ie/getitnow.mspxhttp://www.phpfrance.com/http://www.freebsd-fr.org/fr/http://patrick.cardona.free.fr/matice/apache-split.exehttp://patrick.cardona.free.fr/matice/apache-split.exehttp://cronolog.org/http://firefox.fr/http://www.ubuntu-fr.org/http://fr.wikipedia.org/wiki/Apache_HTTP_Serverhttp://fr.wikipedia.org/wiki/Perl_%28langage%29http://www.microsoft.com/france/windows/http://pedagogie.ac-montpellier.fr/tice/http://pedagogie.ac-montpellier.fr/tice/ll_matice/introduction.htmlhttp://pedagogie.ac-montpellier.fr/tice/ll_matice/introduction.htmlhttp://abcdrfc.free.fr/rfc-vf/rfc1945.htmlhttp://www.apachefrance.com/http://fsffrance.org/gpl/gpl-fr.fr.htmlhttp://fsffrance.org/gpl/gpl-fr.fr.htmlhttp://www.gnu.org/copyleft/fdl.html -
8/22/2019 Apache Tutoriel
56/56
BIBLIOGRAPHIE 51
[22] mod perl http://perl.apache.org/
[23] Dossier Open Source no 2http://pedagogie.ac-montpellier.fr/tice/assets/ll_matice/res/
ASSISAW.pdf
[24] LATEX 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
http://perl.apache.org/http://pedagogie.ac-montpellier.fr/tice/assets/ll_matice/res/ASSISAW.pdfhttp://pedagogie.ac-montpellier.fr/tice/assets/ll_matice/res/ASSISAW.pdfhttp://www.latex-project.org/http://www.tug.org/texlive/http://www.xm1math.net/texmaker/index_fr.htmlhttp://www.imagemagick.org/script/index.phphttp://localhost/var/www/apps/conversion/tmp/scratch_2/gthumbhttp://www.gimp-fr.org/news.phphttp://www.gimp-fr.org/news.phphttp://localhost/var/www/apps/conversion/tmp/scratch_2/gthumbhttp://www.imagemagick.org/script/index.phphttp://www.xm1math.net/texmaker/index_fr.htmlhttp://www.tug.org/texlive/http://www.latex-project.org/http://pedagogie.ac-montpellier.fr/tice/assets/ll_matice/res/ASSISAW.pdfhttp://pedagogie.ac-montpellier.fr/tice/assets/ll_matice/res/ASSISAW.pdfhttp://perl.apache.org/