summaryrefslogtreecommitdiff
path: root/usr.sbin/httpd/htdocs/manual/mod/mod_so.html
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/httpd/htdocs/manual/mod/mod_so.html')
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_so.html178
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 &lt;?INDEX {\tt LoadFile} directive&gt; -->
+<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 &lt;?INDEX {\tt LoadModule} directive&gt; -->
+<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>
+