Serveur HTTP Apache 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. Certains membres du projet peuvent mettre à disposition des paquets binaires à titre individuel, mais ceux-ci n'ont pas vocation à être distribués publiquement.
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.
La configuration par défaut de la distribution source installe
le serveur dans \Apache2x. Cet emplacement peut être modifié à
la compilation, mais il est important qu'en fin de compte, la directive
ServerRoot
dans apache2.conf corresponde effectivement
à la racine de l'installation. Les distributions binaires peuvent parfois
modifier la racine de l'installation par défaut, ou même la structure
complète de la configuration initiale.
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.