Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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
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
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
2.1
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
` 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
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
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
` 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
F IG . 2.11 Arr t / (re)d marrage du serveur dans une invite de commande e e 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 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
10
2.2
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
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
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).
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 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
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>
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
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 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
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
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
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
6.2
6.2.1
<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
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 pertoire si aucun chier index.html e nest pr sent (gure 6.3) : e
CHAPITRE 6. INDEXATION
25
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
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 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
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
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
30
31
32
33
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
34
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
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 :
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.
36
37
8.2
8.2.1
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
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).
38
39
` (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
40
41
42
(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(); ?>
43
44
45
8.2.3
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
(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
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
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 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