diff options
Diffstat (limited to 'usr.sbin/httpd/htdocs/manual/mod/mod_so.html')
-rw-r--r-- | usr.sbin/httpd/htdocs/manual/mod/mod_so.html | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html new file mode 100644 index 00000000000..bd466f4aab9 --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html @@ -0,0 +1,178 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<HTML> +<HEAD> +<TITLE>Apache module mod_so</TITLE> +</HEAD> + +<!-- Background white, links blue (unvisited), navy (visited), red (active) --> +<BODY + BGCOLOR="#FFFFFF" + TEXT="#000000" + LINK="#0000FF" + VLINK="#000080" + ALINK="#FF0000" +> +<DIV ALIGN="CENTER"> + <IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server Version 1.3 + </H3> +</DIV> + +<H1 ALIGN="CENTER">Module mod_so</H1> + +This module is contained in the <CODE>mod_so.c</CODE> file. It is +compiled in by default on Windows and is not compiled in by default on +Unix. It provides for loading of executable code and modules into the +server at start-up or restart time. On Unix, the loaded code typically +comes from shared object files (usually with <SAMP>.so</SAMP> +extension), whilst on Windows this module loads <SAMP>DLL</SAMP> +files. This module is only available in Apache 1.3 and up. + +<P> + +In previous releases, the functionality of this module was provided +for Unix by mod_dld, and for Windows by mod_dll. On Windows, mod_dll +was used in beta release 1.3b1 through 1.3b5. mod_so combines these +two modules into a single module for all operating systems. + +<H2>Summary</H2> + +This is an experimental module. On selected operating systems it can be used +to load modules into Apache at runtime via the <A HREF="../dso.html">Dynamic +Shared Object</A> (DSO) mechanism, rather than requiring a recompilation. + +<H2>Directives</H2> +<UL> +<LI><A HREF="#loadfile">LoadFile</A> +<LI><A HREF="#loadmodule">LoadModule</A> +</UL> +<HR> + + +<H2><A NAME="loadfile">LoadFile</A></H2> +<!--%plaintext <?INDEX {\tt LoadFile} directive> --> +<A + HREF="directive-dict.html#Syntax" + REL="Help" +><STRONG>Syntax:</STRONG></A> LoadFile <EM>filename filename ...</EM><BR> +<A + HREF="directive-dict.html#Context" + REL="Help" +><STRONG>Context:</STRONG></A> server config<BR> +<A + HREF="directive-dict.html#Status" + REL="Help" +><STRONG>Status:</STRONG></A> Experimental<BR> +<A + HREF="directive-dict.html#Module" + REL="Help" +><STRONG>Module:</STRONG></A> mod_so<P> + +The LoadFile directive links in the named object files or libraries +when the server is started or restarted; this is used to load +additional code which may be required for some module to +work. <EM>Filename</EM> is either and absolute path or relative to <A +HREF="core.html#serverroot">ServerRoot</A>.<P><HR> + +<H2><A NAME="loadmodule">LoadModule</A></H2> +<!--%plaintext <?INDEX {\tt LoadModule} directive> --> +<A + HREF="directive-dict.html#Syntax" + REL="Help" +><STRONG>Syntax:</STRONG></A> LoadModule <EM>module filename</EM><BR> +<A + HREF="directive-dict.html#Context" + REL="Help" +><STRONG>Context:</STRONG></A> server config<BR> +<A + HREF="directive-dict.html#Status" + REL="Help" +><STRONG>Status:</STRONG></A> Experimental<BR> +<A + HREF="directive-dict.html#Module" + REL="Help" +><STRONG>Module:</STRONG></A> mod_so<P> + +The LoadModule directive links in the object file or library <EM>filename</EM> +and adds the module structure named <EM>module</EM> to the list of active +modules. <EM>Module</EM> is the name of the external variable of type +<CODE>module</CODE> in the file. Example (Unix): +<BLOCKQUOTE><CODE> +LoadModule status_module modules/mod_status.so +</CODE></BLOCKQUOTE> + +<P> + +Example (Windows): +<BLOCKQUOTE><CODE> +LoadModule status_module modules/ApacheModuleStatus.dll<BR> +</CODE></BLOCKQUOTE> + +loads the named module from the modules subdirectory of the +ServerRoot.<P> + +<HR> + +<H2><A NAME="creating">Creating DLL Modules for Windows</A></H2> + +<P>The Apache module API is unchanged between the Unix and Windows + versions. Many modules will run on Windows with no or little change + from Unix, although others rely on aspects of the Unix architecture + which are not present in Windows, and will not work.</P> + +<P>When a module does work, it can be added to the server in one of two + ways. As with Unix, it can be compiled into the server. Because Apache + for Windows does not have the <CODE>Configure</CODE> program of Apache + for Unix, the module's source file must be added to the ApacheCore + project file, and its symbols must be added to the + <CODE>os\win32\modules.c</CODE> file.</P> + +<P>The second way is to compile the module as a DLL, a shared library + that can be loaded into the server at runtime, using the + <CODE><A HREF="#loadmodule">LoadModule</A></CODE> + directive. These module DLLs can be distributed and run on any Apache + for Windows installation, without recompilation of the server.</P> + +<P>To create a module DLL, a small change is necessary to the module's + source file: The module record must be exported from the DLL (which + will be created later; see below). To do this, add the + <CODE>MODULE_VAR_EXPORT</CODE> (defined in the Apache header files) to + your module's module record definition. For example, if your module + has:</P> +<PRE> + module foo_module; +</PRE> +<P>Replace the above with:</P> +<PRE> + module MODULE_VAR_EXPORT foo_module; +</PRE> +<P>Note that this will only be activated on Windows, so the module can + continue to be used, unchanged, with Unix if needed. Also, if you are + familiar with <CODE>.DEF</CODE> files, you can export the module + record with that method instead.</P> + +<P>Now, create a DLL containing your module. You will need to link this + against the ApacheCore.lib export library that is created when the + ApacheCore.dll shared library is compiled. You may also have to change + the compiler settings to ensure that the Apache header files are + correctly located.</P> + +<P>This should create a DLL version of your module. Now simply place it + in the <SAMP>modules</SAMP> directory of your server root, and use + the <CODE><A HREF="#loadmodule">LoadModule</A></CODE> directive to + load it.</P> + + +<HR> + +<H3 ALIGN="CENTER"> + Apache HTTP Server Version 1.3 +</H3> + +<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A> +<A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A> + +</BODY> +</HTML> + |