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
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
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
2.1
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
` 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
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
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
` 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:
F IG . 2.11 Arr et / (re)d emarrage du serveur dans une invite de commande CMD
2.1.2.2
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.
10
2.2
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
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
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).
12
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
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>
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
15
16
<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
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
, 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
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
6.2
6.2.1
<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
CHAPITRE 6. INDEXATION
24
6.2.2
<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
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
6.2.4
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
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
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
30
31
32
33
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.
34
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
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 :
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.
36
37
8.2
8.2.1
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
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).
38
39
` 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
40
41
42
(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(); ?>
43
44
45
8.2.3
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
(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
` 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
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ée au script : " ; print $cgi->param(clef); print <<PIED;
<P> <P> <p> <HR> <p><SPAN STYLE=\"font-size:8pt\"> © 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