Serveur Apache HTTP Version 2.4
apxs
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 fichiers sources ou objets et
peut �tre charg� pendant l'ex�cution du serveur Apache via la
directive LoadModule
du
module mod_so
.
Pour pouvoir utiliser ce m�canisme d'extensions, votre
plate-forme doit supporter la fonctionnalit� DSO, et votre binaire
httpd
Apache doit �tre compil� avec le module
mod_so
. Si ce n'est pas le cas, l'utilitaire
apxs
vous le signalera. Vous pouvez aussi v�rifier
vous-m�me ces pr�requis en ex�cutant manuellement la commande :
$ httpd -l
Le module mod_so
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
apxs
, via le m�canisme DSO :
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/chemin/vers/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /chemin/vers/apache/modules/mod_foo.so
chmod 755 /chemin/vers/apache/modules/mod_foo.so
[activation du module `foo' dans /chemin/vers/apache/etc/apache2.conf]
$ apache2ctl restart
/chemin/vers/apache/sbin/apache2ctl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/chemin/vers/apache/sbin/apache2ctl restart: httpd started
$ _
Les arguments fichiers peuvent correspondre � un
fichier source C (.c), un fichier objet (.o) ou m�me une archive de
biblioth�ques (.a). L'utilitaire apxs
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
-fpic
. Pour les autres compilateurs C, consultez leur
page de manuel, ou v�rifiez les drapeaux qu'apxs
utilise pour compiler les fichiers objets.
Pour plus de d�tails � propos du support DSO dans Apache, lire la
documentation du module mod_so
, ou m�me, consultez
le fichier source src/modules/standard/mod_so.c
.
apxs -g
[ -S nom=valeur ]
-n nom-module
apxs -q
[ -v ]
[ -S nom=valeur ]
requ�te ...
apxs -c
[ -S nom=valeur ]
[ -o fichier-dso ]
[ -I r�pertoire-inc ]
[ -D nom=valeur ]
[ -L r�pertoire-lib ]
[ -l nom-biblioth�que ]
[ -Wc,options-compilation ]
[ -Wl,options-edition-liens ]
fichiers ...
apxs -i
[ -S nom=valeur ]
[ -n nom-module ]
[ -a ]
[ -A ]
fichier-dso ...
apxs -e
[ -S nom=valeur ]
[ -n nom-module ]
[ -a ]
[ -A ]
fichier-dso ...
-n nom-module
-i
(install) et -g
(g�n�ration de
mod�les). Utilisez cette option pour sp�cifier de mani�re
explicite le nom du module. Pour l'option -g
, cette
option est n�cessaire ; pour l'option -i
,
l'utilitaire apxs
tente de d�terminer le nom du
module � partir des sources, ou (� d�faut) en le d�duisant du nom
de fichier.-q
httpd
.
Lorsqu'elle est invoqu�e sans param�tre requ�te, cette
option affiche toutes les variables connues, ainsi que leurs
valeurs. Le param�tre optionnel -v
formate la liste
affich�e.
Utilisez cette option pour d�terminer manuellement les options
utilis�es pour compiler le binaire httpd
qui chargera
votre module. Ajoutez par exemple
INC=-I`apxs -q INCLUDEDIR`
dans vos propres Makefiles si vous devez acc�der manuellement aux fichiers d'en-t�tes C d'Apache.
-S nom=valeur
-g
-n
) contenant deux
fichiers : le premier fichier est un exemple de fichier source de
module nomm� mod_nom.c
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 Makefile
correspondant
facilitant la compilation et l'installation de ce module.-c
-o
n'est pas sp�cifi�e, le nom du fichier r�sultant est d�duit du
premier nom de fichier sp�cifi� par fichiers, et ainsi
prend en g�n�ral pour valeur par d�faut
mod_nom.so
.-o fichier-dso
mod_unknown.so
qui sera utilis�.-D nom=valeur
-I r�pertoire-inc
include
au processus de
compilation.-L r�pertoire-lib
-l nom-biblioth�que
-Wc,options-compilation
libtool
--mode=compile
. Vous pouvez l'utiliser pour ajouter des
options locales sp�cifiques au compilateur.-Wl,options-edition-liens
libtool
--mode=link
. Vous pouvez l'utiliser pour ajouter des
options locales sp�cifiques � l'�diteur de liens.-p
-i
-a
LoadModule
correspondante au fichier de configuration d'Apache
apache2.conf
, ou en l'activant s'il existe d�j�.-A
-a
, � la diff�rence que la
directive LoadModule
cr��e
est pr�fix�e par un caract�re di�se (#
) ; le module
est ainsi pr�par� pour une activation ult�rieure, mais est
d�sactiv� dans un premier temps.-e
-a
et -A
de la m�me mani�re qu'au cours de l'op�ration d'installation pour
�diter le fichier de configuration d'Apache
apache2.conf
, sans toutefois installer le module.Supposons que vous disposiez d'un module Apache nomm�
mod_foo.c
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 :
$ apxs -c mod_foo.c
/chemin/vers/libtool --mode=compile gcc ... -c mod_foo.c
/chemin/vers/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
$ _
Vous devez ensuite v�rifier la configuration d'Apache en vous
assurant qu'une directive LoadModule
est bien pr�sente pour
charger cet objet partag�. Pour simplifier cette �tape,
apxs
propose une m�thode automatique d'installation de
l'objet partag� dans son r�pertoire "modules", et de mise � jour du
fichier apache2.conf
en cons�quence. Pour b�n�ficier de
cette automatisation, utilisez la commande suivante :
$ apxs -i -a mod_foo.la
/chemin/vers/instdso.sh mod_foo.la /chemin/vers/apache/modules
/chemin/vers/libtool --mode=install cp mod_foo.la /chemin/vers/apache/modules
...
chmod 755 /chemin/vers/apache/modules/mod_foo.so
[activation du module `foo' dans /chemin/vers/apache/conf/apache2.conf]
$ _
Une ligne contenant
LoadModule foo_module modules/mod_foo.so
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 -A
comme suit :
$ apxs -i -A mod_foo.c
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 :
$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/modules.mk
Creating [FILE] foo/mod_foo.c
Creating [FILE] foo/.deps
$ _
Vous pouvez ensuite compiler imm�diatement ce module exemple en objet partag� et le charger dans le serveur Apache :
$ cd foo
$ make all reload
apxs -c mod_foo.c
/chemin/vers/libtool --mode=compile gcc ... -c mod_foo.c
/chemin/vers/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/chemin/vers/instdso.sh mod_foo.la /chemin/vers/apache/modules
/chemin/vers/libtool --mode=install cp mod_foo.la /chemin/vers/apache/modules
...
chmod 755 /chemin/vers/apache/modules/mod_foo.so
[activation du module `foo' dans /chemin/vers/apache/conf/apache2.conf]
apache2ctl restart
/chemin/vers/apache/sbin/apache2ctl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/chemin/vers/apache/sbin/apache2ctl restart: httpd started
$ _