Title: apxs - Das APache eXtenSion Tool
Programme

apxs ist ein Programm zum Einrichten und Installieren von Erweiterungsmodulen für den Apache HyperText Transfer Protocol-Server. Hierfür wird ein Dynamic Shared Object (DSO) aus einer oder mehreren Quelldateien oder Objektdateien angelegt, welches während der Ausführung mit der Direktive LoadModule des Moduls mod_so geladen werden kann.

Um dieses Verfahren für Erweiterungen nutzen zu können, muss das Betriebssystem DSO unterstützen und die binäre Apache-Datei httpd mit dem Modul mod_so kompiliert werden. Das Programm apxs beschwert sich automatisch, wenn dies nicht der Fall ist. Sie können aber auch manuell eine Überprüfung vornehmen:

$ httpd -l

Das Modul mod_so muss in der angezeigten Liste aufgeführt werden. Sind diese Voraussetzungen erfüllt, kann die Funktionalität des Apache-Servers problemlos durch Installation eigener Module durch den DSO-Mechanismus mit Hilfe des Programms apxs erweitert werden:

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

Bei den angegebenen Dateien kann es sich um beliebige C-Quelldateien (.c), eine Objektdatei (.o) oder auch um ein Bibliotheksarchiv handeln (.a). Das apxs-Programm erkennt die Dateinamenserweiterungen automatisch und kompiliert C-Quelldateien und Objekt- und Archivdateien werden erst später eingebunden. Wenn Sie solche vorkompilierten Objekte benutzen, müssen Sie aber darauf achten, dass sie für positionsunabhängigen Code (PIC) kompiliert wurden, damit sie in einem dynamisch geladenen Objekt benutzt werden können. Beim Compiler GCC müssen Sie hierfür die Option -fpic angeben. Schlagen Sie bei anderen C-Compilern in der Dokumentation nach oder achten Sie auf die Flags, die apxs zum Kompilieren der Objektdateien benutzt.

Weitere Details zur DSO-Unterstützung des Apache finden Sie in der Dokumentation des Moduls mod_so oder auch in der Quelldatei src/modules/standard/mod_so.c.

apachectl httpd
Synopsis

apxs -g [ -S Name=Wert ] -n Modul

apxs -q [ -S Name=Wert ] Abfrage ...

apxs -c [ -S Name=Wert ] [ -o DSO-Datei ] [ -I iInclude-Verzeichnis ] [ -D Name=Wert ] [ -L Bibliotheksverz. ] [ -l Bibliothek ] [ -Wc,Compiler-Flags ] [ -Wl,Linker-Flags ] Dateien ...

apxs -i [ -S Name=Wert ] [ -n Modul ] [ -a ] [ -A ] DSO-Datei ...

apxs -e [ -S Name=Wert ] [ -n Modul ] [ -a ] [ -A ] DSO-Datei ...

Optionen
Allgemeine Optionen
-n Modul
Mit dieser Option wird der Modulname für die Optionen -i (installieren) und -g (Mustererzeugung) explizit angegeben. Für die Option -g muss die Angabe erfolgen, für die Option -i versucht das apxs-Programm den Namen aus der Quelldatei zu ermitteln oder ihn notfalls aus dem Dateinamen abzuleiten.
Abfrageoptionen
-q
Fragt die Kenntnisse des apxs-Programms über bestimmte Einstellungen ab. Als Abfrageparameter können ein oder mehrere der folgenden Zeichenfolgen angegeben werden: CC, CFLAGS, CFLAGS_SHLIB, INCLUDEDIR, LD_SHLIB, LDFLAGS_SHLIB, LIBEXECDIR, LIBS_SHLIB, SBINDIR, SYSCONFDIR, TARGET.

Sie können die Einstellungen auch selbst ermitteln. Mit der folgenden Anweisung innerhalb Ihrer Makefiles greifen Sie beispielsweise auf die Include-Dateien des Apache zu:

INC=-I`apxs -q INCLUDEDIR`
Konfigurationsoptionen
-S Name=Wert
Mit dieser Option werden die oben beschriebenen apxs-Einstellungen geändert.
Optionen zum Erzeugen von Vorlagen
-g
Mit dieser Option wird das Unterverzeichnis Name (siehe -n) und in diesem zwei Dateien erzeugt: Eine Musterdatei mit der Bezeichnung mod_name.c, die als Vorlage für eigene Module oder als Ausgangspunkt für Experimente mit dem apxs-Mechanismus dienen kann, sowie eine entsprechendes Makefile für eine noch einfachere Einrichtung und Installation dieses Moduls.
DSO-Compileroptionen
-c
Mit dieser Option werden die Compileroperationen angegeben. Zuerst werden die mit Dateien angegebenen C-Quelldateien (.c.c) in entsprechende Objektdateien kompiliert (.o und anschließend durch Binden dieser Objektdateien mit den verbleibenden Objektdateien (.o und .a) aus Dateien dynamische Objekte in der DSO-Datei eingerichtet. Wird die Option -o nicht angegeben, wird der Name der Ausgabedatei vom ersten Dateinamen aus Dateien abgeleitet und lautet daher meist mod_name.so.
-o DSO-Datei
Mit dieser Option wird der Name des erzeugten dynamischen Objekts explizit angegeben. Erfolgt keine Angabe und lässt er sich nicht aus der Liste der Dateien ableiten, wird als Notbehelf der Name mod_unknown.so benutzt.
-D Name=Wert
Diese Option wird direkt an den oder die Kompilationsbefehl(e) weitergereicht und bietet Ihnen die Möglichkeit, eigene Definitionen hinzuzufügen.
-I Include-Verzeichnis
Diese Option wird direkt an den oder die Kompilationsbefehl(e) weitergereicht und dient zur Angabe eigener Include-Verzeichnisse, in denen gesucht werden soll.
-L libdir
Diese Option wird direkt an den Linker-Befehl weitergereicht. Geben Sie mit ihr eigene Verzeichnisse an, in denen nach Bibliotheken gesucht werden soll.
-l libname
Diese Option wird direkt an den Linker-Befehl weitergereicht. Geben Sie mit ihr eigene Bibliotheken an, in denen gesucht werden soll.
-Wc,Compiler-Flags
Mit dieser Option werden zusätzliche Compiler-Flags an den Compiler übergeben. Sie dient zur Angabe lokaler, Compiler-spezifischer Optionen.
-Wl,Linker-flags
Mit dieser Option werden zusätzliche Linker-Flags an den Linker übergeben. Sie dient zur Angabe lokaler, Linker-spezifischer Optionen.
DSO-Installations- und Konfigurationsoptionen
-i
Mit dieser Option wird die Installation angestoßen und ein oder mehrere dynamische Objekte im modules-Verzeichnis des Servers installiert.
-a
Aktiviert die Module durch Einfügen einer entsprechenden LoadModule-Zeile in die httpd.conf-Konfigurationsdatei automatisch oder aktiviert bereits vorhandene Module.
-A
Identisch mit der Option -a, der eingefügten LoadModule-Direktive wird aber ein Doppelkreuz (#) vorangestellt, d.h. das Modul bleibt bis zu seiner späteren Aktivierung deaktiviert.
-e
Diese Option gibt die Bearbeitungsoperation an, die mit den Optionen -a und -A ähnlich wie die -i-Operation benutzt werden kann, um die httpd.conf-Konfigurationsdatei des Apache bearbeiten zu können, ohne das Modul zu installieren.
Beispiele

Angenommen, Sie möchten die Serverfunktionalität des Apache mit dem Modul mod_foo.c erweitern. Hierfür müssen Sie zuerst den C-Quellcode kompilieren, damit er zur Laufzeit mit folgendem Befehl geladen werden kann:

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

Anschließend müssen Sie eine LoadModule-Direktive in die Apache-Konfiguration einfügen, damit das Objekt geladen wird. Dieser Schritt wird vom Programm apxs durch die Installation des Objekts im Verzeichnis modules und die entsprechende Aktualisierung der Datei httpd.conf vereinfacht. Geben Sie folgende Befehlszeile ein:

$ apxs -i -a mod_foo.c
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]
$ _

Dadurch wird die Zeile

LoadModule foo_module modules/mod_foo.so

in die Konfigurationsdatei eingefügt, falls sie noch nicht vorhanden ist. Soll das Modul standardmäßig aktiviert werden, benutzen Sie die Option -A:

$ apxs -i -A mod_foo.c

Für einen schnellen Test des Programms apxs können Sie ein Beispielmodul und ein entsprechendes Makefile erzeugen:

$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/mod_foo.c
$ _

Anschließend können Sie dieses Beispielmodul sofort als kompilieren und in den Apache-Server laden:

$ cd foo
$ make all reload
apxs -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
apxs -i -a -n "foo" mod_foo.so
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
$ _

Sie können mit apxs auch komplexe Module außerhalb des Apache-Codebaums kompilieren, zum Beispiel PHP3:

$ cd php3
$ ./configure --with-shared-apache=../apache-1.3
$ apxs -c -o libphp3.so mod_php3.c libmodphp3-so.a
gcc -fpic -DSHARED_MODULE -I/tmp/apache/include -c mod_php3.c
ld -Bshareable -o libphp3.so mod_php3.o libmodphp3-so.a
$ _

Das ist möglich, weil apxs C-Quellcodedateien und Objektdateien automatisch erkennt. Nur C-Quellcodedateien werden kompiliert, während die verbleibenden Objektdateien erst für das Binden benutzt werden.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to