| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Apache module mod_example</TITLE> |
| </HEAD> |
| <BODY> |
| <!--#include virtual="header.html" --> |
| <H1>Module mod_example</h1> |
| <P> |
| This module is contained in the <CODE>modules/mod_example.c</CODE> file, and |
| <STRONG>is not</STRONG> compiled in by default. It illustrates many of |
| the aspects of the |
| <A |
| HREF="../misc/API.html" |
| REL="Help" |
| >Apache 1.2 API</A> |
| and, when used, demonstrates the manner in which module callbacks are |
| triggered by the server. |
| </P> |
| <H2>Summary</H2> |
| <P> |
| The files in the <CODE>src/modules/example directory</CODE> under the |
| Apache distribution directory tree are provided as an example to those |
| that wish to write modules that use the Apache API. |
| </P> |
| <P> |
| The main file is <CODE>mod_example.c</CODE>, which illustrates all |
| the different callback mechanisms and call syntaces. By no means does |
| an add-on module need to include routines for all of the callbacks - |
| quite the contrary! |
| </P> |
| <P> |
| The example module is an actual working module. If you link it into |
| your server, enable the "example-handler" handler for a location, and |
| then browse to that location, you will see a display of |
| some of the tracing the example module did as the various callbacks |
| were made. |
| </P> |
| <P> |
| To include the example module in your server, follow the steps below: |
| </P> |
| <OL> |
| <LI>Uncomment the "Module example_module" line near the bottom of |
| the <CODE>src/Configuration</CODE> file. If there isn't one, add |
| it; it should look like this: |
| <PRE> |
| Module example_module modules/example/mod_example.o |
| </PRE> |
| </LI> |
| <LI>Run the <CODE>src/Configure</CODE> script |
| ("<SAMP>cd src; ./Configure</SAMP>"). This will |
| build the Makefile for the server itself, and update the |
| <CODE>src/modules/Makefile</CODE> for any additional modules you |
| have requested from beneath that subdirectory. |
| </LI> |
| <LI>Make the server (run "<SAMP>make</SAMP>" in the <CODE>src</CODE> |
| directory). |
| </LI> |
| </OL> |
| <P> |
| To add another module of your own: |
| </P> |
| <OL TYPE="A"> |
| <LI><SAMP>mkdir src/modules/<EM>mymodule</EM></SAMP> |
| </LI> |
| <LI><SAMP>cp src/modules/example/* src/modules/<EM>mymodule</EM></SAMP> |
| </LI> |
| <LI>Modify the files in the new directory. |
| </LI> |
| <LI>Follow steps [1] through [3] above, with appropriate changes. |
| </LI> |
| </OL> |
| <H3> |
| Using the <SAMP>mod_example</SAMP> Module |
| </H3> |
| <P> |
| To activate the example module, include a block similar to the |
| following in your <SAMP>srm.conf</SAMP> file: |
| </P> |
| <PRE> |
| <Location /example-info> |
| SetHandler example-handler |
| </Location> |
| </PRE> |
| <P> |
| As an alternative, you can put the following into a |
| <A |
| HREF="core.html#accessfilename" |
| ><SAMP>.htaccess</SAMP></A> |
| file and then request the file "test.example" from that |
| location: |
| </P> |
| <PRE> |
| AddHandler example-handler .example |
| </PRE> |
| <P> |
| After reloading/restarting your server, you should be able to browse |
| to this location and see the brief display mentioned earlier. |
| </P> |
| <H2>Directives</H2> |
| <P> |
| <UL> |
| <LI><A HREF="#example">Example</A> |
| </LI> |
| </UL> |
| </P> |
| <HR> |
| <A NAME="example"> |
| <H2>Example</H2> |
| </A> |
| <P> |
| <STRONG>Syntax:</STRONG> Example |
| <BR> |
| <STRONG>Default:</STRONG> None |
| <BR> |
| <STRONG>Context:</STRONG> server config, virtual host, directory, .htaccess |
| <BR> |
| <STRONG>Override:</STRONG> Options |
| <BR> |
| <STRONG>Status:</STRONG> Extension |
| <BR> |
| <STRONG>Module:</STRONG> mod_example |
| </P> |
| <P> |
| The Example directive activates the example module's content handler |
| for a particular location or file type. It takes no arguments. If |
| you browse to an URL to which the example content-handler applies, you |
| will get a display of the routines within the module and how and in |
| what order they were called to service the document request. |
| </P> |
| <!--#include virtual="footer.html" --> |
| </BODY> |
| </HTML> |