apxs(8)
apxs - APache eXtenSion tool
As shipped in IRIX 6.5.22. Added in IRIX 6.5.19.
NAME apxs - APache eXtenSion tool SYNOPSIS apxs -g [ -S variable=value ] -n name apxs -q [ -S variable=value ] query ... apxs -c [ -S variable=value ] [ -o dsofile ] [ -I incdir ] [ -D vari- able[=value] ] [ -L libdir ] [ -l libname ] [ -Wc,compiler-flags ] [ -Wl,linker-flags ] files ... apxs -i [ -S variable=value ] [ -n name ] [ -a ] [ -A ] dsofile ... apxs -e [ -S variable=value ] [ -n name ] [ -a ] [ -A ] dsofile ... DESCRIPTION apxs is a tool for building and installing extension modules for the Apache HyperText Transfer Protocol (HTTP) server. This is achieved by building a Dynamic Shared Object (DSO) from one or more source or object files which then can be loaded into the Apache server under runtime via the LoadModule directive from mod_so. So to use this extension mechanism, your platform has to support the DSO feature and your Apache httpd binary has to be built with the mod_so mod- ule. The apxs tool automatically complains if this is not the case. You can check this yourself by manually running the command $ httpd -l The module mod_so should be part of the displayed list. If these require- ments are fulfilled, you can easily extend your Apache server's functional- ity by installing your own modules with the DSO mechanism by the help of this apxs tool: $ 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/libexec/mod_foo.so chmod 755 /path/to/apache/libexec/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 $ _ The arguments files can be any C source file (.c), a object file (.o) or even a library archive (.a). The apxs tool automatically recognizes these extensions and automatically uses the C source files for compilation while it just uses the object and archive files for the linking phase. But when using such pre-compiled objects, make sure they are compiled for Position Independend Code (PIC) to be able to use them for a DSO. For instance with GCC you always just have to use -fpic. For other C compilers please con- sult its manual page or watch for the flags apxs uses to compile the object files. For more details about DSO support in Apache, first read the background in- formation about DSO in htdocs/manual/dso.html, then read the documentation of mod_so. OPTIONS Common options: -n name This explicitly sets the module name for the -i (install) and -g (template generation) option. Use this to explicitly specify the module name. For option -g this is required, for option -i the apxs tool tries to determine the name from the source or (as a fallback) at least by guessing it from the filename. Query options: -q Performs a query for apxs's knowledge about certain settings. The query parameters can be one or more of the following vari- able names: CC TARGET CFLAGS SBINDIR CFLAGS_SHLIB INCLUDEDIR LD_SHLIB LIBEXECDIR LDFLAGS_SHLIB SYSCONFDIR LIBS_SHLIB PREFIX Use this for manually determining settings. For instance use INC=-I`apxs -q INCLUDEDIR` inside your own Makefiles if you need manual access to Apache's C header files. Configuration options: -S variable=value This option changes the apxs settings described above. Template Generation options: -g This generates a subdirectory name (see option -n) and there two files: A sample module source file named mod_name.c which can be used as a template for creating your own modules or as a quick start for playing with the apxs mechanism. And a corre- sponding Makefile for even easier building and installing of this module. DSO compilation options: -c This indicates the compilation operation. It first compiles the C source files (.c) of files into corresponding object files (.o) and then builds a DSO in dsofile by linking these object files plus the remaining object files (.o and .a) of files If no -o option is specified the output file is guessed from the first filename in files and thus usually defaults to mod_name.so -o dsofile Explicitly specifies the filename of the created DSO file. If not specified and the name cannot be guessed from the files list, the fallback name mod_unknown.so is used. -D variable[=value] This option is directly passed through to the compilation com- mand(s). Use this to add your own defines to the build process. -I incdir This option is directly passed through to the compilation com- mand(s). Use this to add your own include directories to search to the build process. -L libdir This option is directly passed through to the linker command. Use this to add your own library directories to search to the build process. -l libname This option is directly passed through to the linker command. Use this to add your own libraries to search to the build process. -Wc,compiler-flags This option passes compiler-flags as additional flags to the compiler command. Use this to add local compiler-specific op- tions. -Wl,linker-flags This option passes linker-flags as additional flags to the linker command. Use this to add local linker-specific options. DSO installation and configuration options: -i This indicates the installation operation and installs one or more DSOs into the server's libexec directory. -a This activates the module by automatically adding a correspond- ing LoadModule line to Apache's httpd.conf configuration file, or by enabling it if it already exists. -A Same as option -a but the created LoadModule directive is pre- fixed with a hash sign (#), i.e. the module is just prepared for later activation but initially disabled. -e This indicates the editing operation, which can be used with the -a and -A options similarly to the -i operation to edit Apache's httpd.conf configuration file without attempting to install the module. EXAMPLES Assume you have an Apache module named mod_foo.c available which should ex- tend Apache's server functionality. To accomplish this you first have to compile the C source into a DSO suitable for loading into the Apache server under runtime via the following command: $ 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 $ _ Then you have to update the Apache configuration by making sure a LoadMod- ule directive is present to load this DSO. To simplify this step apxs pro- vides an automatic way to install the DSO in the "libexec" directory and updating the httpd.conf file accordingly. This can be achieved by running: $ apxs -i -a mod_foo.c cp mod_foo.so /path/to/apache/libexec/mod_foo.so chmod 755 /path/to/apache/libexec/mod_foo.so [activating module `foo' in /path/to/apache/etc/httpd.conf] $ _ This way a line named LoadModule foo_module libexec/mod_foo.so is added to the configuration file if still not present. If you want to have this operation to be disabled, use the -A option, i.e. $ apxs -i -A mod_foo.c For a quick test of the apxs mechanism you can create a sample Apache mod- ule template plus a corresponding Makefile via: $ apxs -g -n foo Creating [DIR] foo Creating [FILE] foo/Makefile Creating [FILE] foo/mod_foo.c $ _ Then you can immediately compile this sample module into a DSO and load it into the Apache server: $ 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/libexec/mod_foo.so chmod 755 /path/to/apache/libexec/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 $ _ You can even use apxs to compile complex modules outside the Apache source tree, like PHP3, because apxs automatically recognized C source files and object files. $ 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 $ _ Only C source files are compiled while remaining object files are used for the linking phase. SEE ALSO apachectl(1), httpd(8).