File:  [LON-CAPA] / loncom / html / adm / help / tex / Guts_Apache.tex
Revision 1.2: download - view: text, annotated - select for diffs
Mon May 17 22:08:56 2004 UTC (20 years, 1 month ago) by albertel
Branches: MAIN
CVS tags: version_2_9_X, version_2_9_99_0, version_2_9_1, version_2_9_0, version_2_8_X, version_2_8_99_1, version_2_8_99_0, version_2_8_2, version_2_8_1, version_2_8_0, version_2_7_X, version_2_7_99_1, version_2_7_99_0, version_2_7_1, version_2_7_0, version_2_6_X, version_2_6_99_1, version_2_6_99_0, version_2_6_3, version_2_6_2, version_2_6_1, version_2_6_0, version_2_5_X, version_2_5_99_1, version_2_5_99_0, version_2_5_2, version_2_5_1, version_2_5_0, version_2_4_X, version_2_4_99_0, version_2_4_2, version_2_4_1, version_2_4_0, version_2_3_X, version_2_3_99_0, version_2_3_2, version_2_3_1, version_2_3_0, version_2_2_X, version_2_2_99_1, version_2_2_99_0, version_2_2_2, version_2_2_1, version_2_2_0, version_2_1_X, version_2_1_99_3, version_2_1_99_2, version_2_1_99_1, version_2_1_99_0, version_2_1_3, version_2_1_2, version_2_1_1, version_2_1_0, version_2_12_X, version_2_11_X, version_2_11_4_uiuc, version_2_11_4_msu, version_2_11_4, version_2_11_3_uiuc, version_2_11_3_msu, version_2_11_3, version_2_11_2_uiuc, version_2_11_2_msu, version_2_11_2_educog, version_2_11_2, version_2_11_1, version_2_11_0_RC3, version_2_11_0_RC2, version_2_11_0_RC1, version_2_11_0, version_2_10_X, version_2_10_1, version_2_10_0_RC2, version_2_10_0_RC1, version_2_10_0, version_2_0_X, version_2_0_99_1, version_2_0_2, version_2_0_1, version_2_0_0, version_1_99_3, version_1_99_2, version_1_99_1_tmcc, version_1_99_1, version_1_99_0_tmcc, version_1_99_0, version_1_3_X, version_1_3_3, version_1_3_2, version_1_3_1, version_1_3_0, version_1_2_X, version_1_2_99_1, version_1_2_99_0, version_1_2_1, version_1_2_0, version_1_1_99_5, version_1_1_99_4, version_1_1_99_3, version_1_1_99_2, version_1_1_99_1, version_1_1_99_0, loncapaMITrelate_1, language_hyphenation_merge, language_hyphenation, bz6209-base, bz6209, bz5969, bz2851, PRINT_INCOMPLETE_base, PRINT_INCOMPLETE, HEAD, GCI_3, GCI_2, GCI_1, BZ5971-printing-apage, BZ5434-fox, BZ4492-merge, BZ4492-feature_horizontal_radioresponse
- add missing \label
- add errormessage generation to lonhelp.pm in case it does not find a label for
   the reference

- This should fix #3016, and make it easier to find these errors in the fututre

\label{Guts_Apache}

The standard mode in which the Apache web server is used is that a
URL corresponds to some static file on the file system, which then
more or less gets sent out as-is. Slight deviations from that simple
principle are however already the directory listing function, virtual
servers, and the cgi-bin directory. In the latter case, Apache executes
the file in a new process and provides both the input to the process
in the environment, and routes the output to the client. Other deviations
are the error messages.

In a more general view, URLs to Apache are URIs (Uniform Resource
Identifiers), which may are may not correspond to a physical file,
which in turn may or may not be sent out as-is.

As a request for a URI gets sent to the Apache server, it goes through
several phases. At each phase ({}``stage'') along the process, handler
modules can be defined to deal with the request. Details about these
phases are given in {}``Writing Apache Modules with Perl and C''
from O'Reilly (the {}``Eagle book'') in Chapter 3 (page 60).

These handler modules are not like cgi-scripts executed in a separate
process, but are dynamically linked into the Apache child processes
themselves - they run inside of Apache. The mod\_perl mechanism in
addition links the Perl interpreter into the Apache child process.
Modules are pre-interpreted ({}``compiled'') by the Perl interpreter
when they are first loaded, and the pre-interpreted code stays permanently
in the memory allocated to that Apache child process. The result is
a significant speed-up, and through the flexible mechanism of module
registration and different stages of the process, a high degree of
customizability.

LON-CAPA does \emph{not} use Apache::Registry, and so in addition
avoids the unnecessary overhead of emulating a cgi-environment within
the handlers. Instead, it makes direct use of the Apache Perl API
(Chapter 9, Eagle book).

If you intend to add new capabilities to LON-CAPA that require new
handlers, as opposed to tweaking current ones, we recommend buying
a copy of {}``Writing Apache Modules with Perl and C''; it is not
strictly necessary but it is the clearest description of what is going
on in the Apache server, and without it you will be challenged to
understand everything that is occurring in the server.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>