]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_macro.xml.fr
Fix alignment in a <highlight> block.
[apache] / docs / manual / mod / mod_macro.xml.fr
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1850539 -->
5 <!-- French translation: Fabien Coelho -->
6 <!-- Updated by Lucien Gentis -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <modulesynopsis metafile="mod_macro.xml.meta">
26
27 <name>mod_macro</name>
28 <description>Ce module permet d'utiliser des macros dans les fichiers
29 de configuration Apache.</description>
30 <status>Base</status>
31 <sourcefile>mod_macro.c</sourcefile>
32 <identifier>macro_module</identifier>
33 <compatibility>Disponible à partir de la version 2.4.5 du serveur HTTP Apache</compatibility>
34
35 <summary>
36
37     <p>Ce module permet d'utiliser des macros dans les fichiers de
38     configuration à l'exécution du serveur HTTP Apache afin de faciliter
39     la création de nombreux blocs de configuration similaires. Quand le
40     serveur démarre, les macros sont exécutées avec les paramètres
41     fournis, et le résultat obtenu est traité au même titre que le reste
42     du fichier de configuration.</p>
43
44 </summary>
45
46 <section id="usage"><title>Utilisation</title>    
47 <p>On définit une macro à l'aide des blocs <directive module="mod_macro"
48 type="section">Macro</directive> qui contiennent la portion de votre
49 configuration qui intervient de manière répétitive, y compris les
50 variables pour les parties qui devront être substituées.</p>
51
52 <p>Par exemple, vous pouvez utiliser une macro pour définir un bloc
53 <directive module="core" type="section">VirtualHost</directive>, afin de pouvoir
54 définir de nombreux serveurs virtuels similaires :</p>    
55
56     <highlight language="config">
57 &lt;Macro VHost $name $domain&gt;
58 &lt;VirtualHost *:80&gt;
59     ServerName $domain
60     ServerAlias www.$domain
61
62     DocumentRoot "/var/www/vhosts/$name"
63     ErrorLog "/var/log/httpd/$name.error_log"
64     CustomLog "/var/log/httpd/$name.access_log" combined
65 &lt;/VirtualHost&gt;
66 &lt;/Macro&gt;
67 </highlight>
68
69 <p>Comme les directives de configuration httpd, les noms des macros sont
70 insensibles à la casse, à la différence des variables qui y sont, elles,
71 sensibles.</p>
72
73 <p>Vous pouvez alors invoquer cette macro autant de fois que vous le
74 voulez pour créer des serveurs virtuels </p>
75
76 <highlight language="config">
77 Use VHost example example.com
78 Use VHost myhost hostname.org
79 Use VHost apache apache.org
80
81 UndefMacro VHost
82     </highlight>
83
84 <p>Au démarrage du serveur, chacune de ces invocations
85 <directive module="mod_macro">Use</directive> sera remplacée par une définition de serveur
86 virtuel complète, comme décrit dans la définition de la
87 <directive module="mod_macro" type="section">Macro</directive>.</p>
88
89 <p>La directive <directive module="mod_macro">UndefMacro</directive> permet d'éviter les
90 conflits de définitions qui pourraient provenir de l'utilisation
91 ultérieure de macros contenant les mêmes noms de variables.</p>
92
93 <p>Vous trouverez une version plus élaborée de cet exemple plus loin
94 dans la section Exemples.</p>
95
96 </section>
97
98 <section id="tips"><title>Conseils</title>
99
100 <p>Les noms de paramètres doivent commencer par un sigil tel que
101 <code>$</code>, <code>%</code>, ou <code>@</code>, de façon à ce qu'ils
102 soient clairement identifiables, mais aussi afin de faciliter les
103 interactions avec les autres directives, comme la directive de base
104 <directive module="core">Define</directive>. Dans le cas contraire, vous
105 recevrez un avertissement. En tout état de cause, il est conseillé
106 d'avoir une bonne connaissance globale de la configuration du serveur,
107 afin d'éviter la réutilisation des mêmes variables à différents niveaux,
108 ce qui peut être à l'origine de confusions.</p>
109
110 <p>Les paramètres préfixés par <code>$</code> ou <code>%</code> ne sont
111 pas échappés. Les paramètres préfixés par <code>@</code> sont échappés
112 entre guillemets.</p>
113
114 <p>Evitez de préfixer un paramètre par le nom d'un autre paramètre (par
115 exemple, présence simultanée des paramètres <code>$win</code> et
116 <code>$winter</code>), car ceci peut introduire de la confusion lors de
117 l'évaluation des expressions. Si cela se produit, c'est le nom de
118 paramètre le plus long possible qui sera utilisé.</p>
119
120 <p>Si vous désirez insérer une valeur dans une chaîne, il est conseillé
121 de l'entourer d'accolades afin d'éviter toute confusion :</p>
122
123 <highlight language="config">
124 &lt;Macro DocRoot ${docroot}&gt;
125     DocumentRoot "/var/www/${docroot}/htdocs"
126 &lt;/Macro&gt;
127 </highlight>
128
129 </section>
130
131 <section id="examples">
132 <title>Exemples</title>
133
134 <section>
135 <title>Définition de serveurs virtuels</title>
136
137 <p>Un exemple typique d'utilisation de <module>mod_macro</module> est la
138 création dynamique de serveurs virtuels.</p>
139
140 <highlight language="config">
141 ## Définition d'une macro VHost pour les configurations répétitives
142
143 &lt;Macro VHost $host $port $dir&gt;
144   Listen $port
145   &lt;VirtualHost *:$port&gt;
146
147     ServerName $host
148     DocumentRoot "$dir"
149
150     # Racine des documents publique
151     &lt;Directory "$dir"&gt;
152       Require all granted
153     &lt;/Directory&gt;
154
155     # restriction d'accès au sous-répertoire intranet.
156     &lt;Directory "$dir/intranet"&gt;
157       Require ip 10.0.0.0/8
158     &lt;/Directory&gt;
159   &lt;/VirtualHost&gt;
160 &lt;/Macro&gt;
161
162 ## Utilisation de la macro VHost avec différents arguments.
163
164 Use VHost www.apache.org 80 /vhosts/apache/htdocs
165 Use VHost example.org 8080 /vhosts/example/htdocs
166 Use VHost www.example.fr 1234 /vhosts/example.fr/htdocs
167 </highlight>
168 </section> <!-- Vhosts -->
169
170 <section>
171 <title>Suppression d'une définition de macro</title>
172
173 <p>Il est recommandé de supprimer la définition d'une macro après
174 l'avoir utilisée. Ceci permet d'éviter les confusions au sein d'un
175 fichier de configuration complexe où des conflits entre noms de
176 variables peuvent survenir.</p>
177
178 <highlight language="config">
179 &lt;Macro DirGroup $dir $group&gt;
180   &lt;Directory "$dir"&gt;
181     Require group $group
182   &lt;/Directory&gt;
183 &lt;/Macro&gt;
184
185 Use DirGroup /www/apache/private private
186 Use DirGroup /www/apache/server  admin
187
188 UndefMacro DirGroup
189 </highlight>
190
191 </section> <!-- UndefMacro -->
192
193 </section> <!-- Example -->
194
195 <!-- Macro -->
196 <directivesynopsis type="section">
197 <name>Macro</name>
198 <description>Définition d'une macro dans un fichier de configuration</description>
199 <syntax>
200 &lt;Macro <var>nom</var> [<var>par1</var> .. <var>parN</var>]&gt;
201 ... &lt;/Macro&gt;</syntax>
202 <contextlist>
203 <context>server config</context>
204 <context>virtual host</context>
205 <context>directory</context>
206 </contextlist>
207 <override>All</override>
208
209 <usage>
210     <p>La directive <directive type="section">Macro</directive> permet de définir une macro
211     dans un fichier de configuration Apache. Le premier argument est le nom
212     de la macro, et les arguments suivants sont les paramètres. Il
213     est de bon aloi de préfixer les noms des paramètres d'une macro
214     avec un caractère parmi '<code>$%@</code>', et d'éviter d'en faire
215     de même avec les noms de macros.
216     </p>
217
218     <highlight language="config">
219 &lt;Macro LocalAccessPolicy&gt;
220   Require ip 10.2.16.0/24
221 &lt;/Macro&gt;
222
223 &lt;Macro RestrictedAccessPolicy $ipnumbers&gt;
224    Require ip $ipnumbers
225 &lt;/Macro&gt;
226     </highlight>
227 </usage>
228 </directivesynopsis>
229
230 <!-- Use -->
231 <directivesynopsis>
232 <name>Use</name>
233 <description>Utilisation d'une macro</description>
234 <syntax>Use <var>nom</var> [<var>valeur1</var> ... <var>valeurN</var>]
235 </syntax>
236 <contextlist>
237 <context>server config</context>
238 <context>virtual host</context>
239 <context>directory</context>
240 </contextlist>
241 <override>All</override>
242
243 <usage>
244     <p> La directive <directive>Use</directive> permet d'utiliser une macro.
245     La macro considérée est expansée. Son nombre d'arguments doit être égal au
246     nombre de paramètres précisés dans sa définition. Les valeurs passées en
247     argument sont attribuées aux paramètres correspondants et
248     substituées avant l'interprétation du texte de la macro.</p>
249
250     <highlight language="config">
251 Use LocalAccessPolicy
252 ...
253 Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"
254     </highlight>
255
256     <p>est équivalent, avec les macros définies ci-dessus à :</p>
257
258     <highlight language="config">
259 Require ip 10.2.16.0/24
260 ...
261 Require ip 192.54.172.0/24 192.54.148.0/24
262     </highlight>
263 </usage>
264 </directivesynopsis>
265
266 <!-- UndefMacro -->
267 <directivesynopsis>
268 <name>UndefMacro</name>
269 <description>Supprime une macro</description>
270
271 <syntax>UndefMacro <var>nom</var></syntax>
272 <contextlist>
273 <context>server config</context>
274 <context>virtual host</context>
275 <context>directory</context>
276 </contextlist>
277 <override>All</override>
278
279 <usage>
280     <p>La directive <directive>UndefMacro</directive> annule la définition
281     d'une macro qui doit avoir été définie auparavant.</p>
282
283     <highlight language="config">
284 UndefMacro LocalAccessPolicy
285 UndefMacro RestrictedAccessPolicy
286     </highlight>
287 </usage>
288 </directivesynopsis>
289
290 <!-- MacroIgnoreEmptyArg -->
291 <directivesynopsis>
292 <name>MacroIgnoreEmptyArgs</name>
293 <description>Ignore les avertissements et n'inscrit rien dans le journal à
294 propos des arguments de Macro vides</description>
295
296 <syntax>MacroIgnoreEmptyArgs</syntax>
297 <contextlist>
298 <context>server config</context>
299 <context>virtual host</context>
300 <context>directory</context>
301 </contextlist>
302 <override>All</override>
303
304 </directivesynopsis>
305
306 <!-- MacroIgnoreBadNesting -->
307 <directivesynopsis>
308 <name>MacroIgnoreBadNesting</name>
309 <description>Ignore les avertissements et n'inscrit rien dans le journal à
310 propos d'une imbrication de Macros non conforme</description>
311
312 <syntax>MacroIgnoreBadNesting</syntax>
313 <contextlist>
314 <context>server config</context>
315 <context>virtual host</context>
316 <context>directory</context>
317 </contextlist>
318 <override>All</override>
319
320 </directivesynopsis>
321
322 </modulesynopsis>