| <!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" |
| > |
| <!--#include virtual="header.html" --> |
| <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> Base<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> Base<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> |
| |
| |
| <!--#include virtual="footer.html" --> |
| </BODY> |
| </HTML> |
| |