mass.html.fr revision fe2be2903c65e2f99f04199655ea5f97a75825d0
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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><!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>H�bergement virtuel de masse configur� dynamiquement - Serveur Apache HTTP</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.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/directives.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 Apache HTTP Version 2.5</p>
<img alt="" src="/images/feather.gif" /></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="./">H�bergement virtuel</a></div><div id="page-content"><div id="preamble"><h1>H�bergement virtuel de masse configur� dynamiquement</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="/fr/vhosts/mass.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="/tr/vhosts/mass.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</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 propose une m�thode performante pour servir un nombre
quelconque d'h�tes virtuels avec le serveur HTTP Apache. Un <a href="/rewrite/vhosts.html">document s�par�</a> d�crit comment
utiliser <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> pour g�rer l'h�bergement
virtuel de masse dynamique.
</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#motivation">A qui ce document est-il destin� ?</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#overview">Vue d'ensemble</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#simple">H�bergement virtuel
dynamique avec mod_vhost_alias</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#homepages">Syst�me de serveurs virtuels dynamiques
simplifi�</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#combinations">Utiliser plusieurs syst�mes
d'h�bergement virtuel sur le m�me serveur</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#ipbased">Pour un h�bergement virtuel par IP plus
efficace</a></li>
<li><img alt="" src="/images/down.gif" /> <a href="#rewrite">H�bergement virtuel de masse avec
mod_rewrite</a></li>
</ul><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="motivation" id="motivation">A qui ce document est-il destin� ?</a></h2>
<p>Les techniques d�crites ici vous concernent si votre
<code>httpd.conf</code> contient de nombreuses sections
<code>&lt;VirtualHost&gt;</code> tr�s semblables,
dans le style :</p>
<div class="example"><pre>
&lt;VirtualHost 111.22.33.44&gt;
ServerName customer-1.example.com
DocumentRoot /www/hosts/customer-1.example.com/docs
ScriptAlias /cgi-bin/ /www/hosts/customer-1.example.com/cgi-bin
&lt;/VirtualHost&gt;
&lt;VirtualHost 111.22.33.44&gt;
ServerName customer-2.example.com
DocumentRoot /www/hosts/customer-2.example.com/docs
ScriptAlias /cgi-bin/ /www/hosts/customer-2.example.com/cgi-bin
&lt;/VirtualHost&gt;
&lt;VirtualHost 111.22.33.44&gt;
ServerName customer-N.example.com
DocumentRoot /www/hosts/customer-N.example.com/docs
ScriptAlias /cgi-bin/ /www/hosts/customer-N.example.com/cgi-bin
&lt;/VirtualHost&gt;
</pre></div>
<p>Nous voulons remplacer toutes les configurations
<code>&lt;VirtualHost&gt;</code> par un m�canisme qui les g�n�re
dynamiquement. Ceci pr�sente certains avantages :</p>
<ol>
<li>Votre fichier de configuration est plus petit, ainsi Apache
d�marre plus rapidement et consomme moins de m�moire. Et ce qui
est peut-�tre le plus important, le fichier de configuration plus
petit est plus facile � maintenir, et le risque d'erreurs en est
diminu� d'autant.
</li>
<li>Pour ajouter des serveurs virtuels, il suffit de cr�er les
r�pertoires appropri�s dans le syst�me de fichiers et les entr�es
dans le DNS - il n'est plus n�cessaire de reconfigurer ou de
red�marrer Apache.</li>
</ol>
<p>Le principal d�savantage r�side dans le fait que vous ne pouvez
pas d�finir un fichier journal diff�rent pour chaque serveur
virtuel. De toute fa�on, ce serait une mauvaise id�e si vous avez de
nombreux serveurs virtuels, car cela n�cessiterait un <a href="fd-limits.html">nombre important de descripteurs de
fichier</a>. Il est pr�f�rable de rediriger <a href="/logs.html#piped">les journaux via un pipe ou
une file fifo</a> vers un
programme, et faire en sorte que ce dernier �clate les journaux
en un journal par serveur virtuel. L'utilitaire <a href="/programs/other.html#split-logfile">split-logfile</a>
constitue un exemple de ce traitement.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="overview" id="overview">Vue d'ensemble</a></h2>
<p>Un serveur virtuel peut �tre d�fini par deux informations : son
adresse IP, et le contenu de l'en-t�te <code>Host:</code> de la
requ�te HTTP. La technique d'h�bergement virtuel dynamique de masse
utilis�e ici consiste � ins�rer automatiquement ces informations
dans le chemin du fichier � utiliser pour r�pondre � la requ�te. On
peut y parvenir assez facilement en utilisant
<code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> avec Apache httpd, mais on peut aussi
<a href="/rewrite/vhosts.html">utiliser mod_rewrite</a>. </p>
<p>Par d�faut, ces deux modules
sont d�sactiv�s ; vous devez activer l'un d'eux lors de la
compilation et de la configuration d'Apache httpd si vous voulez utiliser
cette technique.</p>
<p>Certains param�tres doivent �tre extraits de la requ�te pour que le serveur
dynamique se pr�sente comme un serveur dynamique normal. Le plus
important est le nom du serveur, que le serveur utilise pour g�n�rer des
URLs d'auto-r�f�rencement, etc... Il est d�fini via la directive
<code>ServerName</code>, et les CGIs peuvent s'y r�f�rer via la
variable d'environnement <code>SERVER_NAME</code>. Sa v�ritable
valeur utilis�e � l'ex�cution est contr�l�e par la d�finition de la
directive
<code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code>. Avec
<code>UseCanonicalName Off</code>, le nom du serveur correspond au
contenu de l'en-t�te <code>Host:</code> de la requ�te. Avec
<code>UseCanonicalName DNS</code>, il est extrait d'une recherche
DNS inverse sur l'adresse IP du serveur virtuel. La premi�re
configuration est utilis�e pour l'h�bergement virtuel dynamique par
nom, et la deuxi�me pour l'h�bergement virtuel dynamique par IP. Si
httpd ne peut pas d�terminer le nom du serveur, soit parce qu'il
n'y a pas d'en-t�te <code>Host:</code>, soit parce que la recherche
DNS a �chou�, il prend en compte la valeur d�finie par la directive
<code>ServerName</code>.</p>
<p>L'autre param�tre � extraire est la racine des documents (d�finie
via la directive <code>DocumentRoot</code> et disponible pour les
scripts CGI via la variable d'environnement <code>DOCUMENT_ROOT</code>).
Dans une configuration classique, il est utilis� par le module core
pour faire correspondre les URIs aux noms de fichiers, mais lorsque
la configuration du serveur comporte des serveurs virtuels, ce
traitement doit �tre pris en charge par un autre module (soit
<code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>, soit <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>), qui
utilise un m�thode de correspondance diff�rente. Aucun de ces
modules ne se chargeant de d�finir la variable d'environnement
<code>DOCUMENT_ROOT</code>, si des CGIs ou des documents SSI
doivent en faire usage, ils obtiendront une valeur erron�e.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="simple" id="simple">H�bergement virtuel
dynamique avec mod_vhost_alias</a></h2>
<p>Cet extrait de fichier <code>httpd.conf</code> impl�mente
l'h�bergement virtuel d�crit dans la section <a href="#motivation">� qui ce document est-il destin� ?</a> ci-dessus
en utilisant <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>.</p>
<div class="example"><p><code>
# extrait le nom du serveur de l'en-t�te Host:<br />
UseCanonicalName Off<br />
<br />
# ce format de journal peut �tre �clat� en journaux par serveur virtuel
# � l'aide du premier champ via l'utilitaire split-logfile<br />
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
CustomLog logs/access_log vcommon<br />
<br />
# inclut le nom du serveur dans les noms de fichiers ressources
# n�cessaires aux traitements des requ�tes<br />
VirtualDocumentRoot /www/hosts/%0/docs<br />
VirtualScriptAlias /www/hosts/%0/cgi-bin
</code></p></div>
<p>Pour changer cette configuration en solution de serveur virtuel
par IP, il suffit de remplacer <code>UseCanonicalName
Off</code> par <code>UseCanonicalName DNS</code>. Le nom du serveur
ins�r� dans le nom de fichier sera alors d�duit de l'adresse IP du
serveur virtuel. La variable <code>%0</code> fait r�f�rence au nom
de serveur de la requ�te, tel qu'il est indiqu� dans l'en-t�te
<code>Host:</code>.</p>
<p>Voir la documentation du module <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>
pour d'avantages d'exemples d'utilisation.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="homepages" id="homepages">Syst�me de serveurs virtuels dynamiques
simplifi�</a></h2>
<p>Il s'agit d'une adaptation du syst�me ci-dessus, ajust� pour un
serveur d'h�bergement web de FAI. Gr�ce � la variable
<code>%2</code>, on peut extraire des sous-cha�nes de caract�res du
nom du serveur pour les utiliser dans le nom de fichier afin, par
exemple, de d�finir <code>/home/user/www</code> comme emplacement des
documents pour <code>www.user.example.com</code>. Un seul r�pertoire
<code>cgi-bin</code> suffit pour l'ensemble des
serveurs virtuels.</p>
<div class="example"><p><code>
UseCanonicalName Off<br />
<br />
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
CustomLog logs/access_log vcommon<br />
<br />
# insertion d'une partie du nom du serveur dans les noms de fichiers<br />
VirtualDocumentRoot /home/%2/www<br />
<br />
# r�pertoire cgi-bin unique<br />
ScriptAlias /cgi-bin/ /www/std-cgi/<br />
</code></p></div>
<p>Vous trouverez des exemples plus �labor�s d'utilisation de la
directive <code>VirtualDocumentRoot</code> dans la documentation du
module <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="combinations" id="combinations">Utiliser plusieurs syst�mes
d'h�bergement virtuel sur le m�me serveur</a></h2>
<p>Moyennant une configuration un peu plus compliqu�e, vous pouvez
contr�ler la port�e des diff�rentes configurations d'h�bergement
virtuel � l'aide des directives <code>&lt;VirtualHost&gt;</code>
normales de httpd. Par exemple, on peut associer une adresse IP pour
les pages d'accueil des clients en g�n�ral, et une autre pour les
clients commerciaux avec la configuration suivante. Cette
configuration peut �tre combin�e avec les sections
<code>&lt;VirtualHost&gt;</code> conventionnelles, comme indiqu�
plus loin.</p>
<div class="example"><p><code>
UseCanonicalName Off<br />
<br />
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
<br />
&lt;Directory /www/commercial&gt;<br />
<span class="indent">
Options FollowSymLinks<br />
AllowOverride All<br />
</span>
&lt;/Directory&gt;<br />
<br />
&lt;Directory /www/homepages&gt;<br />
<span class="indent">
Options FollowSymLinks<br />
AllowOverride None<br />
</span>
&lt;/Directory&gt;<br />
<br />
&lt;VirtualHost 111.22.33.44&gt;<br />
<span class="indent">
ServerName www.commercial.example.com<br />
<br />
CustomLog logs/access_log.commercial vcommon<br />
<br />
VirtualDocumentRoot /www/commercial/%0/docs<br />
VirtualScriptAlias /www/commercial/%0/cgi-bin<br />
</span>
&lt;/VirtualHost&gt;<br />
<br />
&lt;VirtualHost 111.22.33.45&gt;<br />
<span class="indent">
ServerName www.homepages.example.com<br />
<br />
CustomLog logs/access_log.homepages vcommon<br />
<br />
VirtualDocumentRoot /www/homepages/%0/docs<br />
ScriptAlias /cgi-bin/ /www/std-cgi/<br />
</span>
&lt;/VirtualHost&gt;
</code></p></div>
<div class="note">
<h3>Note</h3>
<p>Si le premier bloc VirtualHost ne comporte <em>pas</em> de
directive <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code>, c'est
le nom issu d'une recherche DNS inverse � partir de l'adresse IP
du serveur virtuel qui sera utilis�. Si ce nom ne correspond pas
� celui que vous voulez utiliser, vous pouvez ajouter une entr�e
de remplacement (par exemple <code>ServerName
none.example.com</code>) pour �viter ce comportement.</p>
</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="ipbased" id="ipbased">Pour un h�bergement virtuel par IP plus
efficace</a></h2>
<p>Les changements de configuration sugg�r�s pour transformer <a href="#simple">le premier exemple</a> en h�bergement virtuel par IP
conduisent � une configuration peu efficace. Chaque requ�te
n�cessite une nouvelle recherche DNS. Pour �viter cette surcharge de
travail, le syst�me de fichiers peut �tre organis� pour correspondre
aux adresses IP, plut�t qu'aux noms de serveurs, supprimant par
la-m�me la n�cessit� d'une recherche DNS. La journalisation doit
aussi �tre adapt�e pour fonctionner sur un tel syst�me.</p>
<div class="example"><p><code>
# obtention du nom du serveur par recherche DNS inverse
# sur l'adresse IP<br />
UseCanonicalName DNS<br />
<br />
# insertion de l'adresse IP dans les journaux afin de pouvoir les
# �clater<br />
LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon<br />
CustomLog logs/access_log vcommon<br />
<br />
# insertion de l'adresse IP dans les noms de fichiers<br />
VirtualDocumentRootIP /www/hosts/%0/docs<br />
VirtualScriptAliasIP /www/hosts/%0/cgi-bin<br />
</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="rewrite" id="rewrite">H�bergement virtuel de masse avec
mod_rewrite</a></h2>
<p>
L'h�bergement virtuel de masse peut aussi �tre effectu� en utilisant
<code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>, soit � l'aide de simples directives <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>, soit en utilisant des
techniques plus compliqu�es comme le stockage externe des d�finitions
des serveurs virtuels, ces derni�res �tant accessibles via des
directives <code class="directive"><a href="/mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>. Ces
techniques sont d�crites dans la <a href="/rewrite/vhosts.html">documentation sur la r��criture</a>.</p>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="/fr/vhosts/mass.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="/tr/vhosts/mass.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&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>This section is experimental!</strong><br />Comments placed here should not be expected
to last beyond the testing phase of this system, nor do we in any way guarantee that we'll read them.</div>
<div id="disqus_thread">
</div><script type="text/javascript"><!--//--><![CDATA[//><!--
var lang = 'fr';
var disqus_shortname = 'httpd';
var disqus_identifier = window.location.href.replace(/(current|trunk)/, "2.4").replace(/\/[a-z]{2}\//, "/").replace(window.location.protocol, "http:") + '.' + lang;
if (disqus_identifier.indexOf("httpd.apache.org") != -1) {
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = window.location.protocol + '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
} else {
var text = document.createTextNode("Comments have been disabled for offline viewing.");
document.getElementById('disqus_thread').appendChild(text);
}
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2012 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/directives.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>