Serveur HTTP Apache 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.-qhttpd.
      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-dsomod_unknown.so qui sera utilisé.-D nom=valeur-I répertoire-incinclude au processus de
      compilation.-L répertoire-lib-l nom-bibliothèque-Wc,options-compilationlibtool
      --mode=compile. Vous pouvez l'utiliser pour ajouter des
      options locales spécifiques au compilateur.-Wl,options-edition-lienslibtool
      --mode=link. Vous pouvez l'utiliser pour ajouter des
      options locales spécifiques à l'éditeur de liens.-p-i-aLoadModule
      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
      $ _