<?xml version="1.0" encoding="UTF-8"?>
<!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" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Utilisation du serveur HTTP Apache sous Microsoft Windows - Serveur HTTP Apache Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Notes spécifiques à un
  système</a></div><div id="page-content"><div id="preamble"><h1>Utilisation du serveur HTTP Apache sous Microsoft Windows</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/platform/windows.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/platform/windows.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>


    <p>Ce document décrit l'installation, la configuration et
    l'exécution d'Apache 2.5 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 <a href="http://httpd.apache.org/userslist.html">liste
    de diffusion de la communauté des utilisateurs</a>.</p>

    <p>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 <a href="win_compiling.html">Compilation d'Apache pour Microsoft
    Windows</a>.</p>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#req">Prérequis du système d'exploitation</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#down">Téléchargement d'Apache pour Windows</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cust">Personnaliser Apache pour Windows</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#winsvc">Exécuter Apache en tant que service</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#wincons">Exécuter Apache depuis la console</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#test">Vérification de l'installation</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#windrivemap">Configuration de l'accès aux ressources réseau</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#tuning">Personnalisation sous Windows</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="req" id="req">Prérequis du système d'exploitation</a> <a title="Lien permanent" href="#req" class="permalink">&para;</a></h2>
    

    <p>La plate-forme Windows de base pour l'exécution d'Apache 2.5 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.</p>

    <div class="note">Les versions du serveur HTTP Apache supérieures à 2.2 ne
    fonctionneront sous aucun système d'exploitation d'une version
    antérieure à Windows 2000.</div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="down" id="down">Téléchargement d'Apache pour Windows</a> <a title="Lien permanent" href="#down" class="permalink">&para;</a></h2>
    

    <p>Le projet du serveur HTTP Apache proprement dit ne fournit pas de
    distribution binaire mais seulement le code source. Certains membres
    du projet <em>peuvent</em> mettre à disposition des paquets binaires
    à titre individuel, mais ceux-ci n'ont pas vocation à être
    distribués publiquement.</p>
    
    <p>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.</p>

    <p>Quelques solutions populaires pour déployer Apache httpd, et
    éventuellement PHP et MySQL sous Microsoft Windows :</p>
    <ul>
    <li><a href="http://www.apachelounge.com/download/">Apache Lounge</a></li>
    <li><a href="http://bitnami.com/stack/wamp">Bitnami WAMP Stack</a></li>
    <li><a href="http://www.wampserver.com/">WampServer</a></li>
    <li><a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a></li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cust" id="cust">Personnaliser Apache pour Windows</a> <a title="Lien permanent" href="#cust" class="permalink">&para;</a></h2>
    

    <p>La configuration d'Apache est enregistrée dans les fichiers du
    sous-répertoire <code>conf</code>. 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'<a href="../mod/directives.html">index des directives</a> pour la liste
    des directives disponibles.</p>

    <p>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
    <code class="directive">ServerRoot</code> dans httpd.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.</p>

    <p>Les principales spécificités d'Apache pour Windows sont :</p>
    <ul>
      <li><p>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.</p>

      <p>Les directives de gestion de processus diffèrent également :</p>

      <p><code class="directive"><a href="../mod/mpm_common.html#maxconnectionsperchild">MaxConnectionsPerChild</a></code>
      : 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 <code>MaxConnectionsPerChild 0</code>, sauf si vous
      risquez de manquer de mémoire dans des modules tiers ou dans des
      applications in-process.</p>

      <div class="warning"><strong>Attention : le fichier de
      configuration du serveur est rechargé lorsqu'un nouveau processus
      enfant est démarré. En conséquence, si vous avez modifié
      <code>httpd.conf</code>, le nouveau processus enfant peut ne pas
      démarrer, ou vous pouvez obtenir des résultats
      inattendus.</strong></div>

      <p><code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> : 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 <code>ThreadsPerChild
      150</code> est recommandée, mais doit être ajustée à la valeur
      maximale estimée de connexions simultanées à accepter.</p></li>

      <li><p>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.</p></li>

      <li><p>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 <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>, <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, et <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> utilisent toutes des
      arguments sensibles à la casse. Pour cette raison, il est
      particulièrement recommandé d'utiliser la directive <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> 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 :</p>

      <pre class="prettyprint lang-config">RewriteEngine On
RewriteMap lowercase "int:tolower"
RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lowercase:$1}" [R,L]</pre>
</li>

      <li><p>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.5 est installé dans C:\Program Files, le répertoire
      racine, Program Files et Apache2.5 doivent tous être visibles pour
      Apache</p></li>

      <li><p>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 <code>\Apache2.5\modules</code>. Pour activer ces
      modules ou d'autres modules, on doit utiliser la
      directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>. Par
      exemple, pour activer le module status, ajoutez la ligne suivante
      (en plus des directives d'activation de status dans
      <code>access.conf</code>) :</p>

      <pre class="prettyprint lang-config">LoadModule status_module "modules/mod_status.so"</pre>


      <p>Des informations sont aussi à votre disposition pour <a href="../mod/mod_so.html#creating">créer des modules
      chargeables</a></p></li>

      <li><p>Apache peut aussi charger des extensions ISAPI (Internet
      Server Application Programming Interface), comme celles qu'utilise
      Microsoft IIS et d'autres serveurs Windows. <a href="../mod/mod_isapi.html">Voir ici pour plus
      d'informations</a>. Notez qu'Apache ne peut <strong>pas</strong>
      charger de filtres ISAPI, et que les gestionnaires ISAPI contenant
      des extensions de fonctionnalités Microsoft ne fonctionneront
      pas.</p></li>

      <li><p>Pour les scripts CGI, la méthode qu'utilise Apache pour
      déterminer l'interpréteur du script est configurable grâce à la
      directive <code class="directive"><a href="../mod/core.html#scriptinterpretersource">ScriptInterpreterSource</a></code></p></li>

      <li><p>Comme il est souvent difficile de gérer des fichiers avec
      des noms du style <code>.htaccess</code> sous Windows, vous avez
      tout intérêt à changer le nom de ce fichier de configuration par
      répertoire à l'aide de la directive <code class="directive"><a href="../mod/core.html#accessfilename">AccessFilename</a></code>.</p></li>

      <li><p>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 <code>error.log</code>. 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.</p></li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="winsvc" id="winsvc">Exécuter Apache en tant que service</a> <a title="Lien permanent" href="#winsvc" class="permalink">&para;</a></h2>
    

    <p>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).</p>

    <p>Vous pouvez installer Apache en tant que service Windows NT à
    partir de la ligne de commandes et depuis le sous-répertoire Apache
    <code>bin</code> comme suit :</p>

    <div class="example"><p><code>
      httpd.exe -k install
    </code></p></div>

    <p>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) :</p>

    <div class="example"><p><code>
      httpd.exe -k install -n "Nom-service"
    </code></p></div>

    <p>Si un service doit utiliser un fichier de configuration
    spécifique, utilisez ceci :</p>

    <div class="example"><p><code>
      httpd.exe -k install -n "Nom-service" -f "c:\fichiers\Nom-service.conf"
    </code></p></div>

    <p>Si vous utilisez la première commande sans paramètre particulier,
    excepté <code>-k install</code>, le service aura pour nom
    <code>Apache2.5</code> et le fichier de configuration sera censé
    être <code>conf\httpd.conf</code>.</p>

    <p>Supprimer un service Apache est très simple. Utilisez
    simplement :</p>

    <div class="example"><p><code>
      httpd.exe -k uninstall
    </code></p></div>

    <p>On peut spécifier un service Apache particulier en utilisant
    :</p>

    <div class="example"><p><code>
      httpd.exe -k uninstall -n "Nom service"
    </code></p></div>

    <p>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 <code>NET START Apache2.5</code> et
    <code>NET STOP Apache2.5</code>, 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 :</p>

    <div class="example"><p><code>
      httpd.exe -n "Nom-service" -t
    </code></p></div>

    <p>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 :</p>

    <div class="example"><p><code>
      httpd.exe -k start -n "Nom-Service"
    </code></p></div>

    <p>Pour arrêter un service Apache via les options de lignes de
    commande, utilisez ceci :</p>

    <div class="example"><p><code>
      httpd.exe -k stop -n "Nom-Service"
    </code></p></div>

    <p>ou</p>

    <div class="example"><p><code>
      httpd.exe -k shutdown -n "Nom-Service"
    </code></p></div>

    <p>Vous pouvez aussi redémarrer un service en exécution et le forcer
    à relire son fichier de configuration en utilisant :</p>

    <div class="example"><p><code>
      httpd.exe -k restart -n "Nom-Service"
    </code></p></div>

    <p>Par défaut, tous les services Apache sont configurés pour
    s'exécuter sous l'utilisateur system (le compte
    <code>LocalSystem</code>). Le compte <code>LocalSystem</code> 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.</p>

    <div class="warning"><strong>N'accordez jamais de privilèges réseau
    au compte <code>LocalSystem</code> ! Si Apache doit pouvoir accéder
    à des ressources réseau, créez un compte séparé pour Apache comme
    indiqué ci-dessous.</strong></div>

    <p>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.</p>

    <ol>
      <li>Créez un compte d'utilisateur du domaine normal, et
      assurez-vous de retenir son mot de passe.</li>

      <li>Accordez à l'utilisateur nouvellement créé les privilèges
      <code>Log on as a service</code> et <code>Act as part of the
      operating system</code>. 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.</li>

      <li>Vérifiez que le compte nouvellement créé est membre du groupe
      Utilisateurs</li>

      <li>Accordez à ce compte les droits Lecture et Exécution (RX) sur
      tous les documents et répertoires de scripts (<code>htdocs</code>
      et <code>cgi-bin</code> par exemple), et aussi sur l'exécutable
      binaire <code>httpd.exe</code>.</li>

      <li>Accordez aussi à ce compte les droits de modification sur le
      répertoire <code>logs</code>.</li>

    </ol>

    <div class="note">Il est en général de bonne pratique d'accorder à l'utilisateur
    sous lequel le service Apache s'exécute les droits en lecture et
    exécution (RX) sur l'ensemble du répertoire Apache2.5, sauf pour le
    sous-répertoire <code>logs</code>, sur lequel l'utilisateur doit
    avoir au moins les droits de modification (RWXD).</div>

    <p>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.</p>

    <div class="note"><strong>Le code d'erreur 2186</strong> indique probablement
    qu'Apache ne peut pas accéder à une ressource réseau nécessaire, et
    que vous devez revoir la configuration "Log On As" (Se connecter en
    tant que ...) du service.</div>

    <p>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 :</p>

    <div class="example"><p><code>
      Could not start the Apache2.5 service on \\COMPUTER <br />
      Error 1067; The process terminated unexpectedly.
    </code></p></div>

    <p>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.</p>

    <p>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.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="wincons" id="wincons">Exécuter Apache depuis la console</a> <a title="Lien permanent" href="#wincons" class="permalink">&para;</a></h2>
    

    <p>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.</p>

    <p>Pour exécuter Apache depuis la ligne de commande et en tant
    qu'application de console, utilisez la commande suivante :</p>

    <div class="example"><p><code>
      httpd.exe
    </code></p></div>

    <p>Apache va démarrer, et continuera son exécution jusqu'à ce qu'on
    l'arrête en tapant Ctrl-C.</p>

    <p>Vous pouvez également démarrer Apache via le raccourci "Démarrer
    Apache dans une console" placé dans <code>Démarrer --&gt;
    Programmes --&gt; Apache HTTP Server 2.5.xx --&gt; Control Apache
    Server</code> 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.</p>

    <p>Si Apache s'exécute en tant que service, vous pouvez l'arrêter en
    ouvrant une autre console et en entrant :</p>

    <div class="example"><p><code>
      httpd.exe -k shutdown
    </code></p></div>

    <p>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.</p>

    <p>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.</p>

    <p>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 :</p>

    <div class="example"><p><code>
      httpd.exe -k restart
    </code></p></div>

    <p>si le serveur s'exécute en tant que service.</p>

    <div class="note">Note pour les utilisateurs familiers de la version Unix
    d'Apache : les commandes ci-dessus représentent pour Windows
    l'équivalent des commandes <code>kill -TERM <em>pid</em></code> et
    <code>kill -USR1 <em>pid</em></code>. L'option de ligne de commande
    <code>-k</code> a été choisie à titre de rapprochement avec la
    commande <code>kill</code> utilisée sous Unix.</div>

    <p>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 --&gt; Programmes. Placez-vous dans le
    répertoire d'installation d'Apache, tapez la commande
    <code>httpd.exe</code>, et observez le message d'erreur. Allez
    ensuite dans le répertoire des journaux, et visualisez le fichier
    <code>error.log</code> pour détecter d'éventuelles erreurs de
    configuration. Si Apache a été installé dans <code>C:\Program
    Files\Apache Software Foundation\Apache2.5\</code>, vous
    pouvez entrer ce qui suit :</p>

    <div class="example"><p><code>
      c: <br />
      cd "\Program Files\Apache Software Foundation\Apache2.5\bin" <br />
      httpd.exe
    </code></p></div>

    <p>Attendez ensuite qu'Apache s'arrête ou tapez Ctrl-C. Entrez alors
    la commande suivante :</p>

    <div class="example"><p><code>
      cd ..\logs <br />
      more &lt; error.log
    </code></p></div>

    <p>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 :</p>

    <ul>
      <li><p>L'option <code>-f</code> permet de spécifier un chemin
      absolu ou relatif vers un fichier de configuration particulier
      :</p>(sous Windows 9x, il est recommandé d'utiliser la ligne de
    commande à cause du manque de fiabilité du support des services
    fourni par ce système).

      <div class="example"><p><code>
        httpd.exe -f "c:\fichiers-de-mon-serveur\autre-config.conf"
      </code></p></div>

      <p>ou</p>

      <div class="example"><p><code>
        httpd.exe -f fichiers-de-mon-serveur\autre-config.conf
      </code></p></div></li>

      <li><p>L'option <code>-n</code> permet de spécifier le service
      Apache installé dont le fichier de configuration doit être utilisé
      :</p>

      <div class="example"><p><code>
        httpd.exe -n "Nom-service"
      </code></p></div>
      </li>
    </ul>

    <p>Dans les deux cas, la directive <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> doit être correctement définie
    dans le fichier de configuration.</p>

    <p>Si vous ne spécifiez aucun fichier de configuration à l'aide des
    options <code>-f</code> ou <code>-n</code>, Apache utilisera le nom
    du fichier de configuration compilé dans le serveur, en général
    <code>conf\httpd.conf</code>. 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 <code>SERVER_CONFIG_FILE</code> en
    invoquant Apache avec l'option <code>-V</code>, comme ceci :</p>

    <div class="example"><p><code>
      httpd.exe -V
    </code></p></div>

    <p>Apache va ensuite essayer de déterminer la valeur de son
    <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> en effectuant les
    recherches suivantes, dans cet ordre :</p>

    <ol>
      <li>Une directive <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>
      via l'option de ligne de commande <code>-C</code>.</li>

      <li>L'option de ligne de commande <code>-d</code>.</li>

      <li>Le répertoire de travail courant.</li>

      <li>Une entrée de la base de registre créée dans le cas d'une
      installation binaire.</li>

      <li>La racine des documents (<code>DocumentRoot</code>) codée en dur
      dans le serveur. Elle
      correspond par défaut à <code>/apache</code>, et vous pouvez le
      vérifier en tapant <code>httpd.exe -V</code> et en recherchant
      l'étiquette <code>HTTPD_ROOT</code>.</li>
    </ol>

    <p>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.</p>

    <p>La valeur de cette clé correspond au répertoire <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> qui contient lui-même le
    sous-répertoire <code>conf</code>. Lors de son démarrage, Apache lit
    le fichier <code>httpd.conf</code> à partir de ce répertoire. Si ce
    fichier contient une directive <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> 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 <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> dans
    <code>httpd.conf</code> afin de refléter la nouvelle
    localisation.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="test" id="test">Vérification de l'installation</a> <a title="Lien permanent" href="#test" class="permalink">&para;</a></h2>
    

    <p>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 <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> 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 :</p>

    <div class="example"><p><code>
      http://localhost/
    </code></p></div>

    <p>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 <code>error.log</code> dans le
    sous-répertoire <code>logs</code>. 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 :</p>

    <div class="example"><p><code>
      http://127.0.0.1/
    </code></p></div>

    <p>Si Apache écoute un port non standard, vous devez le préciser
    explicitement dans l'URL :</p>

    <div class="example"><p><code>
      http://127.0.0.1:8080/
    </code></p></div>

    <p>Après que votre installation de base fonctionne, vous devez la
    configurer correctement en éditant les fichiers du sous-répertoire
    <code>conf</code>. 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.</p>

    <p>Comme Apache <strong>ne peut pas</strong> 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.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="windrivemap" id="windrivemap">Configuration de l'accès aux ressources réseau</a> <a title="Lien permanent" href="#windrivemap" class="permalink">&para;</a></h2>
    

  <p>L'accès à des fichiers par le réseau peut être spécifié via deux
  mécanismes fournis par Windows :</p>

  <dl>
    <dt>Association de lettres de lecteur</dt>
    <dd>Par exemple, <code>Alias /images/ Z:/</code></dd>

    <dt>chemins UNC</dt>
    <dd>Par exemple, <code>Alias /images/ //imagehost/www/images/</code></dd>
  </dl>

  <p>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. <strong>N'utilisez par
  conséquent que des
  chemins UNC pour les ressources réseau dans httpd.conf,</strong> 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).</p>

  <div class="example"><h3>Exemple de DocumentRoot avec chemin UNC</h3><pre class="prettyprint lang-config">DocumentRoot "//dochost/www/html/"</pre>
</div>

  <div class="example"><h3>Exemple de DocumentRoot avec adresse IP dans le chemin UNC</h3><pre class="prettyprint lang-config">DocumentRoot "//192.168.1.50/docs/"</pre>
</div>

  <div class="example"><h3>Exemple d'Alias et répertoire correspondant avec
  chemin UNC</h3><pre class="prettyprint lang-config">Alias "/images/" "//imagehost/www/images/"

&lt;Directory "//imagehost/www/images/"&gt;
#...
&lt;/Directory&gt;</pre>
</div>

  <p>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.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="tuning" id="tuning">Personnalisation sous Windows</a> <a title="Lien permanent" href="#tuning" class="permalink">&para;</a></h2>
    
    <ul>
      <li><p>Si on utilise un grand nombre de redirections de journaux
      via des pipes, il est souvent nécessaire d'augmenter la
      taille de la mémoire du bureau ("desktop heap"). Pour une information plus
      détaillée, veuillez vous reporter à la documentation sur les <a href="../logs.html#piped">redirections de journaux</a>.</p></li>
    </ul>
  </div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/platform/windows.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/platform/windows.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/platform/windows.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else {
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>