Serveur Apache HTTP Version 2.4
Ce document d�crit l'installation, la configuration et l'ex�cution d'Apache 2.4 sous Microsoft Windows. Si vous avez des questions apr�s avoir lu la documentation, ou si vous avez rencontr� des �v�nements particuliers ou des rapports d'erreur, vous pouvez consultez la liste de diffusion de la communaut� des utilisateurs.
Dans ce document, nous supposons que vous installez une distribution binaire d'Apache. Si vous voulez compiler Apache vous-m�me (par exemple pour aider au d�veloppement ou pour rechercher des bogues), r�f�rez-vous au document Compilation d'Apache pour Microsoft Windows.
La plate-forme Windows de base pour l'ex�cution d'Apache 2.4 est Windows 2000 ou sup�rieur. Veillez � toujours vous procurer et installer le dernier service pack afin d'�viter les bogues du syst�me d'exploitation.
Le projet du serveur HTTP Apache proprement dit ne fournit pas de distribution binaire mais seulement le code source. Si vous n'�tes pas en mesure de compiler le serveur HTTP Apache vous-m�me, vous pouvez vous procurer un paquet binaire aupr�s des nombreuses distributions disponibles sur Internet.
Quelques solutions populaires pour d�ployer Apache httpd, et �ventuellement PHP et MySQL sous Microsoft Windows :
La configuration d'Apache est enregistr�e dans les fichiers du
sous-r�pertoire conf
. Ce sont les m�me fichiers que
ceux utilis�s pour configurer la version Unix, mais il y a quelques
directives sp�cifiques � Apache pour Windows. Voir l'index des directives pour la liste
des directives disponibles.
Les principales sp�cificit�s d'Apache pour Windows sont :
Comme Apache pour Windows est un programme multithread, il ne lance pas de processus s�par� pour chaque requ�te, comme Apache peut le faire sous Unix. En fait, il n'y a en g�n�ral que deux processus Apache en ex�cution : un processus parent, et un processus enfant qui traite les requ�tes. Chaque requ�te est trait�e par un thread s�par� au sein du processus enfant.
Les directives de gestion de processus diff�rent �galement :
MaxConnectionsPerChild
: comme dans la version Unix, cette directive contr�le le nombre
de connexions qu'un
processus enfant particulier va traiter avant de s'arr�ter.
Cependant, � la diff�rence d'Unix, un processus de remplacement
n'est pas instantan�ment disponible. Utilisez la d�finition par
d�faut MaxConnectionsPerChild 0
, sauf si vous
risquez de manquer de m�moire dans des modules tiers ou dans des
applications in-process.
apache2.conf
, le nouveau processus enfant peut ne pas
d�marrer, ou vous pouvez obtenir des r�sultats
inattendus.ThreadsPerChild
: il
s'agit d'une nouvelle directive. Elle indique au serveur le nombre
de threads qu'il doit utiliser. Elle d�finit le nombre maximum de
connexions simultan�es que le serveur peut g�rer ; vous devez
donc vous assurer que ce nombre soit suffisamment grand pour les
besoins de votre site. La valeur par d�faut ThreadsPerChild
150
est recommand�e, mais doit �tre ajust�e � la valeur
maximale estim�e de connexions simultan�es � accepter.
Les directives qui acceptent des noms de fichiers comme arguments doivent utiliser des noms de fichiers Windows et non Unix. Cependant, comme Apache peut interpr�ter les anti-slashes comme des s�quences d'�chappement de caract�res, vous devez absolument utiliser des slashes dans les noms de chemins � la place des anti-slashes.
Alors que les noms de fichiers sont en g�n�ral insensibles
� la casse sous Windows, les URLs sont encore sensibles � la casse
en interne avant d'�tre mises en correspondance avec le syst�me de
fichiers. Par exemple, les directives <Location>
, Alias
, et ProxyPass
utilisent toutes des
arguments sensibles � la casse. Pour cette raison, il est
particuli�rement recommand� d'utiliser la directive <Directory>
lorsqu'on
d�sire limiter l'acc�s � certains contenus du syst�me de fichiers,
car cette directive s'applique � tout contenu d'un r�pertoire,
sans tenir compte de la mani�re dont on y acc�de. Pour vous
assurer que seules des minuscules sont utilis�es dans les URLs,
vous pouvez utiliser ceci :
RewriteEngine On RewriteMap lowercase int:tolower RewriteCond %{REQUEST_URI} [A-Z] RewriteRule (.*) ${lowercase:$1} [R,L]
Lors de son ex�cution, Apache n'a besoin d'un acc�s en �criture qu'au r�pertoire des journaux et � toute arborescence de r�pertoires de cache configur�e. Suite au probl�me d'insensibilit� � la casse et au format de noms courts 8.3, Apache doit valider tous les noms de chemins fournis. Cela signifie que chaque r�pertoire qu'Apache �value doit avoir les droits en lecture, listage et parcours, et ceci depuis la racine jusqu'aux feuilles. Si Apache2.4 est install� dans C:\Program Files, le r�pertoire racine, Program Files et Apache2.4 doivent tous �tre visibles pour Apache
Apache peut charger divers modules sans qu'il soit n�cessaire
de recompiler le serveur. Si Apache est compil�
normalement, il va installer de nombreux modules optionnels dans
le r�pertoire \Apache2.4\modules
. Pour activer ces
modules ou d'autres modules, on doit utiliser la
directive LoadModule
. Par
exemple, pour activer le module status, ajoutez la ligne suivante
(en plus des directives d'activation de status dans
access.conf
) :
LoadModule status_module modules/mod_status.so
Des informations sont aussi � votre disposition pour cr�er des modules chargeables
Apache peut aussi charger des extensions ISAPI (Internet Server Application Programming Interface), comme celles qu'utilise Microsoft IIS et d'autres serveurs Windows. Voir ici pour plus d'informations. Notez qu'Apache ne peut pas charger de filtres ISAPI, et que les gestionnaires ISAPI contenant des extensions de fonctionnalit�s Microsoft ne fonctionneront pas.
Pour les scripts CGI, la m�thode qu'utilise Apache pour
d�terminer l'interpr�teur du script est configurable gr�ce � la
directive ScriptInterpreterSource
Comme il est souvent difficile de g�rer des fichiers avec
des noms du style .htaccess
sous Windows, vous avez
tout int�r�t � changer le nom de ce fichier de configuration par
r�pertoire � l'aide de la directive AccessFilename
.
Toute erreur survenant au cours du processus de d�marrage
d'Apache est enregistr�e dans le journal des �v�nements de
Windows si l'on est sous Windows NT. Ce m�canisme fonctionne comme
une sauvegarde pour les situations o� Apache n'est pas encore pr�t
� utiliser le fichier error.log
. Vous pouvez
consulter le journal des �v�nements applicatifs Windows en
utilisant l'observateur d'�v�nements : D�marrage - Param�tres -
Panneau de configuration - Outils d'administration - Observateur
d'�v�nements.
Apache fournit un utilitaire nomm� Apache Service Monitor (Moniteur du service Apache). Gr�ce � lui, vous pouvez voir et g�rer l'�tat de tous les services Apache install�s sur toutes les machines du r�seau. Pour pouvoir g�rer un service Apache avec le moniteur, vous devez d'abord installer le service (soit automatiquement au cours de l'installation, soit manuellement).
Vous pouvez installer Apache en tant que service Windows NT �
partir de la ligne de commandes et depuis le sous-r�pertoire Apache
bin
comme suit :
httpd.exe -k install
Si vous avez install� plusieurs services Apache sur votre ordinateur, vous devrez sp�cifier le nom du service que vous voulez installer en utilisant la commande suivante (notez que si vous sp�cifiez un nom durant l'installation, vous devrez aussi le sp�cifier pour toute op�ration comportant l'option -k) :
httpd.exe -k install -n "Nom-service"
Si un service doit utiliser un fichier de configuration sp�cifique, utilisez ceci :
httpd.exe -k install -n "Nom-service" -f "c:\fichiers\Nom-service.conf"
Si vous utilisez la premi�re commande sans param�tre particulier,
except� -k install
, le service aura pour nom
Apache2.4
et le fichier de configuration sera cens�
�tre conf\apache2.conf
.
Supprimer un service Apache est tr�s simple. Utilisez simplement :
httpd.exe -k uninstall
On peut sp�cifier un service Apache particulier en utilisant :
httpd.exe -k uninstall -n "Nom service"
Normalement, le d�marrage, le red�marrage et l'arr�t d'un
service Apache s'effectuent via le Moniteur de Service Apache, ou en
utilisant des commandes telles que NET START Apache2.4
et
NET STOP Apache2.4
, ou encore via le gestionnaire de
services standard de Windows. Avant de d�marrer Apache en tant que
service dans quelque but que ce soit, vous devez tester le fichier
de configuration du service en utilisant :
httpd.exe -n "Nom-service" -t
Vous pouvez aussi contr�ler un service Apache � l'aide de ses options de ligne de commande. Avec cette m�thode, pour d�marrer un service Apache install�, vous utiliserez :
httpd.exe -k start -n "Nom-Service"
Pour arr�ter un service Apache via les options de lignes de commande, utilisez ceci :
httpd.exe -k stop -n "Nom-Service"
ou
httpd.exe -k shutdown -n "Nom-Service"
Vous pouvez aussi red�marrer un service en ex�cution et le forcer � relire son fichier de configuration en utilisant :
httpd.exe -k restart -n "Nom-Service"
Par d�faut, tous les services Apache sont configur�s pour
s'ex�cuter sous l'utilisateur system (le compte
LocalSystem
). Le compte LocalSystem
n'a
pas de privil�ges sur votre r�seau, que ce soit via un m�canisme
s�curis� de Windows, y compris le syst�me de fichiers, des tubes
nomm�s, DCOM ou des RPC s�curis�s. Il a cependant des privil�ges
�lev�s en local.
LocalSystem
! Si Apache doit pouvoir acc�der
� des ressources r�seau, cr�ez un compte s�par� pour Apache comme
indiqu� ci-dessous.Il est fortement fortement conseill� aux utilisateurs de cr�er un compte s�par� pour ex�cuter le(s) service(s) Apache, et m�me obligatoire si vous devez acc�der � des ressources r�seau via Apache.
Log on as a service
et Act as part of the
operating system
. Sous Windows NT 4.0, ces privil�ges sont
accord�s via le Gestionnaire des utilisateurs du Domaine, mais
sous Windows 2000 et XP, vous aurez plut�t int�r�t � utiliser une
GPO pour propager ces configurations. Vous pouvez aussi effectuer
ces r�glages via la Politique de S�curit� Locale int�gr�e � la
MMC.htdocs
et cgi-bin
par exemple), et aussi sur l'ex�cutable
binaire httpd.exe
.logs
.logs
, sur lequel l'utilisateur doit
avoir au moins les droits de modification (RWXD).Si vous permettez � ce compte de se connecter en tant qu'utilisateur et service, vous pouvez ouvrir une session sous ce compte et v�rifier s'il a bien le droit d'ex�cuter les scripts, de lire les pages web, et si vous pouvez d�marrer Apache � partir d'une console Windows. Si tout fonctionne, et si vous avez suivi les �tapes ci-dessus, Apache devrait s'ex�cuter en tant que service sans probl�me.
Lorsqu'Apache d�marre en tant que service, il se peut que vous obteniez un message d'erreur du Gestionnaire de Services Windows. Par exemple, si vous essayez de d�marrer Apache en utilisant l'applet Services du Panneau de configuration de Windows, vous pouvez obtenir le message suivant :
Could not start the Apache2.4 service on \\COMPUTER
Error 1067; The process terminated unexpectedly.
Vous obtiendrez cette erreur � caract�re g�n�ral pour tout probl�me survenant au cours du d�marrage du service Apache. Afin de d�terminer exactement la cause du probl�me, vous devez suivre les instructions permettant d'ex�cuter Apache pour Windows depuis la ligne de commande.
Si vous rencontrez des probl�mes avec le service, il est conseill� de suivre les instructions ci-dessous afin d'essayer de d�marrer httpd.exe depuis une console, et d'analyser les erreurs plut�t que vous d�mener � essayer de d�marrer le service.
Il est en g�n�ral recommand� d'ex�cuter Apache en tant que service, mais il est parfois plus simple d'utiliser la ligne de commande, en particulier au cours de la configuration initiale et les tests.
Pour ex�cuter Apache depuis la ligne de commande et en tant qu'application de console, utilisez la commande suivante :
httpd.exe
Apache va d�marrer, et continuera son ex�cution jusqu'� ce qu'on l'arr�te en tapant Ctrl-C.
Vous pouvez �galement d�marrer Apache via le raccourci "D�marrer
Apache dans une console" plac� dans D�marrer -->
Programmes --> Apache HTTP Server 2.4.xx --> Control Apache
Server
au cours de l'installation. Ceci va
ouvrir une console Windows, et y d�marrer Apache.
Si vous n'avez pas install� Apache en tant que service, la
fen�tre Windows restera ouverte jusqu'� ce que vous arr�tiez Apache
en tapant Ctrl-C dans cette fen�tre. Le serveur va alors s'arr�ter
au bout de quelques secondes. Cependant, si vous avez install�
Apache en tant que service, c'est ce dernier que le raccourci
ci-dessus va lancer. Si le service Apache est d�j� en cours
d'ex�cution, le raccourci va rester sans effet.
Si Apache s'ex�cute en tant que service, vous pouvez l'arr�ter en ouvrant une autre console et en entrant :
httpd.exe -k shutdown
Plut�t que de lancer Apache � partir d'une console, il est pr�f�rable de l'ex�cuter en tant que service car dans ce cas, il termine proprement les op�rations en cours avant de s'�teindre.
Si le serveur a �t� lanc� depuis une console, vous ne pouvez l'arr�ter qu'en pressant la combinaison de touches Ctrl-C dans la m�me fen�tre.
Vous pouvez aussi red�marrer Apache. Ceci le force � recharger son fichier de configuration. Toute op�ration en cours peut �tre achev�e sans interruption. Pour red�marrer Apache, vous pouvez soit taper Control-Break dans la fen�tre de console que vous avez utilis�e pour le d�marrer, soit entrer :
httpd.exe -k restart
si le serveur s'ex�cute en tant que service.
kill -TERM pid
et
kill -USR1 pid
. L'option de ligne de commande
-k
a �t� choisie � titre de rapprochement avec la
commande kill
utilis�e sous Unix.Si la fen�tre de la console Apache se ferme imm�diatement ou
inopin�ment apr�s le d�marrage d'Apache, ouvrez une console Windows
depuis le menu D�marrer --> Programmes. Placez-vous dans le
r�pertoire d'installation d'Apache, tapez la commande
httpd.exe
, et observez le message d'erreur. Allez
ensuite dans le r�pertoire des journaux, et visualisez le fichier
error.log
pour d�tecter d'�ventuelles erreurs de
configuration. Si Apache a �t� install� dans C:\Program
Files\Apache Software Foundation\Apache2.4\
, vous
pouvez entrer ce qui suit :
c:
cd "\Program Files\Apache Software Foundation\Apache2.4\bin"
httpd.exe
Attendez ensuite qu'Apache s'arr�te ou tapez Ctrl-C. Entrez alors la commande suivante :
cd ..\logs
more < error.log
Lorsqu'on travaille avec Apache, il est important de comprendre comment ce dernier trouve son fichier de configuration. Vous pouvez sp�cifier un fichier de configuration � partir de la ligne de commande de deux fa�ons :
L'option -f
permet de sp�cifier un chemin
absolu ou relatif vers un fichier de configuration particulier
:
httpd.exe -f "c:\fichiers-de-mon-serveur\autre-config.conf"
ou
httpd.exe -f fichiers-de-mon-serveur\autre-config.conf
L'option -n
permet de sp�cifier le service
Apache install� dont le fichier de configuration doit �tre utilis�
:
httpd.exe -n "Nom-service"
Dans les deux cas, la directive ServerRoot
doit �tre correctement d�finie
dans le fichier de configuration.
Si vous ne sp�cifiez aucun fichier de configuration � l'aide des
options -f
ou -n
, Apache utilisera le nom
du fichier de configuration compil� dans le serveur, en g�n�ral
conf\apache2.conf
. Ce chemin cod� en dur est relatif au
r�pertoire d'installation. Vous pouvez v�rifier ce chemin � partir
de la valeur de l'�tiquette SERVER_CONFIG_FILE
en
invoquant Apache avec l'option -V
, comme ceci :
httpd.exe -V
Apache va ensuite essayer de d�terminer la valeur de son
ServerRoot
en effectuant les
recherches suivantes, dans cet ordre :
ServerRoot
via l'option de ligne de commande -C
.-d
.DocumentRoot
) cod�e en dur
dans le serveur. Elle
correspond par d�faut � /apache
, et vous pouvez le
v�rifier en tapant httpd.exe -V
et en recherchant
l'�tiquette HTTPD_ROOT
.Si vous n'avez pas effectu� d'installation binaire, dans certains sc�narios, Apache va signaler l'absence de cette cl� de registre. On peut passer outre cet avertissement si le serveur a �t� en mesure de trouver son fichier de configuration d'une autre mani�re.
La valeur de cette cl� correspond au r�pertoire ServerRoot
qui contient lui-m�me le
sous-r�pertoire conf
. Lors de son d�marrage, Apache lit
le fichier apache2.conf
� partir de ce r�pertoire. Si ce
fichier contient une directive ServerRoot
qui sp�cifie un r�pertoire
diff�rent de celui que contient la cl� de registre ci-dessus, Apache
oubliera la cl� de registre, et utilisera le r�pertoire sp�cifi� par
le fichier de configuration. Si vous d�placez le r�pertoire Apache
ou ses fichiers de configuration, il est vital de mettre � jour la
directive ServerRoot
dans
apache2.conf
afin de refl�ter la nouvelle
localisation.
Une fois Apache d�marr� (soit � partir d'une console Windows,
soit en tant que service), ce dernier va se mettre � l'�coute sur
le port 80 (� moins que vous ayiez modifi� la directive Listen
dans les fichiers de
configuration ou que vous ayiez install� Apache pour l'utilisateur
courant seulement). Pour vous connecter au serveur et acc�der � la
page par d�faut, lancez un navigateur et entrez cette URL :
http://localhost/
Apache devrait renvoyer une page de bienvenue et vous devriez
voir s'afficher "It Works!". Si rien ne se passe ou si vous obtenez
une erreur, consultez le fichier error.log
dans le
sous-r�pertoire logs
. Si votre serveur n'est pas
connect� au r�seau, ou si vous avez de s�rieux probl�mes avec la
configuration de votre DNS (Domain Name Service), vous devez
utiliser cette URL :
http://127.0.0.1/
Si Apache �coute un port non standard, vous devez le pr�ciser explicitement dans l'URL :
http://127.0.0.1:8080/
Apr�s que votre installation de base fonctionne, vous devez la
configurer correctement en �ditant les fichiers du sous-r�pertoire
conf
. Encore une fois, si vous modifiez la
configuration du service Apache sous Windows NT, essayez d'abord de
red�marrer le service depuis la ligne de commande afin de vous
assurer de l'absence d'erreur.
Comme Apache ne peut pas partager le m�me port avec d'autres applications TCP/IP, il se peut que vous soyez amen� � arr�ter, d�sinstaller ou reconfigurer certains services avant de d�marrer Apache. Ces services entrant en conflit avec Apache comprennent les autres serveurs WWW, certaines impl�mentations de pare-feu, et m�me certaines applications client (comme Skype) qui utilisent le port 80 afin de contourner les pare-feu.
L'acc�s � des fichiers par le r�seau peut �tre sp�cifi� via deux m�canismes fournis par Windows :
Alias /images/ Z:/
Alias /images/ //imagehost/www/images/
L'association de lettres de lecteur permet � l'administrateur de maintenir une correspondance avec une certaine machine et un certain chemin en dehors de la configuration d'Apache httpd. Cependant, ces associations ne sont possibles que dans le cadre des sessions interactives, et ne sont pas directement disponibles pour Apache httpd lorsqu'il est d�marr� en tant que service. N'utilisez par cons�quent que des chemins UNC pour les ressources r�seau dans apache2.conf, de fa�on � ce que les ressources soient accessibles quelle que soit la mani�re dont Apache httpd a �t� d�marr� (des proc�dures exotiques et probablement sujettes aux erreurs peuvent permettre de contourner la restriction due aux associations de lettres de lecteur, mais leur utilisation est d�conseill�e).
DocumentRoot //dochost/www/html/
DocumentRoot //192.168.1.50/docs/
Alias /images/ //imagehost/www/images/ <Directory //imagehost/www/images/> #... <Directory>
Lorsqu'Apache s'ex�cute en tant que service, vous devez cr�er un compte sp�cifique afin de pouvoir acc�der aux ressources r�seau, comme d�crit ci-dessus.