apxs - Referenzhandbuch, Optionen, Befehlsbeispiele


\$1

\$1

NAME

apxs - APache-Erweiterungstool

ZUSAMMENFASSUNG

apxs -g [ -S name=value ] -n modname

apxs -q [ -v ] [ -S name=value ] query ...

apxs -c [ -S name=value ] [ -o dsofile ] [ -I incdir ] [ -D name=value ] [ -L libdir ] [ -l libname ] [ -Wc,compiler-flags ] [ -Wl,linker-flags ] files ...

apxs -i [ -S name=value ] [ -n modname ] [ -a ] [ -A ] dso-file ...

apxs -e [ -S name=value ] [ -n modname ] [ -a ] [ -A ] dso-file ...

ZUSAMMENFASSUNG

apxs ist ein Tool zum Erstellen und Installieren von Erweiterungsmodulen für den Apache HyperText Transfer Protocol (HTTP)-Server. Dies wird erreicht, indem ein dynamisches gemeinsames Objekt (DSO) aus einer oder mehreren Quell- oder Objekt-Dateien erstellt wird, das dann zur Laufzeit über die LoadModule-Direktive von mod_so in den Apache-Server geladen werden kann.

Um diesen Erweiterungsmechanismus nutzen zu können, muss Ihre Plattform die DSO-Funktion unterstützen und Ihre Apache-httpd-Binärdatei muss mit dem mod_so-Modul erstellt werden. Ist dies nicht der Fall, meldet sich das apxs-Tool automatisch. Sie können dies selbst überprüfen, indem Sie den Befehl manuell ausführen


      $ httpd -l
    

Das Modul mod_so sollte Teil der angezeigten Liste sein. Wenn diese Voraussetzungen erfüllt sind, können Sie die Funktionalität Ihres Apache-Servers ganz einfach erweitern, indem Sie mithilfe dieses apxs-Tools Ihre eigenen Module mit dem DSO-Mechanismus installieren:


      $ apxs -i -a -c mod_foo.c
      gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
      ld -Bshareable -o mod_foo.so mod_foo.o
      cp mod_foo.so /path/to/apache/modules/mod_foo.so
      chmod 755 /path/to/apache/modules/mod_foo.so
      [activating module `foo' in /path/to/apache/etc/httpd.conf]
      $ apachectl restart
      /path/to/apache/sbin/apachectl restart: httpd not running, trying to start
      [Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
      /path/to/apache/sbin/apachectl restart: httpd started
      $ _
    

Die Argumente files können eine beliebige C-Quelldatei (.c), eine Objektdatei (.o) oder sogar ein Bibliotheksarchiv (.a) sein. Das apxs-Tool erkennt diese Erweiterungen automatisch und verwendet automatisch die C-Quelldateien für die Kompilierung, während für die Verknüpfungsphase lediglich die Objekt- und Archivdateien verwendet werden. Wenn Sie solche vorkompilierten Objekte verwenden, stellen Sie jedoch sicher, dass sie für positionsunabhängigen Code (PIC) kompiliert sind, damit Sie sie für ein dynamisch geladenes gemeinsames Objekt verwenden können. Beispielsweise müssen Sie bei GCC immer nur -fpic verwenden. Für andere C-Compiler konsultieren Sie die Handbuchseite oder achten Sie auf die Flags, die apxs zum Kompilieren der Objektdateien verwendet.

Weitere Informationen zur DSO-Unterstützung in Apache finden Sie in der Dokumentation von mod_so oder vielleicht sogar in der Quelldatei src/modules/standard/mod_so.c.

OPTIONEN

Allgemeine Optionen

-n modname

Dadurch wird der Modulname explizit für die Optionen -i (Installation) und -g (Vorlagengenerierung) festgelegt. Verwenden Sie dies, um den Modulnamen explizit anzugeben. Für die Option -g ist dies erforderlich, für die Option -i versucht das apxs-Tool, den Namen aus der Quelle zu ermitteln oder (als Fallback) Zumindest wenn man es anhand des Dateinamens errät.

Abfrageoptionen

-q

Führt eine Abfrage nach Variablen und Umgebungseinstellungen durch, die zum Erstellen von httpd verwendet werden. Wenn es ohne query-Parameter aufgerufen wird, werden alle bekannten Variablen und ihre Werte ausgegeben. Der optionale Parameter -v formatiert die Listenausgabe. .PP Verwenden Sie dies, um manuell die Einstellungen zu bestimmen, die zum Erstellen des httpd verwendet werden, der Ihr Modul lädt. Verwenden Sie beispielsweise INC=-I`apxs -q INCLUDEDIR` .PP in Ihren eigenen Makefiles, wenn Sie manuellen Zugriff auf die C-Header-Dateien von Apache benötigen.

Einstellmöglichkeiten

-S name=value

Diese Option ändert die oben beschriebenen Apxs-Einstellungen.

Optionen zur Vorlagengenerierung

-g

Dadurch werden ein Unterverzeichnis name (siehe Option -n) und dort zwei Dateien generiert: Eine Beispielmodul-Quelldatei mit dem Namen mod_name.c, das als Vorlage zum Erstellen eigener Module oder als Schnellstart für das Spielen mit dem Apxs-Mechanismus verwendet werden kann. Und ein entsprechendes Makefile für eine noch einfachere Erstellung und Installation dieses Moduls.

DSO-Kompilierungsoptionen

-c

Dies zeigt den Kompilierungsvorgang an. Es kompiliert zunächst die C-Quelldateien (.c) von files in entsprechende Objektdateien (.o) und erstellt dann ein dynamisch gemeinsam genutztes Objekt in dsofile, indem es diese Objektdateien plus verknüpft die restlichen Objektdateien (.o und .a) von Dateien. Wenn keine -o-Option angegeben ist, wird die Ausgabedatei anhand des ersten Dateinamens in Dateien ermittelt und ist daher normalerweise standardmäßig mod_name.so.

-o dsofile

Gibt explizit den Dateinamen des erstellten dynamisch freigegebenen Objekts an. Wenn nicht angegeben und der Name nicht aus der Dateien-Liste erraten werden kann, wird der Fallback-Name mod_unknown.so verwendet.

-D name=value

Diese Option wird direkt an den/die Kompilierungsbefehl(e) weitergegeben. Verwenden Sie dies, um Ihre eigenen Definitionen zum Build-Prozess hinzuzufügen.

-I incdir

Diese Option wird direkt an den/die Kompilierungsbefehl(e) weitergegeben. Verwenden Sie diese Option, um Ihre eigenen Include-Verzeichnisse hinzuzufügen, die im Build-Prozess durchsucht werden sollen.

-L libdir

Diese Option wird direkt an den Linker-Befehl weitergegeben. Verwenden Sie diese Option, um Ihre eigenen Bibliotheksverzeichnisse zum Durchsuchen des Build-Prozesses hinzuzufügen.

-l libname

Diese Option wird direkt an den Linker-Befehl weitergegeben. Verwenden Sie diese Option, um Ihre eigenen Bibliotheken zum Durchsuchen des Build-Prozesses hinzuzufügen.

-Wc,compiler-flags

Diese Option übergibt compiler-flags als zusätzliche Flags an den Befehl libtool --mode=compile. Verwenden Sie dies, um lokale Compiler-spezifische Optionen hinzuzufügen.

-Wl,linker-flags

Diese Option übergibt linker-flags als zusätzliche Flags an den Befehl libtool --mode=link. Verwenden Sie dies, um lokale Linker-spezifische Optionen hinzuzufügen.

-p

Diese Option bewirkt, dass apxs mit den apr/apr-util-Bibliotheken verknüpft wird. Dies ist nützlich, wenn Hilfsprogramme kompiliert werden, die die apr/apr-util-Bibliotheken verwenden.

DSO-Installations- und Konfigurationsoptionen

-i

Dies zeigt den Installationsvorgang an und installiert ein oder mehrere dynamisch freigegebene Objekte im Verzeichnis modules des Servers.

-a

Dadurch wird das Modul aktiviert, indem automatisch eine entsprechende LoadModule-Zeile zur Apache-Konfigurationsdatei httpd.conf hinzugefügt wird oder indem es aktiviert wird, falls es bereits vorhanden ist.

-A

Identisch mit Option -a, aber der erstellten LoadModule-Direktive wird ein Hash-Zeichen (#) vorangestellt, d. h., das Modul wird nur für später vorbereitet Aktivierung, aber zunächst deaktiviert.

-e

Dies gibt den Bearbeitungsvorgang an, der mit den Optionen -a und -A verwendet werden kann, ähnlich wie der Vorgang -i zum Bearbeiten von Apaches httpd.conf-Konfigurationsdatei, ohne zu versuchen, das Modul zu installieren.

BEISPIELE

Angenommen, Sie verfügen über ein Apache-Modul namens mod_foo.c, das die Serverfunktionalität von Apache erweitern soll. Um dies zu erreichen, müssen Sie zunächst die C-Quelle mit dem folgenden Befehl in ein gemeinsames Objekt kompilieren, das zur Laufzeit in den Apache-Server geladen werden kann:


      $ apxs -c mod_foo.c
      /path/to/libtool --mode=compile gcc ... -c mod_foo.c
      /path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
      $ _
    

Anschließend müssen Sie die Apache-Konfiguration aktualisieren, indem Sie sicherstellen, dass eine LoadModule-Direktive vorhanden ist, um dieses gemeinsam genutzte Objekt zu laden. Um diesen Schritt zu vereinfachen, bietet apxs eine automatische Möglichkeit, das gemeinsame Objekt in seinem „Modules“-Verzeichnis zu installieren und die Datei httpd.conf entsprechend zu aktualisieren. Dies kann erreicht werden, indem Folgendes ausgeführt wird:


      $ apxs -i -a mod_foo.la
      /path/to/instdso.sh mod_foo.la /path/to/apache/modules
      /path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
      ...
      chmod 755 /path/to/apache/modules/mod_foo.so
      [activating module `foo' in /path/to/apache/conf/httpd.conf]
      $ _
    

Auf diese Weise wird eine Zeile benannt


      LoadModule foo_module modules/mod_foo.so
    

wird zur Konfigurationsdatei hinzugefügt, falls noch nicht vorhanden. Wenn Sie dies standardmäßig deaktivieren möchten, verwenden Sie die Option -A, i.e.


      $ apxs -i -A mod_foo.c
    

Für einen schnellen Test des Apxs-Mechanismus können Sie eine Beispiel-Apache-Modulvorlage und ein entsprechendes Makefile erstellen über:


      $ 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
      $ _
    

Anschließend können Sie dieses Beispielmodul sofort in ein gemeinsames Objekt kompilieren und auf den Apache-Server laden:


      $ cd foo
      $ make all reload
      apxs -c mod_foo.c
      /path/to/libtool --mode=compile gcc ... -c mod_foo.c
      /path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
      apxs -i -a -n "foo" mod_foo.la
      /path/to/instdso.sh mod_foo.la /path/to/apache/modules
      /path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
      ...
      chmod 755 /path/to/apache/modules/mod_foo.so
      [activating module `foo' in /path/to/apache/conf/httpd.conf]
      apachectl restart
      /path/to/apache/sbin/apachectl restart: httpd not running, trying to start
      [Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
      /path/to/apache/sbin/apachectl restart: httpd started
      $ _