1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
|
<?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>apxs - Utilitaire pour les extensions d'Apache - 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.4</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">Programmes</a></div><div id="page-content"><div id="preamble"><h1>apxs - Utilitaire pour les extensions d'Apache</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/programs/apxs.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/programs/apxs.html" title="Français"> fr </a> |
<a href="../ko/programs/apxs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../tr/programs/apxs.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
<p><code>apxs</code> est un utilitaire permettant de compiler et
d'installer des modules en tant qu'extensions du serveur HTTP
Apache. A cet effet, un objet dynamique partagé (DSO) est compilé à
partir d'un ou plusieurs <var>fichiers</var> sources ou objets et
peut être chargé pendant l'exécution du serveur Apache via la
directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> du
module <code class="module"><a href="../mod/mod_so.html">mod_so</a></code>.</p>
<p>Pour pouvoir utiliser ce mécanisme d'extensions, votre
plate-forme doit supporter la fonctionnalité DSO, et votre binaire
<code class="program"><a href="../programs/httpd.html">httpd</a></code> Apache doit être compilé avec le module
<code class="module"><a href="../mod/mod_so.html">mod_so</a></code>. Si ce n'est pas le cas, l'utilitaire
<code>apxs</code> vous le signalera. Vous pouvez aussi vérifier
vous-même ces prérequis en exécutant manuellement la commande :</p>
<div class="example"><p><code>
$ httpd -l
</code></p></div>
<p>Le module <code class="module"><a href="../mod/mod_so.html">mod_so</a></code> doit faire partie de la liste
des modules affichée. Si ces prérequis sont présents, vous pouvez
facilement étendre les fonctionnalités de votre serveur Apache en
installant vos propres modules à l'aide de l'utilitaire
<code>apxs</code>, via le mécanisme DSO :</p>
<div class="example"><p><code>
$ apxs -i -a -c mod_foo.c<br />
gcc -fpic -DSHARED_MODULE -I/chemin/vers/apache/include -c mod_foo.c<br />
ld -Bshareable -o mod_foo.so mod_foo.o<br />
cp mod_foo.so /chemin/vers/apache/modules/mod_foo.so<br />
chmod 755 /chemin/vers/apache/modules/mod_foo.so<br />
[activation du module `foo' dans /chemin/vers/apache/etc/httpd.conf]<br />
$ apachectl restart<br />
/chemin/vers/apache/sbin/apachectl restart: httpd not running, trying to start<br />
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
/chemin/vers/apache/sbin/apachectl restart: httpd started<br />
$ _
</code></p></div>
<p>Les arguments <var>fichiers</var> peuvent correspondre à un
fichier source C (.c), un fichier objet (.o) ou même une archive de
bibliothèques (.a). L'utilitaire <code>apxs</code> reconnaît
automatiquement ces extensions et utilise automatiquement les
fichiers source C pour la compilation, et les fichiers objets et
archives pour l'édition de liens. Cependant, si vous utilisez des
fichiers objets précompilés, assurez-vous que leur code soit
indépendant de la position (PIC), afin de pouvoir les utiliser avec
un objet partagé chargé dynamiquement. Avec GCC, par exemple, il
vous suffit de toujours utiliser l'option de compilation
<code>-fpic</code>. Pour les autres compilateurs C, consultez leur
page de manuel, ou vérifiez les drapeaux qu'<code>apxs</code>
utilise pour compiler les fichiers objets.</p>
<p>Pour plus de détails à propos du support DSO dans Apache, lire la
documentation du module <code class="module"><a href="../mod/mod_so.html">mod_so</a></code>, ou même, consultez
le fichier source <code>src/modules/standard/mod_so.c</code>.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Syntaxe</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Options</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></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="synopsis" id="synopsis">Syntaxe</a></h2>
<p><code><strong>apxs</strong> -<strong>g</strong>
[ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
-<strong>n</strong> <var>nom-module</var></code></p>
<p><code><strong>apxs</strong> -<strong>q</strong>
[ -<strong>v</strong> ]
[ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
<var>requête</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>c</strong>
[ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
[ -<strong>o</strong> <var>fichier-dso</var> ]
[ -<strong>I</strong> <var>répertoire-inc</var> ]
[ -<strong>D</strong> <var>nom</var>=<var>valeur</var> ]
[ -<strong>L</strong> <var>répertoire-lib</var> ]
[ -<strong>l</strong> <var>nom-bibliothèque</var> ]
[ -<strong>Wc,</strong><var>options-compilation</var> ]
[ -<strong>Wl,</strong><var>options-edition-liens</var> ]
<var>fichiers</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>i</strong>
[ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
[ -<strong>n</strong> <var>nom-module</var> ]
[ -<strong>a</strong> ]
[ -<strong>A</strong> ]
<var>fichier-dso</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>e</strong>
[ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
[ -<strong>n</strong> <var>nom-module</var> ]
[ -<strong>a</strong> ]
[ -<strong>A</strong> ]
<var>fichier-dso</var> ...</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="options" id="options">Options</a></h2>
<h3><a name="options.common" id="options.common">Options courantes</a></h3>
<dl>
<dt><code>-n <var>nom-module</var></code></dt>
<dd>Définit explicitement le nom du module pour les options
<code>-i</code> (install) et <code>-g</code> (génération de
modèles). Utilisez cette option pour spécifier de manière
explicite le nom du module. Pour l'option <code>-g</code>, cette
option est nécessaire ; pour l'option <code>-i</code>,
l'utilitaire <code>apxs</code> tente de déterminer le nom du
module à partir des sources, ou (à défaut) en le déduisant du nom
de fichier.</dd>
</dl>
<h3><a name="options.query" id="options.query">Options de requête</a></h3>
<dl>
<dt><code>-q</code></dt>
<dd>Effectue une requête à propos des variables et de
l'environnement utilisés pour compiler <code>httpd</code>.
Lorsqu'elle est invoquée sans paramètre <var>requête</var>, cette
option affiche toutes les variables connues, ainsi que leurs
valeurs. Le paramètre optionnel <code>-v</code> formate la liste
affichée.
<p>Utilisez cette option pour déterminer manuellement les options
utilisées pour compiler le binaire <code>httpd</code> qui chargera
votre module. Ajoutez par exemple</p>
<div class="example"><p><code>
INC=-I`apxs -q INCLUDEDIR`
</code></p></div>
<p>dans vos propres Makefiles si vous devez accéder manuellement
aux fichiers d'en-têtes C d'Apache.</p></dd>
</dl>
<h3><a name="options.conf" id="options.conf">Options de configuration</a></h3>
<dl>
<dt><code>-S <var>nom</var>=<var>valeur</var></code></dt>
<dd>Cette option permet de modifier la configuration d'apxs
décrite ci-dessus.</dd>
</dl>
<h3><a name="options.template" id="options.template">Option de génération des
modèles</a></h3>
<dl>
<dt><code>-g</code></dt>
<dd>Cette option permet de générer un sous-répertoire
<var>nom</var> (voir option <code>-n</code>) contenant deux
fichiers : le premier fichier est un exemple de fichier source de
module nommé <code>mod_<var>nom</var>.c</code> que l'on peut
utiliser comme modèle pour créer ses propres modules, ou comme
point de départ pour se familiariser avec le mécanisme apxs ; le
second fichier est le <code>Makefile</code> correspondant
facilitant la compilation et l'installation de ce module.</dd>
</dl>
<h3><a name="options.dso" id="options.dso">Options de compilation DSO</a></h3>
<dl>
<dt><code>-c</code></dt>
<dd>Cette option indique une opération de compilation. Tout
d'abord, les fichiers sources (.c) spécifiés par
<var>fichiers</var> sont compilés en fichiers objets
correspondants (.o), puis un objet dynamiquement partagé
<var>fichier-dso</var> est compilé via une édition de liens de ces
fichiers objets avec les autres fichiers objets (.o and .a)
spécifiés par <var>fichiers</var>. Si l'option <code>-o</code>
n'est pas spécifiée, le nom du fichier résultant est déduit du
premier nom de fichier spécifié par <var>fichiers</var>, et ainsi
prend en général pour valeur par défaut
<code>mod_<var>nom</var>.so</code>.</dd>
<dt><code>-o <var>fichier-dso</var></code></dt>
<dd>Spécifie de manière explicite le nom de fichier de l'objet
partagé dynamiquement créé. Sans cette option, et si le nom ne
peut pas être déduit de la liste <var>fichiers</var>, c'est le nom
par défaut <code>mod_unknown.so</code> qui sera utilisé.</dd>
<dt><code>-D <var>nom</var>=<var>valeur</var></code></dt>
<dd>Cette option est transmise directement à la commande de
compilation. Vous pouvez l'utiliser pour ajouter vos propres
définitions au processus de compilation. </dd>
<dt><code>-I <var>répertoire-inc</var></code></dt>
<dd>Cette option est transmise directement à la commande de
compilation. Vous pouvez l'utiliser pour ajouter vos propres
chemins de recherche des répertoires <code>include</code> au processus de
compilation.</dd>
<dt><code>-L <var>répertoire-lib</var></code></dt>
<dd>Cette option est transmise directement à la commande d'édition
de liens. Vous pouvez l'utiliser pour ajouter vos propres
chemins de recherche des répertoires de bibliothèques au processus
de compilation.</dd>
<dt><code>-l <var>nom-bibliothèque</var></code></dt>
<dd>Cette option est transmise directement à la commande d'édition
de liens. Vous pouvez l'utiliser pour ajouter vos propres
bibliothèques à rechercher au processus de compilation.</dd>
<dt><code>-Wc,<var>options-compilation</var></code></dt>
<dd>Cette option transmet les <var>options-compilation</var> en
tant qu'options supplémentaires à la commande <code>libtool
--mode=compile</code>. Vous pouvez l'utiliser pour ajouter des
options locales spécifiques au compilateur.</dd>
<dt><code>-Wl,<var>options-edition-liens</var></code></dt>
<dd>Cette option transmet les <var>options-edition-liens</var> en
tant qu'options supplémentaires à la commande <code>libtool
--mode=link</code>. Vous pouvez l'utiliser pour ajouter des
options locales spécifiques à l'éditeur de liens.</dd>
</dl>
<h3><a name="options.dsoinstall" id="options.dsoinstall">Options d'installation et de configuration DSO</a></h3>
<dl>
<dt><code>-i</code></dt>
<dd>Cette option indique une opération d'installation et installe
un ou plusieurs objets dynamiquement partagés dans le répertoire
<var>modules</var> du serveur.</dd>
<dt><code>-a</code></dt>
<dd>Cette option active le module en ajoutant automatiquement une
directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
correspondante au fichier de configuration d'Apache
<code>httpd.conf</code>, ou en l'activant s'il existe déjà.</dd>
<dt><code>-A</code></dt>
<dd>Identique à l'option <code>-a</code>, à la différence que la
directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> créée
est préfixée par un caractère dièse (<code>#</code>) ; le module
est ainsi préparé pour une activation ultérieure, mais est
désactivé dans un premier temps.</dd>
<dt><code>-e</code></dt>
<dd>Cette option indique une opération d'édition de liens et peut
être utilisée avec les options <code>-a</code> et <code>-A</code>
de la même manière qu'au cours de l'opération d'installation pour
éditer le fichier de configuration d'Apache
<code>httpd.conf</code>, sans toutefois installer le module.</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Exemples</a></h2>
<p>Supposons que vous disposiez d'un module Apache nommé
<code>mod_foo.c</code> et destiné à étendre les fonctionnalités du
serveur. Pour ce faire, vous devez tout d'abord compiler le fichier
source C en un objet partagé pouvant être chargé dans le serveur
Apache à l'exécution, via la commande suivante :</p>
<div class="example"><p><code>
$ apxs -c mod_foo.c<br />
/chemin/vers/libtool --mode=compile gcc ... -c mod_foo.c<br />
/chemin/vers/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
$ _
</code></p></div>
<p>Vous devez ensuite vérifier la configuration d'Apache en vous
assurant qu'une directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> est bien présente pour
charger cet objet partagé. Pour simplifier cette étape,
<code>apxs</code> propose une méthode automatique d'installation de
l'objet partagé dans son répertoire "modules", et de mise à jour du
fichier <code>httpd.conf</code> en conséquence. Pour bénéficier de
cette automatisation, utilisez la commande suivante :</p>
<div class="example"><p><code>
$ apxs -i -a mod_foo.la<br />
/chemin/vers/instdso.sh mod_foo.la /chemin/vers/apache/modules<br />
/chemin/vers/libtool --mode=install cp mod_foo.la /chemin/vers/apache/modules
...
chmod 755 /chemin/vers/apache/modules/mod_foo.so<br />
[activation du module `foo' dans /chemin/vers/apache/conf/httpd.conf]<br />
$ _
</code></p></div>
<p>Une ligne contenant</p>
<div class="example"><p><code>
LoadModule foo_module modules/mod_foo.so
</code></p></div>
<p>est alors ajoutée au fichier de configuration si ce n'est pas
déjà fait. Si vous voulez que le module soit désactivé par défaut,
utilisez l'option <code>-A</code> comme suit :</p>
<div class="example"><p><code>
$ apxs -i -A mod_foo.c
</code></p></div>
<p>Pour un test rapide du mécanisme apxs, vous pouvez créer un
exemple de modèle de module Apache, ainsi que le Makefile
correspondant via :</p>
<div class="example"><p><code>
$ apxs -g -n foo<br />
Creating [DIR] foo<br />
Creating [FILE] foo/Makefile<br />
Creating [FILE] foo/modules.mk<br />
Creating [FILE] foo/mod_foo.c<br />
Creating [FILE] foo/.deps<br />
$ _
</code></p></div>
<p>Vous pouvez ensuite compiler immédiatement ce module exemple en
objet partagé et le charger dans le serveur Apache :</p>
<div class="example"><p><code>
$ cd foo<br />
$ make all reload<br />
apxs -c mod_foo.c<br />
/chemin/vers/libtool --mode=compile gcc ... -c mod_foo.c<br />
/chemin/vers/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
apxs -i -a -n "foo" mod_foo.la<br />
/chemin/vers/instdso.sh mod_foo.la /chemin/vers/apache/modules<br />
/chemin/vers/libtool --mode=install cp mod_foo.la /chemin/vers/apache/modules
...
chmod 755 /chemin/vers/apache/modules/mod_foo.so<br />
[activation du module `foo' dans /chemin/vers/apache/conf/httpd.conf]<br />
apachectl restart<br />
/chemin/vers/apache/sbin/apachectl restart: httpd not running, trying to start<br />
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
/chemin/vers/apache/sbin/apachectl restart: httpd started<br />
$ _
</code></p></div>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/programs/apxs.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/programs/apxs.html" title="Français"> fr </a> |
<a href="../ko/programs/apxs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../tr/programs/apxs.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/programs/apxs.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2013 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>
|