<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#intro">Introduction</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#configuring">Configurer httpd pour autoriser CGI</a></li>
<h2 id="configuring">Configurer httpd pour autoriser CGI <a title="Lien permanent" href="#configuring" class="permalink">¶</a></h2>
- <p>httpd doit être configuré pour permettre l'exécution des
- programmes CGI, pour que vos programmes CGI puissent fonctionner
- correctement. Il existe plusieurs méthodes pour y parvenir.</p>
-
- <div class="warning">Note: si httpd a été compilé avec le support
- des modules partagés (DSO), vous devez vous assurer que le module CGI est
- chargé ; vous devez pour cela vérifier que la directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> correspondante n'a pas été
- commentée dans votre <code>httpd.conf</code>. Une directive correcte
- doit ressembler à ceci :
-
- <pre class="prettyprint lang-config">LoadModule cgid_module modules/mod_cgid.so</pre>
-
-
+ <p>La configuration de httpd doit autoriser l’exécution de CGI pour que les
+ programmes CGI fonctionnent. Il existe plusieurs manières d’y parvenir, qui
+ sont décrites ci-après.</p>
+
+ <p>La prise en charge de CGI est assurée par deux modules :
+ <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code> et <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>.
+ <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code> utilise un démon externe dédié pour gérer les
+ processus CGI et est requis lorsque httpd utilise un MPM threadé (tel que
+ <code class="module"><a href="../mod/event.html">event</a></code> ou <code class="module"><a href="../mod/worker.html">worker</a></code>). <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>
+ exécute les programmes CGI directement depuis le processus du serveur et est
+ utilisé avec les MPMs non threadés tels que <code class="module"><a href="../mod/prefork.html">prefork</a></code>, ou
+ sous Windows. Du point de vue de la configuration, ils sont interchangeables
+ — les directives sont les mêmes. Voir les pages de référence de
+ <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> et <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code> pour les détails de
+ l’implémentation.</p>
+
+ <div class="warning">Si httpd a été compilé avec le support des modules
+ partagés (DSO), vous devez vous assurer que le module approprié est chargé ;
+ vous devez pour cela vérifier que la directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> correspondante n'a pas été commentée
+ dans votre <code>httpd.conf</code>. Pour un MPM threadé :
+
+<div class="example"><pre class="prettyprint lang-config">LoadModule cgid_module modules/mod_cgid.so</pre>
+</div>
- Sous Windows, ou si l'on utilise un module MPM non-threadé comme prefork,
- une directive correctement configurée sera du style :
+ Pour Windows, ou un MPM non threadé comme prefork :
- <pre class="prettyprint lang-config">LoadModule cgi_module modules/mod_cgi.so</pre>
+<div class="example"><pre class="prettyprint lang-config">LoadModule cgi_module modules/mod_cgi.so</pre>
+</div>
</div>
<p>La directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> se présente comme suit
:</p>
- <pre class="prettyprint lang-config">ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"</pre>
-
+<div class="example"><pre class="prettyprint lang-config">ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"</pre>
+</div>
<p>Cet exemple est tiré de votre fichier de configuration
<code>httpd.conf</code> par défaut, si vous avez installé httpd
tant que programme CGI.</p>
<p>Par exemple, si une requête pour l'URL
- <code>http://www.example.com/cgi-bin/test.pl</code> est
- effectuée, httpd tentera d'exécuter le fichier
- <code>/usr/local/apache2/cgi-bin/test.pl</code> et en renverra la
- sortie. Bien entendu, le fichier doit exister, être exécutable, et
- retourner sa sortie d'une manière particulière, sinon httpd
- renverra un message d'erreur.</p>
+ <code>http://www.example.com/cgi-bin/test.py</code> est effectuée, httpd
+ tentera d'exécuter le fichier
+ <code>/usr/local/apache2/cgi-bin/test.py</code> et en renverra la sortie.
+ Le fichier doit exister, être exécutable, et produire une sortie sous le
+ format attendu, sinon httpd renverra un message d'erreur.</p>
<h3 id="nonscriptalias">CGI en dehors des répertoires ScripAlias</h3>
l'exécution des programmes CGI est permise depuis un répertoire
particulier :</p>
- <pre class="prettyprint lang-config"><Directory "/usr/local/apache2/htdocs/somedir">
- Options +ExecCGI
+<div class="example"><pre class="prettyprint lang-config"><Directory "/usr/local/apache2/htdocs/somedir">
+Options +ExecCGI
</Directory></pre>
-
+</div>
<p>La directive ci-dessus indique à httpd qu'il doit permettre
l'exécution des fichiers CGI. Vous devez aussi indiquer au serveur
quels fichiers sont des fichiers CGI. La directive <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> suivante indique au
serveur qu'il doit traiter tous les fichiers possédant une
- extension <code>cgi</code> ou <code>pl</code> en tant que
+ extension <code>cgi</code> ou <code>py</code> en tant que
programmes CGI :</p>
- <pre class="prettyprint lang-config">AddHandler cgi-script .cgi .pl</pre>
-
+<div class="example"><pre class="prettyprint lang-config">AddHandler cgi-script .cgi .py</pre>
+</div>
<h3 id="htaccess">Fichiers .htaccess</h3>
répertoire utilisateur, vous pouvez utiliser la configuration
suivante :</p>
- <pre class="prettyprint lang-config"><Directory "/home/*/public_html">
- Options +ExecCGI
- AddHandler cgi-script .cgi
+<div class="example"><pre class="prettyprint lang-config"><Directory "/home/*/public_html">
+Options +ExecCGI
+AddHandler cgi-script .cgi
</Directory></pre>
-
+</div>
<p>Pour indiquer un sous-répertoire <code>cgi-bin</code> d'un
répertoire utilisateur où tout fichier sera traité en tant que
programme CGI, vous pouvez utiliser ceci :</p>
- <pre class="prettyprint lang-config"><Directory "/home/*/public_html/cgi-bin">
- Options ExecCGI
- SetHandler cgi-script
+<div class="example"><pre class="prettyprint lang-config"><Directory "/home/*/public_html/cgi-bin">
+Options ExecCGI
+SetHandler cgi-script
</Directory></pre>
-
+</div>
<h2 id="writing">Ecrire un programme CGI <a title="Lien permanent" href="#writing" class="permalink">¶</a></h2>
- <p>Il y a deux différences principales entre la programmation
- "standard" et la programmation CGI.</p>
+ <p>La programmation CGI diffère de la programmation
+ "standard" sur deux points.</p>
<p>En premier lieu, toute sortie de votre programme CGI doit être
précédée d'un en-tête <a class="glossarylink" href="../glossary.html#mime-type" title="voir glossaire">MIME-type</a>. Il s'agit d'un
<p>En second lieu, votre sortie doit être en HTML, ou tout autre
format qu'un navigateur est en mesure d'afficher. La plupart du
temps, il s'agira de HTML, mais occasionnellement, vous pouvez être
- amené à écrire un programme CGI qui renvoie une image gif, ou un
+ amené à écrire un programme CGI qui renvoie une image GIF, ou un
autre type de contenu non-HTML.</p>
<p>A part ces deux différences, un programme CGI ressemblera à tout
<p>L'exemple suivant est un exemple de programme CGI qui permet
d'afficher une ligne de caractères dans votre navigateur. Ecrivez
ce qui suit, enregistrez le dans un fichier nommé
- <code>premier.pl</code>, et placez le dans votre répertoire
+ <code>premier.py</code>, et placez le dans votre répertoire
<code>cgi-bin</code>.</p>
- <pre class="prettyprint lang-perl">#!/usr/bin/perl
-print "Content-type: text/html\n\n";
-print "Hello, World.";</pre>
-
+<div class="example"><pre class="prettyprint lang-python">#!/usr/bin/env python3
+print("Content-type: text/html\n")
+print("Hello, World.")</pre>
+</div>
- <p>Même si Perl ne vous est pas familier, vous devriez être
- capable de comprendre le fonctionnement de ce programme. La
- première ligne indique à httpd (ou à toute interface à partir de
- laquelle le programme s'exécute) que ce programme peut être
- exécuté en fournissant son fichier à l'interpréteur
- <code>/usr/bin/perl</code>. La seconde ligne affiche la
- déclaration du type de contenu considéré, suivie de deux paires
- "Retour chariot - Nouvelle ligne". Ceci a pour effet d'insérer une
- ligne vide après l'en-tête pour marquer la fin des en-têtes HTTP,
- et le début du corps du document. La troisième ligne affiche la
- chaîne de caractères "Bonjour tout le monde . . .". Et c'est tout
- ce dont vous avez besoin.</p>
+ <p>La première ligne indique au système d’exploitation quel interpréteur
+ utiliser. La première invocation de print affiche l’en-tête content-type
+ suivi d’une ligne vide (le <code>\n</code> dans la chaîne et la nouvelle
+ ligne qu’ajoute <code>print()</code>), qui matérialise la fin des en-têtes
+ HTTP. La seconde invocation de print affiche le corps. C’est là tout ce
+ dont un programme CGI a besoin pour produire une réponse.</p>
<p>Si vous ouvrez votre navigateur favori et lui indiquez
l'adresse</p>
<div class="example"><p><code>
- http://www.example.com/cgi-bin/premier.pl
+ http://www.example.com/cgi-bin/premier.py
</code></p></div>
<p>ou toute autre URL correspondant à votre programme CGI, Vous
<h2 id="troubleshoot">Mais ça ne marche toujours pas ! <a title="Lien permanent" href="#troubleshoot" class="permalink">¶</a></h2>
- <p>Vous devriez voir au moins une des quatre sorties suivantes dans
- votre navigateur lorsque vous essayez d'accéder à votre programme
- CGI depuis le web :</p>
+ <p>Quatre sorties basiques pourront apparaître dans votre navigateur lorsque
+ vous essayez d'accéder à votre programme CGI depuis le web :</p>
<dl>
<dt>Le flux de sortie de votre programme CGI</dt>
<code>nobody</code>, il suffit de lui attribuer des droits
d'exécution pour tout le monde :</p>
- <div class="example"><p><code>
- chmod a+x premier.pl
- </code></p></div>
+<div class="example"><pre class="prettyprint lang-bash">chmod a+x first.py</pre>
+</div>
<p>En outre, si votre programme doit pouvoir accéder en lecture
et/ou écriture à d'autres fichiers, ces derniers devront avoir les
CGI.</p>
<p>Un exemple typique de spécification de programme est le chemin
- vers l'interpréteur de script (souvent <code>perl</code>) que l'on
+ vers l'interpréteur de script (souvent <code>python3</code>) que l'on
trouve à la première ligne de votre programme CGI et qui va
ressembler à ceci :</p>
- <pre class="prettyprint lang-perl">#!/usr/bin/perl</pre>
-
+<div class="example"><pre class="prettyprint lang-python">#!/usr/bin/env python3</pre>
+</div>
<p>Assurez-vous qu'il s'agit bien du chemin correct vers
l'interpréteur.</p>
<div class="example"><p><code>
cd /usr/local/apache2/cgi-bin<br>
- ./premier.pl
+ ./premier.py
</code></p></div>
- <p>(N'invoquez pas l'interpréteur <code>perl</code>. Le shell et
+ <p>(N'invoquez pas l'interpréteur <code>python3</code>. Le shell et
httpd doivent être capable de le déterminer à partir de <a href="#pathinformation">l'information sur le chemin</a> située sur
la première ligne du script.)</p>
<p>Si vous ne maîtrisez pas le fonctionnement de suexec, il vous
est déconseillé de l'utiliser. Pour désactiver suexec, supprimer
- simplement (ou renommez) l'exécutable <code class="program"><a href="../programs/suexec.html">suexec</a></code>
+ (ou renommez) l'exécutable <code class="program"><a href="../programs/suexec.html">suexec</a></code>
pointé par <code>SUEXEC_BIN</code> et redémarrez le serveur. Si
après une lecture de <a href="../suexec.html">suexec</a>, vous
décidez quand-même de l'utiliser, tapez la commande <code>suexec
variables requises se trouve dans la <a href="https://www.rfc-editor.org/rfc/rfc3875">RFC 3875</a> (Common Gateway
Interface).</p>
- <p>Ce programme CGI basique en Perl permet d'afficher toutes les
+ <p>Ce programme CGI basique en Python permet d'afficher toutes les
variables d'environnement qui sont échangées. Deux programmes
similaires sont fournis avec la distribution de httpd et situés
dans le répertoire <code>cgi-bin</code>.
variables d'environnement</a> aux variables de base fournies par
défaut.</p>
- <pre class="prettyprint lang-perl">#!/usr/bin/perl
-use strict;
-use warnings;
-
-print "Content-type: text/html\n\n";
-foreach my $key (keys %ENV) {
- print "$key --> $ENV{$key}<br>";
-}</pre>
+<div class="example"><pre class="prettyprint lang-python">#!/usr/bin/env python3
+import os
+print("Content-type: text/html\n")
+for key, value in os.environ.items():
+print(f"{key} --> {value}<br>")</pre>
+</div>
<h3 id="stdin">STDIN et STDOUT</h3>
partie du travail de base pour vous. Ceci vous permettra de diminuer
le nombre d'erreurs et d'accélérer le développement.</p>
- <p>Si vous écrivez des programmes CGI en Perl, des modules sont à
- votre disposition à <a href="http://www.cpan.org/">CPAN</a>. A ce
- sujet, le module le plus populaire est <code>CGI.pm</code>. Vous
- pouvez aussi essayer <code>CGI::Lite</code>, qui implémente les
- fonctionnalités strictement nécessaires, mais suffisantes pour
- la majorité des programmes.</p>
-
- <p>Si vous écrivez des programmes CGI en C, vous disposez de nombreuses
- options. L'une d'elles est la bibliothèque <code>CGIC</code> de <a href="https://web.mit.edu/wwwdev/www/cgic.html">https://web.mit.edu/wwwdev/www/cgic.html</a>.</p>
+ <p>Si vous écrivez des programmes CGI en Python, le module <code>cgi</code>
+ de la bibliothèque standard (obsolète dans Python 3.11, supprimé dans Python
+ 3.13) prenait en charge l’analyse de formulaire. Avec les versions actuelles
+ de Python, utilisez le module <code>urllib.parse</code> pour analyser les
+ chaîne de paramètres et les données de formulaire. Pour des applications
+ plus complexes, orientez-vous vers un cadriciel WSGI léger, bien que cela
+ aille au-delà du domaine de la CGI traditionnelle.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="moreinfo">Pour plus d'informations <a title="Lien permanent" href="#moreinfo" class="permalink">¶</a></h2>
programme CGI a été écrit, et, si possible, son code source. Ceci
permettra une résolution plus aisée de votre problème.</p>
- <p>Notez que les questions à propos de problèmes CGI ne doivent
+ <div class="note">Les questions à propos de problèmes CGI ne doivent
<strong>jamais</strong> être postées dans la base de données de
bogues de httpd, à moins que vous ne soyez sûr d'avoir trouvé un
- problème dans le code source de httpd.</p>
+ problème dans le code source de httpd.</div>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English"> en </a> |
<variants>
<variant>en</variant>
<variant outdated="yes">es</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
</variants>
<variants>
<variant>en</variant>
<variant outdated="yes">es</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
</variants>
<a href="./pt-br/install.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)"> pt-br </a> |
<a href="./tr/install.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
- <p>Ce document couvre l'installation et la compilation du serveur
- HTTP Apache
- sur les systèmes Unix et similaires seulement. Pour la compilation et
- l'installation sous Windows, voir <a href="platform/windows.html">Utiliser le serveur HTTP Apache avec Microsoft
- Windows</a> et <a href="platform/win_compiling.html">Compilation
- d'Apache sous Microsoft Windows</a>. Pour les autres plateformes, se
- référer à la documentation par
- <a href="platform/">plateforme</a>.</p>
+ <p>Le serveur HTTP Apache est distribué sous forme de code source. Ce
+ document décrit la construction et l’installation du serveur à partir des
+ sources sous Unix et les systèmes de la famille d’Unix. Pour Windows, voir
+ <a href="platform/windows.html">Utiliser le serveur HTTP Apache avec
+ Microsoft Windows</a> et <a href="platform/win_compiling.html">Compilation
+ de httpd sous Microsoft Windows</a>. Pour les autres plateformes, se
+ référer à la documentation par <a href="platform/">plateforme</a>.</p>
- <p>Apache httpd utilise <code>libtool</code> et <code>autoconf</code>
- afin de créer un environnement de construction similaire à la plupart
- des projets Open Source .</p>
+ <p>Si vous installez httpd depuis un paquet de distribution (RPM, DEB,
+ etc.), l’organisation de la configuration et les valeurs par défaut peuvent
+ être différentes de ce qui est décrit ici. Voir <a href="#thirdp">paquets
+ tiers</a> ci-après et consultez la documentation de votre distribution pour
+ les détails spécifiques à la plateforme.</p>
<p>Si vous effectuez une mise à jour depuis une version mineure vers
la suivante (par exemple, 2.4.66 à 2.4.67), veuillez passer à la section
<li><img alt="" src="./images/down.gif"> <a href="#upgrading">Mise à jour</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#thirdp">Paquets tiers</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="programs/configure.html">Configuration de l'arborescence
- des sources</a></li><li><a href="invoking.html">Démarrer Apache httpd</a></li><li><a href="stopping.html">Arrêt et redémarrage</a></li></ul></div>
+ des sources</a></li><li><a href="invoking.html">Démarrer httpd</a></li><li><a href="stopping.html">Arrêt et redémarrage</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="overview">Aperçu pour les plus pressés <a title="Lien permanent" href="#overview" class="permalink">¶</a></h2>
- <dl>
- <dt>Installation sous Fedora/CentOS/Red Hat Enterprise Linux</dt>
- <dd>
- <pre class="prettyprint lang-sh">sudo dnf install httpd
-
-# Démarrage du service
-sudo systemctl start httpd
-
-# Arrêt du service
-sudo systemctl stop httpd
-
-# Redémarrage du service
-sudo systemctl restart httpd</pre>
-
-
- <div class="warning">Voir la <a href="https://docs.fedoraproject.org/en-US/quick-docs/getting-started-with-apache-http-server/index.html">documentation
- du projet Fedora</a> pour des informations spécifiques à cette plateforme.</div>
- </dd>
-
- <dt>Installation sous Ubuntu/Debian</dt>
- <dd>
-<pre class="prettyprint lang-sh">sudo apt install apache2
-
-# Démarrage du service
-sudo systemctl start apache2
-
-# Arrêt du service
-sudo systemctl stop apache2
-
-# Redémarrage du service
-sudo systemctl restart apache2</pre>
-
-
- <div class="warning">Voir la <a href="https://ubuntu.com/tutorials/install-and-configure-apache">documentation
- d’Ubuntu</a> pour des informations spécifiques à cette plateforme.</div>
-
- </dd>
-
- <dt>Installation à partir des sources</dt>
- <dd>
-
<table>
<tr>
<p>Chaque étape du processus de compilation et d'installation est
décrite plus en détails ci-dessous, à commencer par les prérequis
- pour compiler et installer Apache httpd.</p>
- </dd>
- </dl>
-
- <div class="warning">L'installation sous votre plateforme favorite n'est pas
- traitée ici ? N'hésitez pas à nous <a href="https://httpd.apache.org/docs-project/">aider à compléter cette
- documentation</a> en nous faisant profiter de votre expérience.</div>
-
-
+ pour compiler et installer httpd.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="requirements">Prérequis <a title="Lien permanent" href="#requirements" class="permalink">¶</a></h2>
- <p>Les prérequis pour la construction et l’exécution d'Apache httpd sont les
+ <p>Les prérequis pour la construction et l’exécution de httpd sont les
suivants:</p>
<dl>
installées d'APR et APR-Util.</dd>
<dt>Bibliothèque d'expressions rationnelles compatibles Perl
- (PCRE)</dt>
- <dd>Cette bibliothèque est nécessaire mais n'est plus fournie avec la
- distribution de httpd. Téléchargez le code source depuis <a href="https://www.pcre.org/">https://www.pcre.org</a> ou installez
- un portage du paquet. Si votre suite de compilation ne trouve pas
- le script pcre-config installé au cours du processus de
- construction de PCRE, indiquez son chemin via l'option
- <code>--with-pcre</code> du script <code>./configure</code>. Sur
- certaines plateformes, vous devrez
- peut-être installer les paquets <code>-dev</code> correspondants
- pour permettre la compilation de httpd avec la version
- installée de PCRE.</dd>
+ (PCRE2)</dt>
+ <dd>Cette bibliothèque est nécessaire mais n'est pas fournie avec la
+ distribution de httpd. Téléchargez le code source depuis <a href="https://github.com/PCRE2Project/pcre2">https://github.com/PCRE2Project/pcre2</a>
+ ou installez le avec le gestionnaire de paquets de votre système. Si votre
+ système de construction ne trouve pas le script <code>pcre2-config</code>
+ installé par la construction de PCRE2, pointez vers lui en utilisant
+ l’option <code>--with-pcre</code>. Sur certaines plateformes, vous devrez
+ peut-être installer le paquet <code>-dev</code> correspondant (par exemple
+ <code>libpcre2-dev</code> ou <code>pcre2-devel</code>) pour permettre la
+ construction de httpd avec votre version installée de PCRE2.</dd>
<dt>Espace disque</dt>
<dd>Assurez-vous d'avoir au moins 200 Mo d'espace disque disponible
les outils de construction de base tels que <code>make</code>.</dd>
<dt>Connaissance de l'heure exacte</dt>
- <dd>Les éléments du protocole HTTP font référence à l'heure du jour. Par
- conséquent, il est nécessaire d'équiper votre système d'un dispositif de
- synchronisation du temps. À cet effet, la plupart des distributions
- modernes de Linux fournissent <code>systemd-timesyncd</code> ou
- <code>chrony</code>. Voir la <a href="https://www.ntp.org">page d'accueil
- de NTP</a> pour plus de détails à propos du logiciel NTP et des serveurs
- de temps publics.</dd>
+ <dd>Les entêtes du protocole HTTP utilisent un horodatage ; l’horloge de
+ votre système doit donc être précise. La plupart des distributions de
+ Linux activent <code>systemd-timesyncd</code> ou <code>chrony</code> par
+ défaut. Vérifiez que la synchronisation du temps est active sur votre
+ système avant d’exploiter un serveur en production.</dd>
<dt><a href="https://www.perl.org/">Perl 5</a>
[OPTIONNEL]</dt>
sont écrits en Perl). Si le script <code class="program"><a href="./programs/configure.html">configure</a></code> ne trouve
pas d'interpréteur Perl 5, vous ne pourrez pas utiliser les scripts qui en
ont besoin. Bien entendu, vous pourrez tout de même construire et
- utiliser Apache httpd.</dd>
+ utiliser httpd.</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="download">Téléchargement <a title="Lien permanent" href="#download" class="permalink">¶</a></h2>
- <p>Si vous voulez construire httpd depuis le code source, commencez par
- télécharger l’archive tar du code source depuis le <a href="https://httpd.apache.org/download.cgi">site de téléchargement du
- serveur HTTP Apache</a>. Le processus de construction (décrit ci-après)
- permet de personnaliser le serveur pour qu’il corresponde à vos besoins.</p>
+ <p>Téléchargez l’archive tar du code source depuis le <a href="https://httpd.apache.org/download.cgi">site de téléchargement du
+ serveur HTTP Apache</a>.</p>
<p>Après le téléchargement, il est important de vérifier que vous disposez
d'une version complète et non modifiée du serveur HTTP Apache. Vous pouvez
<h2 id="configure">Configuration de l'arborescence des sources <a title="Lien permanent" href="#configure" class="permalink">¶</a></h2>
<p>L'étape suivante consiste à configurer l'arborescence des sources
- d'Apache en fonction de votre plateforme et de vos besoins personnels.
- Le script <code class="program"><a href="./programs/configure.html">configure</a></code>, situé à la racine du
- répertoire de la distribution, a été conçu à cet effet
- (Les développeurs qui téléchargent
- une version non officielle de l'arborescence des sources d'Apache
- devront disposer de
- <code>autoconf</code> et <code>libtool</code> et
- exécuter <code>buildconf</code> avant de passer à l'étape suivante,
- ce qui n'est pas nécessaire pour les versions officielles).</p>
+ de httpd en fonction de votre plateforme et de vos besoins personnels.
+ Le script <code class="program"><a href="./programs/configure.html">configure</a></code>, situé à la racine du répertoire de
+ la distribution, a été conçu à cet effet (Les développeurs qui téléchargent
+ une version non officielle de l'arborescence des sources de httpd
+ devront disposer de <code>autoconf</code> et <code>libtool</code> et
+ exécuter <code>buildconf</code> avant de passer à l'étape suivante, ce qui
+ n'est pas nécessaire pour les versions officielles).</p>
<p>Pour configurer l'arborescence des sources avec les valeurs par défaut
pour toutes les options, saisissez <code>./configure</code>.
accepte toute une variété de variables et
d'options de ligne de commande.</p>
- <p>L'option la plus importante <code>--prefix</code> est le chemin
- du répertoire d'installation d'Apache, car Apache doit être configuré
- en fonction de ce chemin pour pouvoir fonctionner correctement.
- Il est possible de définir plus finement le chemin d'installation des fichiers
- à l'aide d'<a href="programs/configure.html#installationdirectories">options
+ <p>L'option la plus importante <code>--prefix</code> est le chemin du
+ répertoire d'installation de httpd, car httpd doit être
+ configuré en fonction de ce chemin pour pouvoir fonctionner correctement.
+ Il est possible de définir plus finement le chemin d'installation des
+ fichiers à l'aide d'<a href="programs/configure.html#installationdirectories">options
supplémentaires de configure</a>.</p>
<p>À ce niveau, vous pouvez aussi spécifier de quelles <a href="programs/configure.html#optionalfeatures">fonctionnalités</a> vous
- voulez disposer dans Apache en activant ou désactivant des <a href="mod/">modules</a>. Apache est fourni avec un grand nombre de
- modules inclus par défaut. Ils seront compilés en tant qu'<a href="dso.html">objets partagés (DSOs)</a> qui pourront être chargés
- ou déchargés à l'exécution. Vous pouvez aussi choisir de compiler
- les modules statiquement via l'option
- <code>--enable-<var>module</var>=static</code>.</p>
- <p>Des modules supplémentaires peuvent être activés à l'aide de l'option
- <code>--enable-<var>module</var></code>, où
- <var>module</var> est le nom du module sans la chaîne
- <code>mod_</code> et où tout caractère de soulignement est converti
- en tiret. D'une manière similaire,
- vous pouvez désactiver des modules à l'aide de l'option
- <code>--disable-<var>module</var></code>. Faites très attention
- en utilisant ces options, car <code class="program"><a href="./programs/configure.html">configure</a></code> n'est pas en
- mesure de vous avertir si le module que vous avez spécifié n'existe pas ;
- il ignorera l'option.</p>
+ voulez disposer dans httpd en activant ou désactivant des <a href="mod/">modules</a>. httpd est fourni avec un grand nombre de
+ modules inclus par défaut. Ils seront compilés en tant qu'<a href="dso.html">objets partagés (DSOs)</a> qui pourront être chargés ou
+ déchargés à l'exécution. Vous pouvez aussi choisir de compiler les modules
+ statiquement via l'option
+ <code>--enable-<var>module</var>=static</code>.</p> <p>Des modules
+ supplémentaires peuvent être activés à l'aide de l'option
+ <code>--enable-<var>module</var></code>, où <var>module</var> est le nom du
+ module sans la chaîne <code>mod_</code> et où tout caractère de soulignement
+ est converti en tiret. D'une manière similaire, vous pouvez désactiver des
+ modules à l'aide de l'option <code>--disable-<var>module</var></code>.
+ Faites très attention en utilisant ces options, car
+ <code class="program"><a href="./programs/configure.html">configure</a></code> n'est pas en mesure de vous avertir si le
+ module que vous avez spécifié n'existe pas ; il ignorera l'option.</p>
<p>En outre, vous devrez peut-être fournir au script
<code class="program"><a href="./programs/configure.html">configure</a></code> des informations supplémentaires sur
</p>
<p>Pour vous faire une idée des possibilités qui s'offrent à vous, voici
- un exemple typique de compilation d'Apache avec le répertoire
+ un exemple typique de compilation de Apache httpd avec le répertoire
d'installation <code>/sw/pkg/apache</code>, un compilateur et des drapeaux
particuliers et les deux modules additionnels <code class="module"><a href="./mod/mod_ldap.html">mod_ldap</a></code>
et <code class="module"><a href="./mod/mod_lua.html">mod_lua</a></code> :</p>
<h2 id="compile">Construction <a title="Lien permanent" href="#compile" class="permalink">¶</a></h2>
<p>Vous pouvez maintenant construire les différents éléments qui
- composent le paquet Apache en lançant :</p>
+ composent le paquet Apache httpd en lançant :</p>
-<div class="example"><p><code>$ make</code></p></div>
+<div class="example"><pre class="prettyprint lang-sh">$ make</pre>
+</div>
<p>Vous devez être patient, car il faut plusieurs minutes pour compiler
une configuration de base, et cette durée peut varier considérablement
d'installation défini par <em>PREFIX</em> (voir plus haut l'option
<code>--prefix</code>) en lançant:</p>
-<div class="example"><p><code>$ make install</code></p></div>
+<div class="example"><pre class="prettyprint lang-sh">$ make install</pre>
+</div>
<p>Cette étape nécessite habituellement les privilèges
de root, car <em>PREFIX</em> est en général un
éditant les <a href="configuring.html">fichiers de configuration</a>
situés dans <code><em>PREFIX</em>/conf/</code>.</p>
-<div class="example"><p><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code></p></div>
+<div class="example"><pre class="prettyprint lang-sh">$ vi <em>PREFIX</em>/conf/httpd.conf</pre>
+</div>
- <p>Consultez le manuel d'Apache situé dans
+ <p>Consultez le manuel de httpd situé dans
<code><em>PREFIX</em>/docs/manual/</code> ou
<a href="https://httpd.apache.org/docs/2.4/">https://httpd.apache.org/docs/2.4/</a> pour la version la plus
récente de ce manuel et la liste complète des <a href="mod/directives.html">directives de configuration</a> disponibles.</p>
<h2 id="test">Test <a title="Lien permanent" href="#test" class="permalink">¶</a></h2>
<p>Vous pouvez maintenant <a href="invoking.html">démarrer</a> votre
- serveur HTTP Apache en lançant:</p>
+ Serveur HTTP Apache en lançant :</p>
-<div class="example"><p><code>$ <em>PREFIX</em>/bin/apachectl -k start</code></p></div>
+<div class="example"><pre class="prettyprint lang-sh">$ <em>PREFIX</em>/bin/apachectl -k start</pre>
+</div>
<p>Vous devriez alors pouvoir requérir votre premier document
à l'aide de l'URL <code>http://localhost/</code>. La page web que vous
qui est généralement <code><em>PREFIX</em>/htdocs/</code>.
Pour <a href="stopping.html">arrêter</a> le serveur, lancez:</p>
-<div class="example"><p><code>$ <em>PREFIX</em>/bin/apachectl -k stop</code></p></div>
+<div class="example"><pre class="prettyprint lang-sh">$ <em>PREFIX</em>/bin/apachectl -k stop</pre>
+</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="upgrading">Mise à jour <a title="Lien permanent" href="#upgrading" class="permalink">¶</a></h2>
<code>config.nice</code> ; ils seront alors ajoutés aux options de
votre script <code class="program"><a href="./programs/configure.html">configure</a></code> original :</p>
- <div class="example"><p><code>
- $ ./config.nice --prefix=/home/test/apache --with-port=90
- </code></p></div>
+ <div class="example"><pre class="prettyprint lang-sh">$ ./config.nice --prefix=/home/test/apache --with-port=90</pre>
+</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="thirdp">Paquets tiers <a title="Lien permanent" href="#thirdp" class="permalink">¶</a></h2>
- <p>De nombreux tiers fournissent leur propre distribution du serveur HTTP
- Apache à installer sur une plate-forme particulière. On peut citer les
- différentes distributions Linux, divers paquets <a href="https://httpd.apache.org/docs/trunk/en/platform/windows.html">Windows</a>,
- macOS, et de nombreux autres.</p>
-
- <p>Notre license logicielle non seulement permet, mais aussi
- encourage ce genre de redistribution. Cependant, ceci conduit à une
- situation ou l'organisation de la configuration et les valeurs par
- défaut de votre installation du serveur peuvent ne pas correspondre
- à ce qui est écrit dans la documentation. Bien que fâcheuse, cette
- situation n'est pas appelée à évoluer de sitôt.</p>
-
- <p>Une <a href="https://cwiki.apache.org/confluence/display/httpd/DistrosDefaultLayout">description
- de ces distributions tierces</a> est dans le wiki du serveur HTTP. Vous
- devrez cependant vous familiariser par vous-même avec la gestion du paquet
- de votre plate-forme particulière et les procédures d'installation.</p>
+ <p>De nombreux systèmes d’exploitation fournissent des paquets Apache httpd
+ préconstruits. Ces paquets permettent de démarrer rapidement, mais ils
+ diffèrent souvent d’une construction à partir des sources quant à
+ l’organisation du fichier de configuration, aux modules intégrés et aux
+ chemins par défaut. La documentation sur ce site décrit la construction du
+ serveur à partir des sources ; si vous utilisez un paquet de plateforme,
+ consultez la documentation de votre distribution pour les détails
+ spécifiques à la plateforme.</p>
+
+ <p>Quelques exemples courants :</p>
+
+ <dl>
+ <dt>Fedora / CentOS / Red Hat Enterprise Linux</dt>
+ <dd>
+ <pre class="prettyprint lang-sh">sudo dnf install httpd
+sudo systemctl start httpd</pre>
+
+ <p>Voir <a href="https://docs.fedoraproject.org/en-US/quick-docs/getting-started-with-apache-http-server/index.html">la
+ documentation du projet Fedora</a> pour l’organisation de la configuration
+ et des notes spécifiques à la plateforme.</p>
+ </dd>
+
+ <dt>Ubuntu / Debian</dt>
+ <dd>
+<pre class="prettyprint lang-sh">sudo apt install apache2
+sudo systemctl start apache2</pre>
+
+ <p>Voir <a href="https://ubuntu.com/tutorials/install-and-configure-apache">documentation
+ d’Ubuntu</a> pour l’organisation de la configuration
+ et des notes spécifiques à la plateforme.</p>
+ </dd>
+ </dl>
+
+ <p>Notre licence logicielle non seulement permet, mais aussi encourage ce
+ genre de distribution tierce. Cependant, cela conduit à une situation ou
+ l'organisation de la configuration et les valeurs par défaut de votre
+ installation du serveur peuvent ne pas correspondre à ce qui est écrit dans
+ la documentation. Une <a href="https://cwiki.apache.org/confluence/display/httpd/DistrosDefaultLayout">description
+ de ces distributions tierces</a> est disponible dans le wiki du serveur
+ HTTP.</p>
+
+ <div class="warning">Votre plateforme favorite n’est pas mentionnée ici ? <a href="https://httpd.apache.org/docs-project/">Voilà une bonne occasion pour
+ vous d’améliorer cette documentation.</a></div>
</div></div>
<div class="bottomlang">
<variant outdated="yes">de</variant>
<variant>en</variant>
<variant outdated="yes">es</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
<variant outdated="yes">pt-br</variant>
suivante consiste à analyser ces informations de façon à pouvoir en
extraire des statistiques utiles. L'analyse de journaux en général est en
dehors du sujet de ce document et ne fait pas vraiment partie intégrante
- du travail du serveur web lui-même.</p>
+ du travail du serveur web lui-même.
+ </p>
<p>Différentes versions du démon Apache httpd utilisaient d'autres modules
et directives pour contrôler la journalisation des accès, à l'instar de
<p>Voici une configuration typique pour le journal des accès :</p>
<pre class="prettyprint lang-config">LogFormat "%h %l %u %t \"%r\" %>s %b" common
-CustomLog logs/access_log common</pre>
+CustomLog "logs/access_log" common</pre>
<p>Ici est définie l'<em>identité</em> <code>common</code> qui est
<dt><code>200</code> (<code>%>s</code>)</dt>
- <dd>C'est le code de statut que le serveur retourne au client. Cette
+ <dd>C'est le code de statut que le serveur retourne au client. Cette
information est très importante car elle indique si la requête a fait
- l'objet d'une réponse positive (codes commençant par 2), une redirection
- (codes commençant par 3), une erreur due au client (codes commençant par
- 4), ou une erreur due au serveur (codes commençant par 5). Vous
- trouverez la liste complète des codes de statut possibles dans la
- spécification HTTP (<a href="https://www.rfc-editor.org/rfc/rfc2616">RFC 2616</a>) (RFC2616 section 10).</dd>
+ l'objet d'une réponse positive (codes commençant par 2), une
+ redirection (codes commençant par 3), une erreur due au client (codes
+ commençant par 4), ou une erreur due au serveur (codes commençant
+ par 5). Vous trouverez la liste complète des codes de statut possibles
+ dans la spécification
+ HTTP (<a href="https://www.rfc-editor.org/rfc/rfc2616">RFC 2616</a>) (RFC2616 section 10).</dd>
<dt><code>2326</code> (<code>%b</code>)</dt>
comme suit :</p>
<pre class="prettyprint lang-config">LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
-CustomLog log/access_log combined</pre>
+CustomLog "log/access_log" combined</pre>
<p>Ce format est identique au Common Log Format, avec deux champs
<code>AgentLog</code>.</p>
<pre class="prettyprint lang-config">LogFormat "%h %l %u %t \"%r\" %>s %b" common
-CustomLog logs/access_log common
-CustomLog logs/referer_log "%{Referer}i -> %U"
-CustomLog logs/agent_log "%{User-agent}i"</pre>
+CustomLog "logs/access_log" common
+CustomLog "logs/referer_log" "%{Referer}i -> %U"
+CustomLog "logs/agent_log" "%{User-agent}i"</pre>
<p>Cet exemple montre aussi qu'il n'est pas obligatoire d'associer
# Marque les requêtes pour le fichier robots.txt
SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Journalise toutes les autres requêtes
-CustomLog logs/access_log common env=!dontlog</pre>
+CustomLog "logs/access_log" common env=!dontlog</pre>
<p>Autre exemple, imaginons l'enregistrement des requêtes en provenance
utilisateurs dans un autre journal.</p>
<pre class="prettyprint lang-config"> SetEnvIf Accept-Language "en" english
- CustomLog logs/english_log common env=english
- CustomLog logs/non_english_log common env=!english</pre>
+ CustomLog "logs/english_log" common env=english
+ CustomLog "logs/non_english_log" common env=!english</pre>
<p>Dans le contexte d'une mise en cache, il peut être
<pre class="prettyprint lang-config">SetEnv CACHE_MISS 1
LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache
-CustomLog logs/access_log common-cache</pre>
+CustomLog "logs/access_log" common-cache</pre>
<p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> va s'exécuter avant
<h2 id="rotation">Rotation des journaux <a title="Lien permanent" href="#rotation" class="permalink">¶</a></h2>
- <p>Même dans le cas d'un serveur modérément sollicité, la quantité
- d'informations stockées dans les fichiers journaux est très importante.
- Le fichier journal des accès grossit en général d'1 Mo ou plus toutes
- les 10000 requêtes. Il est par conséquent nécessaire d'effectuer
- périodiquement la rotation des journaux en déplaçant ou supprimant les
- fichiers correspondants. On ne peut pas le faire pendant que le serveur
- est en cours d'exécution, car Apache httpd va continuer à écrire dans l'ancien
- fichier journal aussi longtemps qu'il le maintiendra ouvert.
- C'est pourquoi le serveur doit être
- <a href="stopping.html">redémarré</a> après le déplacement ou la
- suppression des fichiers journaux de façon à ce qu'il en ouvre
- de nouveaux.</p>
-
- <p>Avec un redémarrage <em>graceful</em>, on peut faire en sorte que le
- serveur ouvre de nouveaux fichiers journaux sans perdre de connexions
- existantes ou en cours avec les clients. Cependant, pour que ceci soit
- possible, le serveur doit continuer à écrire dans les anciens fichiers
- journaux pendant qu'il termine le traitement des requêtes en cours.
- Il est donc nécessaire d'attendre un certain temps après le rédémarrage
- avant d'effectuer tout traitement sur les fichiers journaux. Voici un
- scénario typique dans lequel on effectue une simple rotation des
- journaux en compressant les anciens fichiers correspondants afin
- de gagner de l'espace disque :</p>
+ <p>Même sur un serveur modérément sollicité, les fichiers journaux
+ grossissent rapidement — le journal des accès croît à peu près de 1 Mo ou
+ plus toutes les 10000 requêtes. Sans rotation, les journaux consomment de
+ plus en plus d’espace disque et deviennent difficiles à analyser. Il est
+ donc recommandé de configurer une rotation automatique des journaux dès le
+ départ.</p>
- <div class="example"><p><code>
- mv access_log access_log.old<br>
- mv error_log error_log.old<br>
- apachectl graceful<br>
- sleep 600<br>
- gzip access_log.old error_log.old
- </code></p></div>
+ <h3 id="rotation-rotatelogs">Utilisation de rotatelogs (recommandé)</h3>
+
+
+ <p>L’approche la plus simple consiste à utiliser le programme
+ <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> intégré à httpd en utilisant la <a href="#piped">redirection des journaux</a>. Ce programme permet une
+ rotation des journaux sans avoir à redémarrer le serveur et sans outil
+ externe. Pour une rotation des journaux toutes les 24 heures :</p>
+
+<div class="example"><pre class="prettyprint lang-config">CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
+ErrorLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/error_log 86400"</pre>
+</div>
+
+ <p>Pour une rotation lorsque la taille du journal atteint une certaine
+ valeur (par exemple 100 Mo) :</p>
+
+<div class="example"><pre class="prettyprint lang-config">CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 100M" combined</pre>
+</div>
+
+ <p>Vous pouvez aussi utiliser un motif de nom de fichier avec horodatage
+ sous forme d’une chaîne au format <code>strftime</code> :</p>
+
+<div class="example"><pre class="prettyprint lang-config">CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d 86400" combined</pre>
+</div>
+
+ <p>Voir <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> pour une description complète de ses
+ options, en particulier les temps de décalage, les limitations de nombre de
+ fichiers et la compression.</p>
+
+
+ <h3 id="rotation-logrotate">Utilisation de logrotate ou de la gestion des journaux par le
+ système</h3>
+
- <p>La section suivante présente une autre méthode de rotation des journaux
- qui consiste à utiliser les
- <a href="#piped">journaux redirigés</a>.</p>
+ <p>La plupart des distributions de Linux fournissent le programme
+ <code>logrotate</code> qui effectue une rotation, une compression et une
+ expiration des fichiers journaux selon une planification. Si votre
+ distribution comporte déjà une configuration de logrotate pour httpd
+ (examinez <code>/etc/logrotate.d/</code>), elle gère peut-être déjà la
+ rotation pour vous.</p>
+
+ <p>Lorsqu’on utilise un outil de rotation externe comme
+ <code>logrotate</code>, il faut faire en sorte que httpd réouvre ses
+ fichiers journaux quand les anciens ont été mis de côté. Pour ce faire,
+ l’approche standard est un redémarrage <em>graceful</em> :</p>
+
+<div class="example"><pre class="prettyprint lang-sh">/usr/sbin/apachectl graceful</pre>
+</div>
+
+ <p>Votre script <code>postrotate</code> dans la configuration de logrotate
+ doit contenir cette dernière commande (ou la commande équivalente
+ <code>systemctl reload</code>). Comme httpd continue d’écrire dans
+ l’ancien fichier jusqu’à ce qu’il reçoive le signal, tout post-traitement
+ des fichiers ayant subi une rotation doit prévoir un bref délai.</p>
+
+
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="piped">Journaux redirigés <a title="Lien permanent" href="#piped" class="permalink">¶</a></h2>
- <p>Nous avons vu que le démon httpd écrivait les informations de
- journalisation des erreurs et des accès dans un fichier journal ;
- il peut aussi
- rediriger ces informations vers un autre processus par l'intermédiaire d'un
- tube de communication (pipe). Cette fonctionnalité améliore
- considérablement la souplesse de la journalisation, sans ajouter de code
- au serveur principal. Pour rediriger les informations de journalisation
- vers un tube de communication, remplacez simplement le nom de fichier
- journal par
- le caractère pipe "<code>|</code>", suivi du nom de l'exécutable qui va
- recueillir les entrées de journal sur son entrée
- standard. Le serveur va
- lancer le processus de redirection des journaux au moment du démarrage du
- serveur, et le relancera s'il cesse de fonctionner
- pendant l'exécution du serveur.
- (Nous dénommons cette technique "journalisation
- redirigée fiable" grâce à cette dernière fonctionnalité.)</p>
-
- <p>Les processus de journalisation redirigée sont lancés par le processus
- httpd parent, et héritent de l'UID de ce dernier. Cela signifie que les
- programmes de journalisation dirigée s'exécutent généralement en tant que
- root. Il est donc très important que ces programmes soient simples et
- sécurisés.</p>
-
- <p>Un des grands avantages de la journalisation redirigée est la possibilité
- d'effectuer la rotation des journaux sans avoir à redémarrer le serveur. Pour
- accomplir cette tâche, le serveur HTTP Apache fournit un programme simple
- appelé <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code>. Par exemple, pour une rotation des
- journaux toutes les 24 heures, ajoutez ces lignes :</p>
-
- <pre class="prettyprint lang-config">CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common</pre>
-
-
- <p>Notez que l'ensemble de la commande qui sera appelée par le tube de
- communication a été placée entre guillemets. Bien que cet exemple
- concerne le journal des accès, la même technique peut être utilisée
- pour le journal des erreurs.</p>
-
- <p>Comme la journalisation conditionnelle, la journalisation redirigée est
- un outil très puissant, mais si elle existe, il est préférable d'utiliser
- une solution plus simple comme le traitement à posteriori hors ligne.</p>
-
-
- <p>Par défaut, le processus de redirection du journal est lancé sans
- invoquer un shell. Pour invoquer un shell, utilisez "<code>|$</code>"
- au lieu de "<code>|</code>" (en général avec <code>/bin/sh -c</code>)
- :</p>
-
- <pre class="prettyprint lang-config"># Invocation de "rotatelogs" en utilisant un shell
-CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common</pre>
-
-
-
- <p>Il s'agissait du comportement par défaut sous Apache 2.2. Selon
- les spécificités du shell, ceci peut générer un processus shell
- supplémentaire pour toute la durée du programme de redirection du
- journal, et induire des problèmes de gestion de signaux au cours du
- redémarrage. La notation "<code>||</code>" est aussi supportée pour
- des raisons de compatibilité avec Apache 2.2 et est équivalente à
- "<code>|</code>".</p>
+ <p>httpd peut écrire dans les fichiers journaux des erreurs et des accès à
+ travers un tube (pipe) vers un autre processus, plutôt que d’écrire
+ directement dans un fichier. Pour mettre en œuvre cette redirection,
+ remplacez le nom du fichier par le caractère pipe "<code>|</code>", suivi de
+ la commande qui recevra les entrées du journal sur son entrée standard :</p>
+
+<div class="example"><pre class="prettyprint lang-config">CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined</pre>
+</div>
+
+ <p>httpd démarre le processus de redirection des journaux au démarrage du
+ serveur et le redémarre automatiquement s’il se plante (ce comportement est
+ parfois nommé « journalisation redirigée fiable »). L’ensemble de la
+ commande à partir du caractère pipe doit être entourée de guillemets — cette
+ syntaxe fonctionne pour les deux directives <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> et <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code>.</p>
+
+ <p>Les processus de redirection des journaux sont lancés par le processus
+ httpd parent et héritent de son identifiant utilisateur. Cela signifie en
+ général qu’ils s’exécutent en tant que root ; faites donc en sorte que les
+ programmes de redirection des journaux restent simples et sécurisés.</p>
+
+ <p>Par défaut, le processus de redirection des journaux est lancé
+ directement, sans passer par un shell. Vous pouvez utiliser
+ "<code>|$</code>" à la place de "<code>|</code>" pour effectuer ce lancement
+ via un shell (en général <code>/bin/sh -c</code>) :</p>
+
+<div class="example"><pre class="prettyprint lang-config">CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined</pre>
+</div>
+
+ <p>La variante avec shell est parfois requise si votre commande redirigée
+ utilise des fonctionnalités du shell comme les caractères génériques ou le
+ développement de variable. Dans la plupart des cas, il est préférable
+ d’utiliser l’invocation directe (sans passer par un shell).</p>
<div class="note"><h3>Note à propos de la plateforme Windows</h3>
<p>Notez que sous Windows, la mémoire allouée au bureau (desktop
individuels. Considérons par exemple les directives suivantes :</p>
<pre class="prettyprint lang-config">LogFormat "%v %p %h %l %u %t \"%r\" %>s %b" commonvhost
-CustomLog logs/access_log commonvhost</pre>
+CustomLog "logs/access_log" commonvhost</pre>
<p>Le champ <code>%v</code> sert à enregistrer le nom de l'hôte virtuel qui
<h2 id="other">Autres fichiers journaux <a title="Lien permanent" href="#other" class="permalink">¶</a></h2>
- <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code></li><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#bufferedlogs">BufferedLogs</a></code></li><li><code class="directive"><a href="./mod/mod_log_forensic.html#forensiclog">ForensicLog</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptloglength">ScriptLogLength</a></code></li></ul></td></tr></table>
+ <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code></li><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_log_debug.html">mod_log_debug</a></code></li><li><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#bufferedlogs">BufferedLogs</a></code></li><li><code class="directive"><a href="./mod/mod_log_forensic.html#forensiclog">ForensicLog</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_log_debug.html#logmessage">LogMessage</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptloglength">ScriptLogLength</a></code></li></ul></td></tr></table>
<h3>Enregistrement du nombre réel d'octets envoyés et reçus</h3>
serveur en production. Vous trouverez plus d'informations dans la
documentation du module <a href="mod/mod_cgi.html">mod_cgi</a>.</p>
+
+ <h3 id="debug">Journalisation de débogage configurable</h3>
+
+
+ <p>La directive <code class="directive"><a href="./mod/mod_log_debug.html#logmessage">LogMessage</a></code>
+ vous permet de créer vos propres messages de journalisation
+ personnalisés pour faciliter vos opérations de débogage.
+ </p>
+
</div></div>
<div class="bottomlang">
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
-<!-- English Revision: 659902:1933507 (outdated) -->
+<!-- English Revision: 659902:1935554 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<?xml version="1.0" encoding="EUC-KR" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ko.xsl"?>
-<!-- English Revision: 105989:1933507 (outdated) -->
+<!-- English Revision: 105989:1935554 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
-<!-- English Revision: 1897299:1933507 (outdated) -->
+<!-- English Revision: 1897299:1935554 (outdated) -->
<!-- =====================================================
Translated by: Nilgün Belma Bugüner <nilgun belgeler.gen.tr>
Reviewed by: Orhan Berent <berent belgeler.gen.tr>
<p><span>Langues Disponibles: </span><a href="../en/mod/event.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/event.html" title="Français"> fr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Une variante du MPM <code class="module"><a href="../mod/worker.html">worker</a></code> conçue pour ne
mobiliser des threads que pour les connexions en cours de traitement</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>MPM</td></tr>
<code class="program"><a href="../programs/configure.html">configure</a></code> lorsque vous compilez le programme
<code class="program"><a href="../programs/httpd.html">httpd</a></code>.</p>
+ <p>Lorsque ce module est construit en tant que module DSO, il peut être
+chargé à l’aide de la commande :</p>
+
+ <pre class="prettyprint lang-config">LoadModule mpm_event_module modules/mod_mpm_event.so</pre>
+
+
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mpm_event">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mpm_event">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
+<li><a href="../mpm.html">Modules multi-processus (MPMs)</a></li>
<li><a href="worker.html">Le MPM worker</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<variants>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
</variants>
</metafile>
<p><span>Langues Disponibles: </span><a href="../en/mod/mpm_netware.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mpm_netware.html" title="Français"> fr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Module multi-processus implémentant un serveur web basé
exclusivement sur les threads et optimisé pour Novell
NetWare</td></tr>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mpm_netware">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mpm_netware">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
+<li><a href="../mpm.html">Modules multi-processus (MPMs)</a></li>
<li><a href="../bind.html">Définition des adresses et ports
qu'utilise Apache httpd</a>
</li>
<variants>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
</variants>
</metafile>
<a href="../fr/mod/mpm_winnt.html" title="Français"> fr </a> |
<a href="../ja/mod/mpm_winnt.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Module multi-processus optimisé pour Windows
NT.</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>MPM</td></tr>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mpm_winnt">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mpm_winnt">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
+<li><a href="../mpm.html">Modules multi-processus (MPMs)</a></li>
<li><a href="../platform/windows.html">Utiliser le serveur HTTP
Apache sous Microsoft Windows</a></li>
</ul></div>
<variants>
<variant outdated="yes">de</variant>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
<variant outdated="yes">ja</variant>
</variants>
</metafile>
<p><span>Langues Disponibles: </span><a href="../en/mod/mpmt_os2.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mpmt_os2.html" title="Français"> fr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>MPM hybride multi-processus, multi-thread pour
OS/2</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>MPM</td></tr>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mpmt_os2">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mpmt_os2">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
+<li><a href="../mpm.html">Modules multi-processus (MPMs)</a></li>
<li><a href="../bind.html">Définition des adresses et ports
qu'utilise Apache</a></li>
</ul></div>
<variants>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
</variants>
</metafile>
<a href="../ja/mod/prefork.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../tr/mod/prefork.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Implémente un serveur web avec démarrage anticipé de
processus, sans thread</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>MPM</td></tr>
assez grande pour pouvoir traiter autant de requêtes simultanées que
vous pensez recevoir, mais assez petite pour conserver suffisamment
de mémoire RAM pour tous les processus.</p>
+
+ <p>Lorsqu’il est construit en tant que module DSO, ce module peut être
+ chargé avec la commande :</p>
+
+ <pre class="prettyprint lang-config">LoadModule mpm_prefork_module modules/mod_mpm_prefork.so</pre>
+
+
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mpm_prefork">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mpm_prefork">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
+<li><a href="../mpm.html">Modules multi-processus(MPMs)</a></li>
<li><a href="../bind.html">Définition des adresses et ports
qu'utilise le serveur HTTP Apache</a></li>
</ul></div>
<variants>
<variant outdated="yes">de</variant>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">tr</variant>
</variants>
<a href="../ja/mod/worker.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../tr/mod/worker.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Module multi-processus implémentant un serveur web hybride
multi-processus multi-thread</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>MPM</td></tr>
ce MPM sont <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>, qui définit le
nombre de threads lancés par chaque processus enfant et <code class="directive"><a href="../mod/mpm_common.html#maxrequestworkers">MaxRequestWorkers</a></code>, qui définit le nombre
global maximum de threads qui peuvent être lancés.</p>
+
+ <p>Lorsqu’il est construit en tant que module DSO, ce module peut être
+ chargé avec la commande :</p>
+
+ <pre class="prettyprint lang-config">LoadModule mpm_worker_module modules/mod_mpm_worker.so</pre>
+
+
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mpm_worker">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mpm_worker">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
+<li><a href="../mpm.html">Modules multi-processus (MPMs)</a></li>
<li><a href="../bind.html">Définition des adresses et ports
qu'utilise le serveur HTTP Apache</a></li>
</ul></div>
<variants>
<variant outdated="yes">de</variant>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">tr</variant>
</variants>
<a href="../fr/platform/netware.html" title="Français"> fr </a> |
<a href="../ko/platform/netware.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
+ <div class="warning">
+ <p>Novell NetWare est en fin de vie et n’est plus pris en charge. Ce
+ document est conservé à titre de référence historique seulement. Les liens
+ vers des ressources de Novell initialement référencées dans ce document ne
+ sont plus fonctionnels.</p>
+ </div>
+
<p>Ce document explique l'installation, la configuration et le
lancement d'Apache 2.0 sous Novell NetWare 6.0 et les versions
ultérieures. Si vous trouvez une bogue, ou voulez tout simplement
notre <a href="http://httpd.apache.org/bug_report.html">page des
rapports de bogues.</a></p>
- <p>La page des rapports de bogues et la liste de diffusion dev-httpd
- ne doivent pas être utilisées pour poser des questions à propos de
- la configuration ou du lancement d'Apache. Avant de soumettre un
- rapport de bogue ou une question, consultez ce document, la <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> ou tout autre sujet de la
- documentation en rapport avec votre problème. Si vous n'avez
- toujours pas résolu votre problème, postez votre question dans le
- newsgroup <a href="news://developer-forums.novell.com/novell.devsup.webserver">
- novell.devsup.webserver</a>, où de nombreux utilisateurs d'Apache
- sont prêts à répondre à toutes les nouvelles et obscures questions à
- propos de l'utilisation d'Apache sous Netware.</p>
+ <p>La page des rapports de bogues et la liste de diffusion dev-httpd ne
+ doivent pas être utilisées pour poser des questions à propos de la
+ configuration ou du lancement d'Apache. Avant de soumettre un rapport de
+ bogue ou une question, consultez ce document, la <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> ou tout
+ autre sujet de la documentation en rapport avec votre problème. Si vous
+ n'avez toujours pas résolu votre problème, postez votre question dans le
+ newsgroup novell.devsup.webserver (par le passé à
+ <code>news://developer-forums.novell.com/novell.devsup.webserver</code>), où
+ de nombreux utilisateurs d'Apache sont prêts à répondre à toutes les
+ nouvelles et obscures questions à propos de l'utilisation d'Apache sous
+ Netware.</p>
<p>Dans la majeure partie de ce document, vous êtes sensé avoir
installé Apache à partir d'une distribution binaire. Si vous voulez
- <p>Apache 2.0 nécessite NetWare 6.0 service pack 3 et supérieurs
- pour fonctionner. Si vous utilisez un service pack antérieur à SP3,
- vous devez installer les dernières <a href="http://developer.novell.com/ndk/libc.htm">Bibliothèques
- Netware pour C (LibC)</a>.</p>
+ <p>Apache 2.0 nécessite NetWare 6.0 service pack 3 et supérieurs pour
+ fonctionner. Si vous utilisez un service pack antérieur à SP3, vous devez
+ installer les dernières bibliothèques Netware pour C (LibC) (par le
+ passé à <code>http://developer.novell.com/ndk/libc.htm</code>).</p>
- <p>Vous trouverez les service packs Netware <a href="http://support.novell.com/misc/patlst.htm#nw">ici</a>.</p>
+ <p>Vous pouviez trouver les services packs Netware à cette adresse : <code>http://support.novell.com/misc/patlst.htm#nw</code>.</p>
- <p>Apache 2.0 pour NetWare peut aussi fonctionner dans un
- environnement NetWare 5.1, à partir du moment où le dernier service
- pack ou la dernière version des <a href="http://developer.novell.com/ndk/libc.htm">Bibliothèques
- Netware pour C (LibC)</a> ont été installés. <strong>ATTENTION
- :</strong> Apache 2.0 pour NetWare n'a pas été testé dans cet
- environnement car il n'a pas été conçu pour ce dernier.</p>
+ <p>Apache 2.0 pour NetWare peut aussi fonctionner dans un environnement
+ NetWare 5.1, à partir du moment où le dernier service pack ou la dernière
+ version des bibliothèques Netware pour C (LibC) (anciennement à
+ <code>http://developer.novell.com/ndk/libc.htm</code>) ont été installés.
+ <strong>ATTENTION :</strong> Apache 2.0 pour NetWare n'a pas été testé dans
+ cet environnement car il n'a pas été conçu pour ce dernier.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
compilation d'Apache pour Netware :</p>
<ul>
- <li>Metrowerks CodeWarrior 6.0 ou supérieur avec le <a href="http://developer.novell.com/ndk/cwpdk.htm">NetWare PDK
- 3.0</a> ou supérieur.</li>
+ <li>Metrowerks CodeWarrior 6.0 ou supérieur avec le NetWare PDK 3.0
+ (anciennement à <code>http://developer.novell.com/ndk/cwpdk.htm</code>)
+ ou supérieur.</li>
- <li>Les <a href="http://developer.novell.com/ndk/libc.htm">Bibliothèques
- Netware pour C (LibC)</a></li>
+ <li>Les bibliothèques Netware pour C (LibC) (anciennement à
+ <code>http://developer.novell.com/ndk/libc.htm</code>)</li>
- <li>Les <a href="http://developer.novell.com/ndk/cldap.htm">Bibliothèques
- LDAP pour C</a></li>
+ <li>Les bibliothèques LDAP pour C (anciennement à
+ <code>http://developer.novell.com/ndk/cldap.htm</code>)</li>
<li>Le <a href="http://www.gzip.org/zlib/">Code source de la
bibliothèque de compression ZLIB</a></li>
- <li>L'utilitaire AWK (awk, gawk ou similaire). AWK peut être
- téléchargé à <a href="http://developer.novell.com/ndk/apache.htm">http://developer.novell.com/ndk/apache.htm</a>.
- L'utilitaire doit se trouver dans votre chemin windows et avoir
- pour nom <code>awk.exe</code>.</li>
+ <li>L'utilitaire AWK (awk, gawk ou similaire). AWK peut être téléchargé
+ à <code>http://developer.novell.com/ndk/apache.htm</code>. L'utilitaire
+ doit se trouver dans votre chemin windows et avoir pour nom
+ <code>awk.exe</code>.</li>
- <li>Pour utiliser les makefiles, vous devez disposer de GNU make
- version 3.78.1 (GMake) disponible à <a href="http://developer.novell.com/ndk/apache.htm">http://developer.novell.com/ndk/apache.htm</a>.</li>
+ <li>Pour utiliser les makefiles, vous devez disposer de GNU make version
+ 3.78.1 (GMake) disponible à
+ <code>http://developer.novell.com/ndk/apache.htm</code>..</li>
</ul>
<variants>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
<variant outdated="yes">ko</variant>
</variants>
</metafile>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1933063:1934664 (outdated) -->
+<!-- English Revision: 1933063:1935424 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<p><span>Langues Disponibles: </span><a href="../en/rewrite/intro.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/rewrite/intro.html" title="Français"> fr </a></p>
</div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
- anglaise pour les changements récents.</div>
<p>Ce document est un complément à la <a href="../mod/mod_rewrite.html">documentation de référence</a> du module
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Il décrit les concepts de base dont la
<li><img alt="" src="../images/down.gif"> <a href="#rewritecond">Conditions de réécriture</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#rewritemap">Tables de réécriture</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#htaccess">Fichiers .htaccess</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#security">Considérations en matière de sécurité</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du
-module mod_rewrite</a></li><li><a href="remapping.html">Redirection and remise en
-correspondance</a></li><li><a href="access.html">Contrôle d'accès</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Mise en cache</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avancées</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
+module mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
+correspondance</a></li><li><a href="htaccess.html">Réécritures par répertoire</a></li><li><a href="flags.html">Drapeaux de RewriteRule</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li><li><a href="tech.html">Détails techniques</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="introduction">Introduction <a title="Lien permanent" href="#introduction" class="permalink">¶</a></h2>
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> est à ce prix car vous verrez alors
exactement comment chaque règle est traitée.</p>
+<p class="figure">
+ <img src="../images/rewrite_simplified_overview.png" alt="Organigramme simplifié du fonctionnement de mod_rewrite : arrivée de la requête, vérification RewriteEngine On, traitement des règles dans l’ordre, test de correspondance du motif et des RewriteCond, application des substitutions si ces deux tests sont positifs, arrêt du traitement des règles si un drapeau L ou END est défini, sinon traitement de la règle suivante"><br>
+ <dfn>Figure :</dfn> Présentation simplifiée de la manière dont
+<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> traite une requête. Voir <a href="tech.html">Détails techniques</a> pour une description complète du
+traitement avec les phases, les drapeaux et le bouclage.
+</p>
+
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="regex">Expressions rationnelles <a title="Lien permanent" href="#regex" class="permalink">¶</a></h2>
-<p>mod_rewrite utilise le vocabulaire des <a href="http://pcre.org/">Expressions rationnelles compatibles Perl</a>.
+<p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> utilise le vocabulaire des <a href="https://www.pcre.org/current/doc/html/pcre2syntax.html">Expressions
+rationnelles compatibles avec Perl</a> à l’aide de la bibliothèque PCRE2.
Ce document n'a pas pour prétention d'être une référence détaillée des
-expressions rationnelles. A cet effet, nous recommandons les <a href="http://pcre.org/pcre.txt">pages de manuel de PCRE</a>, la <a href="http://perldoc.perl.org/perlre.html">page de manuel des
-expressions rationnelles Perl</a>, et l'ouvrage <a href="https://www.oreilly.com/library/view/mastering-regular-expressions/0596528124/">Mastering
+expressions rationnelles. A cet effet, nous recommandons la <a href="https://www.pcre.org/current/doc/html/pcre2syntax.html">documentation de
+PCRE2</a>, la <a href="https://perldoc.perl.org/perlre.html">page de manuel des
+expressions rationnelles de Perl</a>, et l'ouvrage <a href="https://www.oreilly.com/library/view/mastering-regular-expressions/0596528124/">Mastering
Regular Expressions, par Jeffrey Friedl</a> (la troisième édition date
de 2006, mais la syntaxe des expressions rationnelles n'a pas vraiment
changé, et cet ouvrage reste la référence en la matière).</p>
<code>c=t</code> mais pas à <code>c/t</code></td></tr>
</table>
-<p>Avec <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, le caractère <code>!</code> peut
+<p>Le caractère <code>!</code> (Not) peut
préfixer une expression rationnelle afin d'en exprimer la négation.
Autrement dit, une chaîne ne correspondra que si elle ne correspond pas
à l'expression située après le <code>!</code>.</p>
+<p>Notez que lorsqu’on utilise <code>!</code> pour inverser un motif, les <a href="#InternalBackRefs">références arrières</a> (par exemple <code>$1</code>,
+<code>$2</code>) ne sont pas disponibles, car le motif ne correspond plus.</p>
+
+<p>La règle suivante, par exemple, redirige toute requête qui ne commence
+<em>pas</em> par <code>/admin</code></p>
+
+<pre class="prettyprint lang-config">RewriteRule "!^/admin" "/xyz.html" [R,L]</pre>
+
+
<h3 id="InternalBackRefs">Disponibilité des références
arrières dans les expressions rationnelles</h3>
<p>Vous devez vous souvenir d'une chose importante : chaque fois
- que vous utilisez des parenthèses dans un <em>Modèle</em> ou dans
+ que vous utilisez des parenthèses dans un <em>Motif</em> ou dans
un des <em>modèles de conditions</em>, des références arrières
sont créées en interne et peuvent être rappelées via les chaînes
<code>$N</code> et <code>%N</code> (voir ci-dessous). Ces
elles vous paraissent un peu exotiques au premier abord.</p>
<p class="figure">
- <img src="../images/rewrite_backreferences.png" alt="Flux des comparaisons effectuées par les règles RewriteRule et RewriteCond"><br>
+ <img src="../images/rewrite_backreferences.png" alt="Diagramme montrant la manière dont les références arrières circulent entre les RewriteRule et les RewriteCond : $1-$9 capturent des groupes issus des motifs RewriteRule, %1-%9 capturent des groupes issus des motifs des chaînes à tester (ou TestStrings) de RewriteCond, les deux étant disponibles dans les chaînes de substitution et dans les chaînes à tester de RewriteCond subséquentes"><br>
<dfn>Figure 1 :</dfn> Le cheminement d'une référence arrière à
travers une règle.<br>
- Dans cet exemple, une requête pour <code>/test/1234</code> serait
+ Dans cet exemple, une requête pour <code>/test/1234</code> vers l’hôte <code>admin.example.com</code> serait
transformée en
- <code>/admin.foo?page=test&id=1234&host=admin.example.com</code>.
+ <code>/admin.foo?page=test&id=1234&host=admin.example.com</code>,
+ sous réserve que <code>%{DOCUMENT_ROOT}/test</code> ne soit pas un fichier
+ existant.
</p>
+ <p>Voir aussi <a href="tech.html#InternalRuleset">Détails techniques</a>
+ pour un diagramme montrant le cheminement des références arrières avec des
+ conditions multiples.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<p>Une règle de réécriture <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est constituée de trois
arguments séparés par des espaces. Les arguments sont :</p>
<ol>
-<li><var>Modèle</var>: le modèle des URLs auxquelles la règle doit
+<li><var>Motif</var>: le motif des URLs auxquelles la règle doit
s'appliquer;</li>
<li><var>Substitution</var>: vers quoi la requête correspondante doit être
transformée;</li>
<li><var>[drapeaux]</var>: options affectant la requête réécrite.</li>
</ol>
-<p>Le <var>Modèle</var> est une <a href="#regex">expression
-rationnelle</a>. Au sein de la première règle de réécriture, ou jusqu'à
-ce qu'une substitution survienne, elle est comparée au chemin de
-l'URL de la requête entrante (la
-partie située après le nom d'hôte mais avant tout point d'interrogation
-qui indique le début d'une chaîne de paramètres de
-requête) ou, dans un contexte de répertoire, au chemin de la
-requête relativement au répertoire pour lequel la
-règle est définie. Lorsqu'une substitution a eu lieu, les
-règles suivantes effectuent leurs comparaisons par rapport à la valeur
-substituée.</p>
+<p>Le <var>Motif</var> est une <a href="#regex">expression
+rationnelle</a>. Dans un contexte de serveur virtuel ou de serveur global, il
+est comparé au <a href="../directive-dict.html#Syntax">chemin d’URL</a> %-décodé
+de la requête entrante — la partie après le nom d’hôte et le port, en
+excluant la chaîne de paramètres (par exemple <code>/app/index.html</code>).
+Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de répertoire</a>, le motif
+est comparé au chemin de la requête relatif au répertoire pour lequel la règle
+est définie (avec le préfixe de répertoire supprimé — voir <a href="htaccess.html#path-stripping">Réécritures par répertoire</a> pour les
+détails).
+</p>
+
+<p>Lorsqu’une substitution a été effectuée, toute règle qui suit est comparée à
+la valeur substituée.</p>
+
+<p>Le <var>Motif</var> n’est comparé qu’au chemin d’URL — à l’exclusion
+des nom d’hôte, port ou chaîne de paramètres. Pour une comparaison incluant ces
+derniers, utilisez une condition <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> avec les variables
+<code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code> ou
+<code>%{QUERY_STRING}</code>, respectivement.</p>
+
+<div class="note"><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> opère exclusivement sur le chemin d’URL et les
+en-têtes HTTP. Il ne peut pas inspecter le corps de la requête (par exemple, les
+données POST). Si vous devez prendre des décisions de routage en fonction du
+contenu du corps de la requête, traitez le problème à l’aide de la logique de
+votre application ou utilisez un module tel que <code class="module"><a href="../mod/mod_request.html">mod_request</a></code>
+associé à un filtre personnalisé.</div>
<p class="figure">
- <img src="../images/syntax_rewriterule.png" alt="Syntaxe de la directive RewriteRule"><br>
+ <img src="../images/syntax_rewriterule.png" alt="Diagramme annoté pour la syntaxe de la directive RewriteRule montrant trois composants : le motif (une expression rationnelle mise en correspondance avec le chemin d’URL, la substitution (l’URL ou le chemin de remplacement) et des drapeaux facultatifs entourés de crochets"><br>
<dfn>Figure 2 :</dfn> Syntaxe de la directive RewriteRule.
</p>
<p>La chaîne de <var>Substitution</var> peut aussi contenir des
<em>références arrières</em> vers des parties du chemin d'URL entrant
-correspondant au <var>Modèle</var>. Considérons ce qui suit :</p>
+correspondant au <var>Motif</var>. Considérons ce qui suit :</p>
<pre class="prettyprint lang-config">RewriteRule "^/produits/(.*)/view$" "/var/web/produitsdb/$1"</pre>
<p>La variable <code>$1</code> sera remplacée par tout texte
correspondant à l'expression située entre les parenthèses dans le
-<var>Modèle</var>. Par exemple, une requête pour
+<var>Motif</var>. Par exemple, une requête pour
<code>http://example.com/produits/r14df/vue</code> correspondra au
chemin <code>/var/web/produitsdb/r14df</code>.</p>
correspondance est évaluée.</p>
<p class="figure">
- <img src="../images/syntax_rewritecond.png" alt="Syntaxe de la directive RewriteCond"><br>
+ <img src="../images/syntax_rewritecond.png" alt="Diagramme annoté pour la syntaxe de la directive RewriteCond montrant deux composants : la chaîne à tester ou TestString (une variable ou du texte à tester) et le motif de condition ou CondPattern (expression rationnelle ou comparaison à évaluer) avec des drapeaux facultatifs entourés de crochets"><br>
<dfn>Figure 3 :</dfn> Syntaxe de la directive RewriteCond
</p>
<div class="section">
<h2 id="htaccess">Fichiers .htaccess <a title="Lien permanent" href="#htaccess" class="permalink">¶</a></h2>
-<p>La réécriture est en général définie au niveau de la configuration du
-serveur principal (en dehors de toute section <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>) ou dans une section <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>. Il s'agit là de la
-manière la plus simple de mettre en oeuvre la réécriture et nous la
-recommandons. Il est possible, cependant, de mettre en oeuvre la
-réécriture au sein d'une section <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> ou d'un fichier <a href="../howto/htaccess.html"><code>.htaccess</code></a> ; ce type de
-configuration est cependant plus complexe. Cette technique est appelée
-réécriture par répertoire.</p>
-
-<p>La principale différence avec les réécritures au niveau du serveur réside
-dans le fait que le préfixe du chemin du répertoire contenant le fichier
-<code>.htaccess</code> est supprimé avant la mise en correspondance dans
-la règle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>. De
-plus, on doit utiliser la directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> pour s'assurer que la
-requête est correctement mise en correspondance.</p>
+<p>Il est possible d’utiliser des règles de réécriture dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de répertoire</a> (fichiers <a href="../howto/htaccess.html"><code>.htaccess</code></a> et sections <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>), mais dans ce cas, les
+règles se comportent différemment — en particulier, le préfixe du répertoire est
+supprimé de l’URL avant la recherche de correspondance. Voir le document <a href="htaccess.html#path-stripping">Réécritures dans un contexte de
+répertoire</a> pour une explication détaillée. Notez que les sections <code class="directive"><a href="../mod/core.html#if"><If></a></code> et <code class="directive"><a href="../mod/core.html#location"><Location></a></code> adoptent aussi le comportement du contexte
+de répertoire — voir <a href="htaccess.html#context-restrictions">Quels
+contextes prennent en charge les règles de réécriture ?</a>.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="security">Considérations en matière de sécurité <a title="Lien permanent" href="#security" class="permalink">¶</a></h2>
+
+<p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> est un outil de manipulation d’URL puissant,
+mais qui dit puissance dit risque d’erreurs liées à la sécurité. Cette section
+met en lumière les pièges en matière de sécurité courants à éviter lors de
+la rédaction de règles de réécritures.</p>
+
+<h3 id="security-redirect">Redirections ouvertes</h3>
+
+<p>Si une règle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
+construit un URL de redirection en utilisant une entrée utilisateur non validée,
+un attaquant pourra fabriquer un lien qui redirige les visiteurs vers un site
+malveillant semblant provenir de votre domaine. Cette vulnérabilité est connue
+sous le nom de <em>redirection ouverte</em>.</p>
+
+<p>Par exemple, cette règle est dangereuse :</p>
+
+<pre class="prettyprint lang-config"># DANGEREUX - permet une redirection ouverte
+RewriteRule "^/redirect" "%{QUERY_STRING}" [R,L]</pre>
+
+
+<p>Un attaquant pourrait en effet utiliser
+<code>https://yoursite.com/redirect?https://evil.com</code> pour rediriger les
+utilisateurs vers un site malveillant. Assurez vous de toujours valider ou
+contraindre les cibles de redirection. Si la destination doit être sur votre
+propre site, assurez vous que la substitution commence par <code>/</code> (un
+chemin relatif) plutôt que de permettre à l’utilisateur d’entrer un URL complet.</p>
+
+
+
+<h3 id="security-ssrf">Server-Side Request Forgery (SSRF)</h3>
+
+<p>Lorsqu’on utilise la drapeau <a href="flags.html#flag_p">[P] (proxy)</a>,
+<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> fait que le serveur
+effectue une requête HTTP vers l’URL de substitution de la part du client. Si
+une partie de cet URL est dérivée de l’entrée du client — références arrières,
+chaînes de paramètres ou en-têtes — un attaquant pourrait faire que votre
+serveur effectue des requêtes vers des services internes arbitraires ou des
+hôtes externes.</p>
+
+<p>Par exemple :</p>
+
+<pre class="prettyprint lang-config"># DANGEREUX - l’utilisateur contrôle la cible du mandataire
+RewriteCond "%{QUERY_STRING}" "target=(.+)"
+RewriteRule "^/fetch" "http://%1" [P]</pre>
+
+
+<p>Un attaquant pourrait utiliser cette configuration pour tester des services
+réseau internes qui autrement ne seraient pas accessibles depuis l’Internet.
+Utilisez toujours un nom d’hôte fixe dans les cibles de mandataire et limitez
+les références arrières à la partie chemin seulement.</p>
+
+
+
+<h3 id="security-path">Traversée de chemin</h3>
+
+<p>Des règles de réécriture qui associent directement des composants du chemin
+fournis par l’utilisateur au système de fichier ouvrent la voie à des attaques
+de traversée de chemin si l’entrée n’est pas correctement contrainte. Par
+exemple :</p>
+
+<pre class="prettyprint lang-config"># DANGEREUX - permet une traversée de chemin
+RewriteRule "^/files/(.+)" "/var/data/$1" [L]</pre>
+
+
+<p>Une requête pour <code>/files/../../etc/passwd</code> pourrait accéder à des
+fichiers en dehors du répertoire souhaité. Utilisez des motifs restreints dans
+votre règle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> (par exemple
+<code>[a-zA-Z0-9_-]+</code> au lieu de <code>.+</code>), et utilisez les
+protections intégrées d’Apache httpd (restrictions <code class="directive"><a href="../mod/core.html#options">Options</a></code> et <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>) pour une défense en profondeur.</p>
+
+
</div></div>
<div class="bottomlang">
<variants>
<variant>en</variant>
- <variant outdated="yes">fr</variant>
+ <variant>fr</variant>
</variants>
</metafile>
<?xml version="1.0" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1933719:1934664 (outdated) -->
+<!-- English Revision: 1933719:1935431 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->