stas 02/02/27 10:03:39
Modified: src config.cfg
src/docs/1.0/api Apache.pod
src/docs/1.0/faqs cgi_to_mod_perl.pod config.cfg
mod_perl.pod mod_perl_cgi.pod mod_perl_faq.pod
mod_perl_method_handlers.pod mod_perl_traps.pod
src/docs/1.0/guide advocacy.pod browserbugs.pod config.pod
control.pod correct_headers.pod databases.pod
dbm.pod debug.pod download.pod frequent.pod
hardware.pod help.pod install.pod intro.pod
modules.pod multiuser.pod performance.pod perl.pod
porting.pod scenario.pod security.pod snippets.pod
start.pod strategy.pod style.css
troubleshooting.pod
src/docs/1.0/win32 win32_binaries.pod win32_compile.pod
src/docs/2.0/api/mod_perl-2.0/APR PerlIO.pod
src/docs/2.0/api/mod_perl-2.0/Apache ServerUtil.pod
src/docs/2.0/devel/help help.pod
src/docs/2.0/devel/porting_from_1.x porting_from_1.x.pod
src/docs/2.0/devel/testing testing.pod
src/docs/2.0/user/compat compat.pod
src/docs/2.0/user/design design.pod
src/docs/2.0/user/install install.pod
src/maillist email-etiquette.pod list-advocacy.pod
list-announce.pod list-asp.pod list-cvs.pod
list-dev.pod list-docs-cvs.pod list-docs-dev.pod
list-embperl.pod list-test-cvs.pod
list-test-dev.pod list-users.pod maillist.tmpl
Removed: src/docs/1.0/faqs email-etiquette.pod
Log:
- loads of fixes for the internal linking implementation
Revision Changes Path
1.12 +13 -0 modperl-docs/src/config.cfg
Index: config.cfg
===================================================================
RCS file: /home/cvs/modperl-docs/src/config.cfg,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- config.cfg 4 Feb 2002 11:48:18 -0000 1.11
+++ config.cfg 27 Feb 2002 18:03:35 -0000 1.12
@@ -89,6 +89,19 @@
# location of the templates (searched left to right)
tmpl => [qw(tmpl/custom tmpl/std tmpl)],
+
+ # search path for pods, etc. must put more specific paths first!
+ search_path => [qw(
+ docs/2.0/api/mod_perl-2.0
+ docs/2.0/api/ModPerl-Registry
+ docs/2.0
+ docs/1.0/api
+ docs/1.0
+ .
+ )],
+ # what extensions to search for
+ search_exts => [qw(pod pm html)],
+
},
file => {
1.5 +3 -3 modperl-docs/src/docs/1.0/api/Apache.pod
Index: Apache.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/api/Apache.pod,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Apache.pod 24 Jan 2002 14:54:25 -0000 1.4
+++ Apache.pod 27 Feb 2002 18:03:35 -0000 1.5
@@ -313,7 +313,7 @@
=item $c-E<gt>local_addr
A packed SOCKADDR_IN in the same format as returned by
-L<Socket/pack_sockaddr_in>, containing the port and address on the
+C<Socket::pack_sockaddr_in>, containing the port and address on the
local host that the remote client is connected to. This is set by
the server when the connection record is created so it is always
defined.
@@ -321,7 +321,7 @@
=item $c-E<gt>remote_addr
A packed SOCKADDR_IN in the same format as returned by
-L<Socket/pack_sockaddr_in>, containing the port and address on the
+C<Socket::pack_sockaddr_in>, containing the port and address on the
remote host that the server is connected to. This is set by the
server when the connection record is created so it is always defined.
@@ -432,7 +432,7 @@
Returns an array reference of hash references, containing information
related to the B<require> directive. This is normally used for access
-control, see L<Apache::AuthzAge> for an example.
+control, see C<Apache::AuthzAge> for an example.
=item $r-E<gt>auth_type
1.2 +2 -2 modperl-docs/src/docs/1.0/faqs/cgi_to_mod_perl.pod
Index: cgi_to_mod_perl.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/faqs/cgi_to_mod_perl.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- cgi_to_mod_perl.pod 5 Jan 2002 19:20:01 -0000 1.1
+++ cgi_to_mod_perl.pod 27 Feb 2002 18:03:35 -0000 1.2
@@ -107,13 +107,13 @@
=item TRAPS
-See L<mod_perl_traps>.
+See L<common/known mod_perl traps|faqs::mod_perl_traps>.
=back
=head1 REPORTING PROBLEMS
-Read the L<SUPPORT> file.
+Read the I<SUPPORT> file.
=head1 SEE ALSO
1.3 +0 -1 modperl-docs/src/docs/1.0/faqs/config.cfg
Index: config.cfg
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/faqs/config.cfg,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- config.cfg 21 Feb 2002 08:53:50 -0000 1.2
+++ config.cfg 27 Feb 2002 18:03:35 -0000 1.3
@@ -18,7 +18,6 @@
mod_perl_api.pod
mod_perl_method_handlers.pod
perl_myth.pod
- email-etiquette.pod
),
],
copy_glob => [
1.2 +34 -28 modperl-docs/src/docs/1.0/faqs/mod_perl.pod
Index: mod_perl.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/faqs/mod_perl.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mod_perl.pod 5 Jan 2002 19:20:01 -0000 1.1
+++ mod_perl.pod 27 Feb 2002 18:03:35 -0000 1.2
@@ -43,14 +43,15 @@
See 'perldoc Apache' for info on how to use the Perl-Apache API.
-See the lib/ directory for example modules and L<apache-modlist.html>
-for a comprehensive list.
+See the I<lib/> directory for example modules and
+L<products::apache-modlist> for a comprehensive list.
See the eg/ directory for example scripts.
=head1 mod_perl
-For using mod_perl as a CGI replacement see the L<cgi_to_mod_perl> document.
+For using mod_perl as a CGI replacement see the L<First steps needed
+to use mod_perl as a CGI replacement|faqs::cgi_to_mod_perl> document.
You may load modules at server startup via:
@@ -225,10 +226,11 @@
as possible. The same is true under mod_perl. However, since
mod_perl normally only compiles scripts and modules once, in the
parent server or once per-child, C<BEGIN> blocks in that code will
-only be run once. As L<perlmod> explains, once a C<BEGIN> has run, it
-is immediately undefined. In the mod_perl environment, this means
-C<BEGIN> blocks will not be run during each incoming request unless
-that request happens to be one that is compiling the code.
+only be run once. As the I<perlmod> manpage explains, once a C<BEGIN>
+has run, it is immediately undefined. In the mod_perl environment,
+this means C<BEGIN> blocks will not be run during each incoming
+request unless that request happens to be one that is compiling the
+code.
Modules and files pulled in via require/use which contain C<BEGIN>
blocks will be executed:
@@ -248,10 +250,10 @@
=head1 END blocks
-As L<perlmod> explains, an C<END> subroutine is executed as late as
-possible, that is, when the interpreter is being exited. In the
-mod_perl environment, the interpreter does not exit until the server
-is shutdown. However, mod_perl does make a special case for
+As the I<perlmod> manpage explains, an C<END> subroutine is executed
+as late as possible, that is, when the interpreter is being exited.
+In the mod_perl environment, the interpreter does not exit until the
+server is shutdown. However, mod_perl does make a special case for
B<Apache::Registry> scripts.
Normally, C<END> blocks are executed by Perl during it's C<perl_run()>
@@ -305,8 +307,9 @@
AUTOLOADing. (Modules that you 'use' will be compiled when the server
starts unless they are inside an eval block.) httpd will grow just as
big as our /usr/bin/perl would, or a CGI process for that matter, it
-all depends on your setup. The L<mod_perl_tuning> document gives
-advice on how to best setup your mod_perl server environment.
+all depends on your setup. The L<mod_perl
+tuning|faqs::mod_perl_tuning> document gives advice on how to best
+setup your mod_perl server environment.
The mod_perl INSTALL document explains how to build the Apache::
extensions as shared libraries (with 'perl Makefile.PL DYNAMIC=1').
@@ -316,7 +319,8 @@
However, on most systems, this strategy will only make the httpd
I<look> smaller. When in fact, an httpd with Perl linked static with
take up less real memory and preform faster than shared libraries at
-the same time. See the L<mod_perl_tuning> document for details.
+the same time. See the L<mod_perl tuning|faqs::mod_perl_tuning>
+document for details.
=head2 MEMORY TIPS
@@ -388,20 +392,21 @@
=item Further Reading
-In case I forgot to mention, read Vivek Khera's L<mod_perl_tuning>
-document for more tips on improving Apache/mod_perl performance.
+In case I forgot to mention, read Vivek Khera's L<mod_perl
+tuning|faqs::mod_perl_tuning> document for more tips on improving
+Apache/mod_perl performance.
=back
=head1 SWITCHES
Normally when you run perl from the command line or have the shell
-invoke it with `#!', you may choose to pass perl switch arguments
-such as C<-w> or C<-T>. Since the command line is only parsed once,
-when the server starts, these switches are unavailable to mod_perl
-scripts. However, most command line arguments have a perl special
-variable equivilant. For example, the C<$^W> variable coresponds
-to the C<-w> switch. Consult L<perlvar> for more details. With
+invoke it with `#!', you may choose to pass perl switch arguments such
+as C<-w> or C<-T>. Since the command line is only parsed once, when
+the server starts, these switches are unavailable to mod_perl scripts.
+However, most command line arguments have a perl special variable
+equivilant. For example, the C<$^W> variable coresponds to the C<-w>
+switch. Consult the I<perlvar> manpage for more details. With
mod_perl it is also possible to turn on warnings globaly via the
B<PerlWarn> directive:
@@ -416,7 +421,8 @@
Now, any and all code compiled inside httpd will be checked.
The environment variable B<PERL5OPT> can be used to set additional
-perl startup flags such as B<-d> and B<-D>. See L<perlrun>.
+perl startup flags such as B<-d> and B<-D>. See the I<perlrun>
+manpage.
=head1 PERSISTENT DATABASE CONNECTIONS
@@ -607,7 +613,7 @@
=head1 PERL METHOD HANDLERS
-See L<mod_perl_method_handlers>.
+See L<How to use mod_perl's MethodHandlers|faqs::mod_perl_method_handlers>.
=head1 PERL SECTIONS
@@ -796,15 +802,15 @@
=head1 WARNINGS
-See L<mod_perl_traps>.
+See L<common/known mod_perl traps|faqs::mod_perl_traps>.
=head1 SUPPORT
-See the L<SUPPORT> file.
+See the I<SUPPORT> file.
=head1 Win32
-See L<INSTALL.win32> for building from sources.
+See I<INSTALL.win32> for building from sources.
Info about win32 binary distributions of mod_perl are available
from:
@@ -813,7 +819,7 @@
=head1 REVISION
-$Id: mod_perl.pod,v 1.1 2002/01/05 19:20:01 stas Exp $
+$Id: mod_perl.pod,v 1.2 2002/02/27 18:03:35 stas Exp $
=head1 AUTHOR
1.3 +1 -1 modperl-docs/src/docs/1.0/faqs/mod_perl_cgi.pod
Index: mod_perl_cgi.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/faqs/mod_perl_cgi.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mod_perl_cgi.pod 22 Feb 2002 08:33:09 -0000 1.2
+++ mod_perl_cgi.pod 27 Feb 2002 18:03:35 -0000 1.3
@@ -112,7 +112,7 @@
do not need a run-time symbol table entry.
Beware, though, of referring to a lexical variable indirectly from within a
-subroutine. To quote L<perlsub/"Private Variables via my()">, the
+subroutine. To quote I<perlsub/"Private Variables via my()">, the
variable "... now becomes unreachable by the outside world, but retains
its value between calls to ..." the subroutine. You will see classic
"sticky query" symptoms if your code looks like this:
1.3 +5 -4 modperl-docs/src/docs/1.0/faqs/mod_perl_faq.pod
Index: mod_perl_faq.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/faqs/mod_perl_faq.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mod_perl_faq.pod 22 Feb 2002 08:33:09 -0000 1.2
+++ mod_perl_faq.pod 27 Feb 2002 18:03:35 -0000 1.3
@@ -98,12 +98,13 @@
=head2 How do I run CGI scripts under mod_perl?
-Refer to L<mod_perl_cgi> for tips on writing and converting CGI
-scripts for mod_perl.
+Refer to the L<running CGI scripts under mod_perl|faqs::mod_perl_cgi>
+document for tips on writing and converting CGI scripts for mod_perl.
=head2 How do I access the Apache API from mod_perl?
-Interfacing with Apache is discussed in L<mod_perl_api>.
+Interfacing with Apache is discussed in L<accessing the Apache API via
+mod_perl|faqs::mod_perl_api>.
=head2 How secure are mod_perl scripts?
@@ -290,7 +291,7 @@
needed to be loaded when the server starts up. Put a PerlRequire
directive into one of the httpd config files that pulls in a small
module containing the relevant C<use>-statements. There is an example
-of this in L<mod_perl_tuning>.
+of this in L<mod_perl performance tuning|faqs::mod_perl_tuning>.
=head2 How can I pass arguments to a SSI script?
1.3 +5 -5
modperl-docs/src/docs/1.0/faqs/mod_perl_method_handlers.pod
Index: mod_perl_method_handlers.pod
===================================================================
RCS file:
/home/cvs/modperl-docs/src/docs/1.0/faqs/mod_perl_method_handlers.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mod_perl_method_handlers.pod 5 Jan 2002 20:42:52 -0000 1.2
+++ mod_perl_method_handlers.pod 27 Feb 2002 18:03:35 -0000 1.3
@@ -7,8 +7,8 @@
Described here are a few examples and hints how to use MethodHandlers
with modperl.
-This document assumes familiarity with at least L<perltoot> and
-"normal" usage of the Perl*Handlers.
+This document assumes familiarity with at least the I<perltoot>
+manpage and "normal" usage of the Perl*Handlers.
It isn't strictly modperl related, more like "what I use objects for
in my modperl environment".
@@ -59,7 +59,7 @@
=head1 WHY?
The short version: For pretty much the same reasons we're using OO
-perl everywhere else. :-) See L<perltoot>.
+perl everywhere else. :-) See the I<perltoot> manpage.
The slightly longer version would include some about code reusage and
more clean interface between modules.
@@ -178,5 +178,5 @@
=head1 SEE ALSO
-L<mod_perl>, L<Apache>, L<perltoot> (also available at
-C<http://www.perl.com/CPAN/doc/FMTEYEWTK/perltoot.html>)
+The L<faqs::mod_perl>, the I<Apache>, the I<perltoot> manpages (also
+available at C<http://www.perl.com/CPAN/doc/FMTEYEWTK/perltoot.html>)
1.2 +7 -6 modperl-docs/src/docs/1.0/faqs/mod_perl_traps.pod
Index: mod_perl_traps.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/faqs/mod_perl_traps.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mod_perl_traps.pod 5 Jan 2002 19:20:01 -0000 1.1
+++ mod_perl_traps.pod 27 Feb 2002 18:03:35 -0000 1.2
@@ -25,7 +25,8 @@
=item *
-Be sure to have read L<cgi_to_mod_perl>
+Be sure to have read L<First steps needed to use mod_perl as a CGI
+replacement|faqs::cgi_to_mod_perl>.
=item *
@@ -124,11 +125,11 @@
compiled into a unique package name (base on the uri). So, if
multiple scripts in the same process try to require the same file,
which does not declare a package, only one script will actually be
-able to see the subroutines. The solution is to read L<perlmodlib>,
-L<perlmod> and related perl documentation and re-work your required
-file into a module which exports functions or defines a method
-interface.
-Or something more simple, along these lines:
+able to see the subroutines. The solution is to read the
+I<perlmodlib>, the I<perlmod> manpages and related perl documentation
+and re-work your required file into a module which exports functions
+or defines a method interface. Or something more simple, along these
+lines:
#required_file.pl
package Test;
1.2 +0 -2 modperl-docs/src/docs/1.0/guide/advocacy.pod
Index: advocacy.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/advocacy.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- advocacy.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ advocacy.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -132,7 +132,5 @@
=back
-
-
=cut
1.3 +1 -4 modperl-docs/src/docs/1.0/guide/browserbugs.pod
Index: browserbugs.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/browserbugs.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- browserbugs.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ browserbugs.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -19,7 +19,6 @@
with query strings. It is not a problem when the URL is the result
of submitting a form because the browsers I<have> to get that right.
-
=head1 IE 4.x does not re-post data to a non-port-80 URL
One problem with publishing 8080 port numbers (or so I have been
@@ -27,9 +26,7 @@
URL. It drops the port designator and uses port 80 anyway.
See L<Publishing Port Numbers other than
-80|config/Publishing_Port_Numbers_other_than_80>.
-
-
+80|guide::config/Publishing_Port_Numbers_other_than_80>.
=cut
1.3 +17 -193 modperl-docs/src/docs/1.0/guide/config.pod
Index: config.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/config.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- config.pod 29 Jan 2002 15:43:13 -0000 1.2
+++ config.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -2,7 +2,6 @@
mod_perl Configuration
-
=head1 Server Configuration
The next step after building and installing your new mod_perl enabled
@@ -28,8 +27,6 @@
convenience, you could still do everything in I<httpd.conf> if you
wished.
-
-
=head1 Apache Configuration
Apache configuration can be confusing. To minimize the number of
@@ -59,7 +56,6 @@
Now you can test the server, for example by accessing http://localhost
from a browser running on the same host.
-
=head2 Configuration Directives
For a basic setup there are just a few things to configure. If you
@@ -89,7 +85,6 @@
C<E<lt>LocationE<gt>> sections) which apply only to certain areas of your Web
space. As mentioned earlier you will find them all in I<httpd.conf>.
-
=head2 .htaccess files
If there is a file with the name I<.htaccess> in any directory, Apache
@@ -109,7 +104,6 @@
directive in I<httpd.conf>, Apache will not try to look for
I<.htaccess> at all.
-
=head2 E<lt>DirectoryE<gt>, E<lt>LocationE<gt> and E<lt>FilesE<gt> Sections
I'll explain just the basics of the C<E<lt>DirectoryE<gt>>,
C<E<lt>LocationE<gt>> and
@@ -155,7 +149,6 @@
it is not. It is not always obvious which directive takes precedence
in these cases. This can be a trap for the unwary.
-
=over
=item * E<lt>Directory directoryPathE<gt> ... E<lt>/DirectoryE<gt>
@@ -210,8 +203,6 @@
=back
-
-
=item * C<E<lt>Files filenameE<gt>> ... C<E<lt>/FilesE<gt>>
Can appear in server and virtual host configurations, and I<.htaccess>
@@ -286,12 +277,8 @@
allow from .example.com
</Location>
-
=back
-
-
-
=head2 How Directory, Location and Files Sections are Merged
When configuring the server, it's important to understand the order in
@@ -315,7 +302,6 @@
=back
-
Apart from C<E<lt>DirectoryE<gt>>, each group is processed in the
order that it appears in the configuration files.
C<E<lt>DirectoryE<gt>> (group 1 above) is processed in the order
@@ -332,9 +318,6 @@
Later sections override earlier ones.
-
-
-
=head2 Sub-Grouping of E<lt>LocationE<gt>, E<lt>DirectoryE<gt> and
E<lt>FilesE<gt> Sections
Let's say that you want all files, except for a few of the files in a
@@ -358,9 +341,6 @@
sections inside a C<E<lt>LocationE<gt>> section, but you can put them
inside a C<E<lt>DirectoryE<gt>> section.
-
-
-
=head2 Options Directive
Normally, if multiple C<Options> directives apply to a directory, then
@@ -394,9 +374,6 @@
then the options C<FollowSymLinks> and C<Includes> are set for the
I</home/httpd/docs/shtml> directory.
-
-
-
=head1 mod_perl Configuration
When you have tested that the Apache server works on your machine,
@@ -425,7 +402,6 @@
program can be executed (also at server startup time) simply by
mentioning its name in a C<PerlRequire> or C<PerlModule> directive.
-
=head2 Alias Configurations
The C<ScriptAlias> and C<Alias> directives provide a mapping of a URI
@@ -462,7 +438,7 @@
directive (for example C<PerlHandler>) tells mod_perl which handler
(Perl module) the script should be run under, and hence for which
phase of the request. Refer to the section
-L<Perl*Handlers|config/Perl_Handlers> for more information about
+L<Perl*Handlers|guide::config/Perl_Handlers> for more information about
handlers for the various request phases.
When you have decided which methods to use to run your scripts and
@@ -512,9 +488,7 @@
mod_cgi mode from a mod_perl-enabled server--the resource consumption
is too high. It is better to run these on a plain Apache server. See
L<Standalone mod_perl Enabled Apache
-Server|strategy/Standalone_mod_perl_Enabled_Apac>.
-
-
+Server|guide::strategy/Standalone_mod_perl_Enabled_Apac>.
=head2 E<lt>LocationE<gt> Configuration
@@ -618,7 +592,7 @@
Here is another very similar example, this time using
C<Apache::PerlRun> (For more information see
-L<Apache::PerlRun|porting/Apache__PerlRun__a_closer_look>):
+L<Apache::PerlRun|guide::porting/Apache__PerlRun__a_closer_look>):
<Location /cgi-perl>
SetHandler perl-script
@@ -628,12 +602,10 @@
PerlSendHeader On
</Location>
-
The only difference from the C<Apache::Registry> configuration is the
argument of the C<PerlHandler> directive, where C<Apache::Registry>
has been replaced with C<Apache::PerlRun>.
-
=head2 Overriding E<lt>LocationE<gt> Setting in "Sub-Location"
So if you have:
@@ -654,8 +626,6 @@
Now, all the requests starting with I</foo/bar> would be served by
Apache's default handler.
-
-
=head2 PerlModule and PerlRequire Directives
As we saw earlier, a module should be loaded before it is used.
@@ -681,11 +651,6 @@
C<require()>'d, it must return a I<true> value. To ensure that this
happens don't forget to add C<1;> at the end of I<startup.pl>.
-
-
-
-
-
=head2 Perl*Handlers
As you probably know Apache traverses a loop for each HTTP request it
@@ -716,7 +681,7 @@
I<Makefile.PL> file for its compilation, you must specify whether or
not you will want to handle parts of the request loop other than the
usual content generation phase. If so you need to specify which
-parts. See the "L<Callback Hooks|install/Callback_Hooks>" section for
+parts. See the "L<Callback Hooks|guide::install/Callback_Hooks>" section for
how to do this.
Apache specifies about eleven phases of the request loop, namely (and
@@ -766,7 +731,6 @@
PerlDispatchHandler
PerlRestartHandler
-
C<PerlChildInitHandler> and C<PerlChildExitHandler> do not refer to
parts of the request loop, they are to allow your modules to
initialize data structures and to clean up at the child process
@@ -800,10 +764,9 @@
The Apache documentation will tell you all about these stages and what
your modules can do. By default, most of these hooks are disabled at
-compile time, see the"L<Callback Hooks|install/Callback_Hooks>"
+compile time, see the"L<Callback Hooks|guide::install/Callback_Hooks>"
section for information on enabling them.
-
=head2 The handler subroutine
By default the mod_perl API expects a subroutine called C<handler()>
@@ -853,12 +816,6 @@
$r->warn("Logging request");
}
-
-
-
-
-
-
=head2 Stacked Handlers
With the mod_perl stacked handlers mechanism, during any stage of a
@@ -1016,17 +973,11 @@
% perl Makefile.PL PERL_STACKED_HANDLERS=1 [ ... ]
-
If you want to test whether your running mod_perl Apache can stack
handlers, the method C<Apache-E<gt>can_stack_handlers> will return
C<TRUE> if mod_perl was configured with C<PERL_STACKED_HANDLERS=1>,
and C<FALSE> otherwise.
-
-
-
-
-
=head2 Perl Method Handlers
If a C<Perl*Handler> is prototyped with C<$$>, this handler will be
@@ -1071,17 +1022,6 @@
% perl Makefile.PL PERL_METHOD_HANDLERS=1 [ ... ]
-
-
-
-
-
-
-
-
-
-
-
=head2 PerlFreshRestart
To reload C<PerlRequire>, C<PerlModule> and other C<use()>'d modules,
@@ -1091,7 +1031,7 @@
PerlFreshRestart On
Make sure you read L<Evil things might happen when using
-PerlFreshRestart|troubleshooting/Evil_things_might_happen_when_us>.
+PerlFreshRestart|guide::troubleshooting/Evil_things_might_happen_when_us>.
Starting from mod_perl version 1.22 C<PerlFreshRestart> is ignored
when mod_perl is compiled as a DSO. But it almost doesn't matter,
@@ -1105,9 +1045,6 @@
and mod_perl as a DSO you will still get a I<FreshRestart>.
-
-
-
=head2 PerlSetVar, PerlSetEnv and PerlPassEnv
PerlSetEnv key val
@@ -1120,7 +1057,7 @@
Regarding the setting of C<PerlPassEnv PERL5LIB> in I<httpd.conf>: if
you turn on taint checks (C<PerlTaintCheck On>), C<$ENV{PERL5LIB}>
will be ignored (unset). See the 'L<Switches -w,
--T|porting/Command_Line_Switches_w_T_e>' section.
+-T|guide::porting/Command_Line_Switches_w_T_e>' section.
C<PerlSetVar> is very similar to C<PerlSetEnv>, but you extract it
with another method.
@@ -1180,23 +1117,14 @@
C<$ENV{ORACLE_HOME}> (or another environment variable that you need in
these early request processing stages).
-
-
=head2 PerlSetupEnv
-See L<PerlSetupEnv Off|performance/PerlSetupEnv_Off>.
-
-
-
-
+See L<PerlSetupEnv Off|guide::performance/PerlSetupEnv_Off>.
=head2 PerlWarn and PerlTaintCheck
For B<PerlWarn> and B<PerlTaintCheck> directives see the 'L<Switches
--w, -T|porting/Command_Line_Switches_w_T_e>' section.
-
-
-
+-w, -T|guide::porting/Command_Line_Switches_w_T_e>' section.
=head2 MinSpareServers MaxSpareServers StartServers MaxClients
MaxRequestsPerChild
@@ -1216,13 +1144,9 @@
These five directives are very important for achieving the best
performance from your server. The section ' L<Performance Tuning by
Tweaking Apache
-Configuration|performance/Performance_Tuning_by_Tweaking_A>' provides
+Configuration|guide::performance/Performance_Tuning_by_Tweaking_A>' provides
all the details.
-
-
-
-
=head1 The Startup File
At server startup, before child processes are spawned to receive
@@ -1386,13 +1310,7 @@
But the old method is still available for backward compatibility.
See also the 'L<Apache::Status -- Embedded interpreter status
-information|debug/Apache_Status_Embedded_Inter>' section.
-
-
-
-
-
-
+information|guide::debug/Apache_Status_Embedded_Inter>' section.
=head2 What Modules You Should Add to the Startup File and Why
@@ -1402,21 +1320,17 @@
You can even preload your CGI script with C<Apache::RegistryLoader>
(See L<Preload Perl modules at server
-startup|performance/Preloading_Perl_Modules_at_Serve>) and you can get
+startup|guide::performance/Preloading_Perl_Modules_at_Serve>) and you can get
the children to preopen their database connections with
C<Apache::DBI>.
-
-
-
-
=head2 The Confusion with use() in the Server Startup File
Some people wonder why you need to duplicate the C<use()> clause in
the startup file and in the script itself. The confusion arises due to
misunderstanding the C<use()> function. C<use()> normally performs two
operations, namely C<require()> and C<import()>, called within a
-C<BEGIN> block. See the section "L<use()|perl/use__>" for a detailed
+C<BEGIN> block. See the section "L<use()|guide::perl/use__>" for a detailed
explanation of the use(), require() and import() functions.
In the startup file we don't want to import any symbols since they
@@ -1478,14 +1392,6 @@
Read the C<Exporter> and C<perlmod> manpages for more information
about C<import()>.
-
-
-
-
-
-
-
-
=head1 Apache Configuration in Perl
With C<E<lt>PerlE<gt>>...C<E<lt>/PerlE<gt>> sections, it is possible
@@ -1589,7 +1495,6 @@
}
</Perl>
-
Behind the scenes, mod_perl defines a package called
C<Apache::ReadConfig>. Here it keeps all the variables that you
define inside the C<E<lt>PerlE<gt>> sections. Therefore it's not
@@ -1619,15 +1524,11 @@
----------
PerlRequire /home/httpd/perl/lib/apache_config.pl
-
-
-
=head2 Enabling
To enable C<E<lt>PerlE<gt>> sections you should build mod_perl with
S<perl Makefile.PL PERL_SECTIONS=1 [ ... ]>.
-
=head2 Caveats
Be careful when you declare package names inside C<E<lt>PerlE<gt>>
@@ -1659,8 +1560,6 @@
$PerlTransHandler = "My::Trans";
</Perl>
-
-
=head2 Verifying
This section shows how to check and dump the configuration you have
@@ -1681,7 +1580,7 @@
In a running httpd you can see how you have configured the
C<E<lt>PerlE<gt>> sections through the URI
-L</perl-status|debug/Apache__Status____Embedded_Interpreter_Status_Information>,
by choosing I<Perl
+L</perl-status|guide::debug/Apache__Status____Embedded_Interpreter_Status_Information>,
by choosing I<Perl
Section Configuration> from the menu. In order to make this item show
up in the menu you should set C<$Apache::Server::SaveConfig> to a true
value. When you do that the I<Apache::ReadConfig> namespace (in which
@@ -1718,7 +1617,6 @@
You can then C<require()> that file in some other C<E<lt>PerlE<gt>>
section.
-
=head2 Strict C<E<lt>PerlE<gt>> Sections
If the Perl code doesn't compile, the server won't start. If the
@@ -1736,11 +1634,10 @@
and will C<croak> (die) if this is the case. At the time of writing the
default value is C<0>.
-
=head2 Debugging
If you compile mod_perl with C<PERL_TRACE=1> and set the environment
-variable L<MOD_PERL_TRACE|debug/Debug_Tracing> then you should see
+variable L<MOD_PERL_TRACE|guide::debug/Debug_Tracing> then you should see
some useful diagnostics when mod_perl is processing C<E<lt>PerlE<gt>>
sections.
@@ -1751,8 +1648,6 @@
META: a direct link?
-
-
=head1 Validating the Configuration Syntax
C<apachectl configtest> tests the configuration file without starting
@@ -1784,13 +1679,6 @@
return if Apache->define('syntax_check');
-
-
-
-
-
-
-
=head1 Enabling Remote Server Configuration Reports
The nifty mod_info module displays the complete server configuration
@@ -1809,9 +1697,6 @@
http://www.example.com/server-info
-
-
-
=head1 Publishing Port Numbers other than 80
If you are using a two-server setup, with a mod_perl server listening
@@ -1832,12 +1717,6 @@
closed, therefore users behind the firewalls will be unable to reach
your service, running on the blocked port.
-
-
-
-
-
-
=head1 Configuring Apache + mod_perl with mod_macro
mod_macro is an Apache module written by Fabien Coelho that lets you
@@ -1882,7 +1761,6 @@
# example
Use registry stuff stuff.pl
-
If you're using content handlers packaged as modules, you can use the
following macro:
@@ -1967,16 +1845,8 @@
reader. These can be easily constructed based on the examples
presented in this section.
-
-
-
-
-
=head1 General Pitfalls
-
-
-
=head2 My CGI/Perl Code Gets Returned as Plain Text Instead of Being
Executed by the Webserver
Check your configuration files and make sure that the C<ExecCGI> is
@@ -1990,41 +1860,23 @@
PerlSendHeader On
</Location>
-
-
-
-
-
=head2 My Script Works under mod_cgi, but when Called via mod_perl I Get a
'Save-As' Prompt
Did you put B<PerlSendHeader On> in the configuration part of the
C<E<lt>Location fooE<gt>E<lt>/LocationE<gt>>.
-
-
-
-
-
=head2 Is There a Way to Provide a Different startup.pl File for Each
Individual Virtual Host
No. Any virtual host will be able to see the routines from a I<startup.pl>
loaded for any other virtual host.
-
-
-
-
=head2 Is There a Way to Modify @INC on a Per-Virtual-Host or Per-Location
Basis.
You can use C<PerlSetEnv PERL5LIB ...> or a C<PerlFixupHandler> with
the C<lib> pragma (C<use lib qw(...)>).
A better way is to use
-L<Apache::PerlVINC|modules/Apache__PerlVINC___Allows_Module_Versioning_in_Location_blocks_and_Virtual_Hosts>
-
-
-
-
+L<Apache::PerlVINC|guide::modules/Apache__PerlVINC___Allows_Module_Versioning_in_Location_blocks_and_Virtual_Hosts>
=head2 A Script From One Virtual Host Calls a Script with the Same Path From
the Other Virtual Host
@@ -2044,12 +1896,6 @@
$Apache::Registry::NameWithVirtualHost = 0;
-
-
-
-
-
-
=head2 the Server no Longer Retrieves the DirectoryIndex Files for a
Directory
The problem was reported by users who declared mod_perl configuration
@@ -2123,10 +1969,6 @@
that last regex could be rewritten as C<^(/.+)$> and all would be
well.
-
-
-
-
=head1 Configuration Security Concerns
It is better not to advertise the port that mod_perl server uses to
@@ -2135,7 +1977,7 @@
on.
For more information see L<Publishing Port Numbers other than
-80|config/Publishing_Port_Numbers_other_th>.
+80|guide::config/Publishing_Port_Numbers_other_th>.
The more modules you have in your web server, the more complex the
code.
@@ -2179,12 +2021,6 @@
So as you see that a lot of information is revealed and a C<Full>
C<ServerTokens> has been used.
-
-
-
-
-
-
=head1 Apache Restarts Twice On Start
When the server is restarted, the configuration and module
@@ -2238,15 +2074,6 @@
8001. In the mod_perl server just check the C<PORT> variable to tell
if the connection is secure.
-
-
-
-
-
-
-
-
-
=head1 Adding Custom Configuration Directives
This is covered in the Eagle Book in a great detail. This is just a
@@ -2277,8 +2104,6 @@
'INC' => Apache::src->new->inc,
);
-
-
TestDirective.pm
----------------
package Apache::TestDirective;
@@ -2300,7 +2125,6 @@
1;
__END__
-
In the mod_perl source tree, add this to I<t/docs/startup.pl>:
1.3 +7 -65 modperl-docs/src/docs/1.0/guide/control.pod
Index: control.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/control.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- control.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ control.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -28,7 +28,7 @@
children) processes. You are looking for the parent process. If you
run your server as root, you will easily locate it since it belongs to
root. If you run the server as some other user (when you L<don't have
-root access|install/Installation_Without_Superuser_P>, the processes
+root access|guide::install/Installation_Without_Superuser_P>, the processes
will belong to that user unless defined differently in I<httpd.conf>.
It's still easy to find which is the parent--usually it's the process
with the smallest PID.
@@ -52,7 +52,6 @@
be omitted and under some operating systems they will need to be preceded by
a minus sign, e.g. C<kill -15> or C<kill -TERM> followed by the PID.
-
=head1 Server Stopping and Restarting
We will concentrate here on the implications of sending C<TERM>,
@@ -99,7 +98,6 @@
happens when Perl code loaded in memory is not completely torn down,
leading to a memory leak.
-
=item USR1 Signal: Gracefully Restart Now
The C<USR1> signal causes the parent process to advise the children to
@@ -126,8 +124,7 @@
PerlFreshRestart On
Make sure you read L<Evil things might happen when using
-PerlFreshRestart|troubleshooting/Evil_things_might_happen_when_us>.
-
+PerlFreshRestart|guide::troubleshooting/Evil_things_might_happen_when_us>.
=head1 Speeding up the Apache Termination and Restart
@@ -161,9 +158,6 @@
lock on some resource are significant operations, but closing an
ordinary file isn't.
-
-
-
=head1 Using apachectl to Control the Server
The Apache distribution comes with a script to control the server.
@@ -204,11 +198,6 @@
delete the PID file by hand while the server is running, C<apachectl>
will be unable to stop or restart the server.
-
-
-
-
-
=head1 Safe Code Updates on a Live Production Server
You have prepared a new version of code, uploaded it into a production
@@ -304,9 +293,6 @@
Usually everything will be fine, and I have had only about 10 seconds
of downtime, which is pretty good!
-
-
-
=head1 An Intentional Disabling of Live Scripts
What happens if you really must take down the server or disable the
@@ -318,7 +304,7 @@
happened> message or perhaps a customized error message if you have
added code to trap and customize the errors. See L<Redirecting Errors
to the Client instead of to the
-error_log|snippets/Redirecting_Errors_to_the_Client> for the latter
+error_log|guide::snippets/Redirecting_Errors_to_the_Client> for the latter
case.
A much friendlier approach is to confess to your users that you are
@@ -423,14 +409,6 @@
If you need to disable a location handled by some module, the second
approach would work just as well.
-
-
-
-
-
-
-
-
=head1 SUID Start-up Scripts
If you want to allow a few people in your team to start and stop the
@@ -519,7 +497,6 @@
users to start the server as root user, the rest is exactly the same
as if you were executing the script as root in first place.
-
=head2 Sample Apache Startup SUID Script
Now if you are still with us, here is an example of the setuid Apache
@@ -581,11 +558,6 @@
die "Script must be named start_httpd, stop_httpd, or restart_httpd.\n";
-
-
-
-
-
=head1 Preparing for Machine Reboot
When you run your own development box, it's okay to start the
@@ -763,10 +735,6 @@
I</etc/rc.d/init.d> is what matters and not the name of the script the
link points to.
-
-
-
-
=head1 Monitoring the Server. A watchdog.
With mod_perl many things can happen to your server. It is possible
@@ -938,16 +906,12 @@
close MAIL;
}
-
-
-
-
=head1 Running a Server in Single Process Mode
Often while developing new code, you will want to run the server in
single process mode. See L<Sometimes it works Sometimes it does
-Not|porting/Sometimes_it_Works_Sometimes_it> and L<Names collisions
-with Modules and libs|porting/Name_collisions_with_Modules_and>.
+Not|guide::porting/Sometimes_it_Works_Sometimes_it> and L<Names collisions
+with Modules and libs|guide::porting/Name_collisions_with_Modules_and>.
Running in single process mode inhibits the server from "daemonizing",
and this allows you to run it under the control of a debugger more
easily.
@@ -978,12 +942,6 @@
forking any children, there is no controlling parent to write the
status messages.
-
-
-
-
-
-
=head1 Starting a Personal Server for Each Developer
If you are the only developer working on the specific server:port you
@@ -1130,12 +1088,8 @@
bypass the light server listening to the default port 80, and go
directly to the I<server:port> of the full URI.
-
-
-
=head1 Wrapper to Emulate the Server Perl Environment
-
Often you will start off debugging your script by running it from your
favorite shell program. Sometimes you encounter a very weird
situation when the script runs from the shell but dies when processed
@@ -1235,8 +1189,6 @@
# Note that we set Warning and Taint modes ON!!!
system qq{/usr/bin/perl -I$PERL5LIB -Tw $cgi $params};
-
-
=head1 Server Maintenance Chores
It's not enough to have your server and service up and running. You
@@ -1257,8 +1209,6 @@
aren't covered here, but at least you will be alerted that these
chores are real and should be taken care of.
-
-
=head2 Handling Log Files
There are two issues to solve with log files. First they should be
@@ -1422,8 +1372,6 @@
Can you spot the security holes? Take your time... This code
shouldn't be used in hostile situations.
-
-
=head3 Non-Scheduled Emergency Log Rotation
As we have mentioned before, there are times when the web server goes
@@ -1482,8 +1430,6 @@
will work very slowly if at all, and a normal watchdog should detect
this abnormal situation and restart the Apache server.
-
-
=head1 Swapping Prevention
Before I delve into swapping process details, let's refresh our
@@ -1621,7 +1567,7 @@
of possible processes will be small enough using the C<MaxClients>
directive (For the technique for choosing the right C<MaxClients>
refer to the section 'L<Choosing
-MaxClients|performance/Choosing_MaxClients>'). This will ensure that
+MaxClients|guide::performance/Choosing_MaxClients>'). This will ensure that
at peak hours the system won't swap. Remember that swap space is an
emergency pool, not a resource to be used routinely. If you are low
on memory and you badly need it, buy it or reduce the number of
@@ -1637,9 +1583,7 @@
For swapping monitoring techniques see the section 'L<Apache::VMonitor
-- Visual System and Apache Server
-Monitor|debug/Apache_VMonitor_Visual_Syste>'.
-
-
+Monitor|guide::debug/Apache_VMonitor_Visual_Syste>'.
=head1 Preventing mod_perl Processes From Going Wild
@@ -1666,10 +1610,8 @@
do the latter. Putting it in all your mod_perl modules would be
redundant (and might give you compile-time errors).
-
This will produce a nice error in I<error_log>, giving the line number
of the call and the name of the undefined subroutine.
-
=cut
1.3 +6 -14 modperl-docs/src/docs/1.0/guide/correct_headers.pod
Index: correct_headers.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/correct_headers.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- correct_headers.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ correct_headers.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -37,16 +37,16 @@
If the number of hits is significant, you might want to consider what
cache-friendliness means (you may also want to read
-L<[4]|correct_headers/_4_>) and how you can cooperate with caches to
+L<[4]|guide::correct_headers/_4_>) and how you can cooperate with caches to
increase the performance of your site. Especially if you use Squid in
accelerator mode (helpful hints for Squid, see
-L<[1]|correct_headers/_1_>), you will have a strong motivation to
+L<[1]|guide::correct_headers/_1_>), you will have a strong motivation to
cooperate with it. This document may help you to do it correctly.
=head1 2) Which Headers
-The HTTP standard (v 1.1 is specified in L<[3]|correct_headers/_3_>, v
-1.0 in L<[2]|correct_headers/_2_>) describes lots of headers. In this
+The HTTP standard (v 1.1 is specified in L<[3]|guide::correct_headers/_3_>, v
+1.0 in L<[2]|guide::correct_headers/_2_>) describes lots of headers. In this
document, we only discuss those headers which are most relevant to
caching.
@@ -118,7 +118,7 @@
use Date::Parse;
# Date::Parse parses RCS format, Apache::Util::parsedate doesn't
$Mtime ||=
- Date::Parse::str2time(substr q$Date: 2002/02/04 13:50:25 $, 6);
+ Date::Parse::str2time(substr q$Date: 2002/02/27 18:03:36 $, 6);
$r->set_last_modified($Mtime);
=head2 2.1.3) Expires and Cache-Control
@@ -199,7 +199,6 @@
problem that remains is that there are broken browsers which ignore
C<Expires> headers.
-
=head2 2.2) Content Related Headers
=head2 2.2.1) Content-Type
@@ -215,7 +214,6 @@
is specified in the relevant C<DefaultType> configuration directive or
C<text/plain> if none is active.
-
=head2 2.2.2) Content-Length
According to section 14.13 of the HTTP specifications, the
@@ -385,7 +383,6 @@
workaround, you won't enjoy your Squid accelerator for these documents
:-(
-
=head1 3) Requests
Section 13.11 of the specifications states that the only two cacheable
@@ -506,7 +503,6 @@
http://example.com/query;BGCOLOR=blue;FGCOLOR=red;FONT=/font/bla
-
=head2 3.4) Conditional GET
A rather challenging request mod_perl programmers can get is the
@@ -530,7 +526,7 @@
value of this method is anything other than C<OK>, you should return
that value from your handler and you're done. Apache handles the rest
for you. The following example is taken from
-L<[5]|correct_headers/_5_>:
+L<[5]|guide::correct_headers/_5_>:
if((my $rc = $r->meets_conditions) != OK) {
return $rc;
@@ -570,7 +566,6 @@
would use the out of date C<finfo> when generating the response
header.
-
=head1 References
=head2 [1]
@@ -622,10 +617,7 @@
=item *
-
=back
-
-
=cut
1.3 +2 -19 modperl-docs/src/docs/1.0/guide/databases.pod
Index: databases.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/databases.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- databases.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ databases.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -34,7 +34,6 @@
It's almost as straightforward as is it sounds; there are just a few
things to know about and we will cover them in this section.
-
=head2 Introduction
The DBI module can make use of the C<Apache::DBI> module. When it
@@ -156,12 +155,11 @@
connection won't be closed either.
See the section L<Handling the 'User pressed Stop button'
-case|debug/Handling_the__User_pressed_Stop_button__case>
+case|guide::debug/Handling_the__User_pressed_Stop_button__case>
for more information on prevention.
=head2 Troubleshooting
-
=head3 The Morning Bug
The SQL server keeps a connection to the client open for a limited
@@ -204,7 +202,6 @@
it from the cache. So always initiate connections using the same
parameters and set C<LongReadLen> (or whatever) afterwards.
-
=head3 Cannot find the DBI handler
You must use C<DBI::connect()> as in normal DBI usage to get your $dbh
@@ -215,7 +212,6 @@
return your cached connection. Any C<disconnect()> call will be just
ignored.
-
=head3 Apache:DBI does not work
Make sure you have it installed.
@@ -236,7 +232,6 @@
and adapt the connect string. Do not change anything in your scripts
for use with C<Apache::DBI>.
-
=head3 Skipping connection cache during server startup
Does your error_log look like this?
@@ -258,8 +253,6 @@
You must use the C<Apache::DBI-E<gt>connect_on_init()> method in the
startup file.
-
-
=head3 Debugging code which deploys DBI
To log a trace of C<DBI> statement execution, you must set the
@@ -310,7 +303,6 @@
=back
-
=head1 mysql_use_result vs. mysql_store_result.
Since many mod_perl developers use mysql as their preferred SQL
@@ -344,7 +336,6 @@
This can tie up the server and prevent other threads from updating the
tables.
-
=head1 Optimize: Run Two SQL Engine Servers
Sometimes you end up running many databases on the same machine. These
@@ -358,10 +349,9 @@
performance needs.
This is basically a similar idea to having L<two Apache
-servers|strategy/One_Plain_Apache_and_One_mod_perl_enabled_Apache_Servers>,
+servers|guide::strategy/One_Plain_Apache_and_One_mod_perl_enabled_Apache_Servers>,
each optimized for its specific requirements.
-
=head1 Some useful code snippets to be used with relational Databases
In this section you will find scripts, modules and code snippets to
@@ -389,7 +379,6 @@
(Note that you will not find this on CPAN. at least not yet :)
-
=head2 My::DB Module's Usage Examples
To use C<My::DB> in your script, you first have to create a C<My::DB>
@@ -419,7 +408,6 @@
$total++;
}
-
Now let's count how many users we have (in table C<users>):
my $count = $db_obj->sql_count_matched("users");
@@ -449,7 +437,6 @@
return "Current status: Is Online and idle for $idle minutes.";
}
-
A complex query. I join two tables, and I want a reference to an array
which will store a slice of the matched query (C<LIMIT $offset,$hits>)
sorted by C<username>. Each row in the array is to include the fields
@@ -552,9 +539,5 @@
# Now %matched includes the usernames of the users who are being
# watched by $username and currently are online.
-
=cut
-
-
-
1.4 +3 -13 modperl-docs/src/docs/1.0/guide/dbm.pod
Index: dbm.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/dbm.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- dbm.pod 4 Feb 2002 14:16:49 -0000 1.3
+++ dbm.pod 27 Feb 2002 18:03:36 -0000 1.4
@@ -2,8 +2,6 @@
mod_perl and dbm files
-
-
=head1 Where and Why to use dbm files
Some of the earliest databases implemented on Unix were dbm files, and
@@ -207,7 +205,7 @@
The result is a starving process, which will timeout the request, and
it will fail to update the DB. Ken Williams solved the above problem
-with his L<C<Tie::DB_Lock>|dbm/mod_perl_and_dbm> module, which is
+with his L<C<Tie::DB_Lock>|guide::dbm/mod_perl_and_dbm> module, which is
discussed in one of the following sections.
There are several locking wrappers for C<DB_File> in CPAN right now.
@@ -215,7 +213,6 @@
mind. It is therefore worth knowing the difference, so that you can
pick the right one for your application.
-
=head1 Flawed Locking Methods Which Must Not Be Used
I<Caution>: The suggested locking methods in the Camel book and
@@ -307,9 +304,6 @@
file before tie()-ing it, untie() it before releasing the lock, and
in the case of write to call sync() before untie()-ing it.
-
-
-
=head1 Locking Wrappers Overview
Here are some of the correctly working dbm locking wrappers on (three
@@ -326,7 +320,7 @@
wrapper in situations where reads may be very lengthy and therefore
write starvation problem may occur. On the other hand if you have big
dbm files, it may create a big load on the system if the updates are
-quite frequent. L<More information|dbm/mod_perl_and_dbm>.
+quite frequent. L<More information|guide::dbm/mod_perl_and_dbm>.
=item *
@@ -350,7 +344,7 @@
=item *
-L<C<DB_File::Lock2>|dbm/mod_perl_and_dbm> -- does the same thing as
+L<C<DB_File::Lock2>|guide::dbm/mod_perl_and_dbm> -- does the same thing as
C<DB_File::Lock>, but has a slightly different implementation. I
wrote it before David Harris released his C<DB_File::Lock> and I
didn't want to kill mine, so I'll keep it here for a while :).
@@ -368,7 +362,6 @@
=back
-
=head1 Tie::DB_Lock
C<Tie::DB_Lock> ties hashes to databases using shared and exclusive
@@ -391,9 +384,6 @@
copied, and puts the responsibility of copying the read-only file on
the writer, not the reader. It would need some care to make sure it
does not disturb readers when putting a new read-only copy into place.
-
-
-
=head1 DB_File::Lock2
1.3 +15 -238 modperl-docs/src/docs/1.0/guide/debug.pod
Index: debug.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/debug.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- debug.pod 21 Feb 2002 09:08:38 -0000 1.2
+++ debug.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -2,7 +2,6 @@
Debugging mod_perl
-
=head1 Warning and Errors Explained
Let's talk first about things that bother most web (and non-web)
@@ -11,8 +10,6 @@
turning this obvious to the newbie programmer enemies into our best
friends.
-
-
=head2 Curing The "Internal Server Error"
You have just installed this new CGI script and when you try it out
@@ -234,14 +231,6 @@
Second problem solved!
-
-
-
-
-
-
-
-
=head2 Helping error_log to Help Us
It's a good idea to keep it open all the time in a dedicated terminal
@@ -281,10 +270,7 @@
of colored output for easier reading). You might need to ask your ISP
to install this script for general use. See L<Watching the error_log
file without telneting to the
-server|snippets/Watching_the_error_log_File_With> .
-
-
-
+server|guide::snippets/Watching_the_error_log_File_With> .
=head2 The Importance of Warnings
@@ -383,18 +369,6 @@
The C<diagnostics> pragma can shed more light on errors and warnings,
as you will see in a moment.
-
-
-
-
-
-
-
-
-
-
-
-
=head3 diagnostics pragma
This module extends the terse diagnostics normally emitted by both the
@@ -422,14 +396,7 @@
C<diagnostics> mode adds a large performance overhead in comparison
with just having warnings mode On. You can see the benchmark results
in the section 'L<Code Profiling
-Techniques|performance/Code_Profiling_Techniques>'.
-
-
-
-
-
-
-
+Techniques|guide::performance/Code_Profiling_Techniques>'.
=head1 Handling the 'User pressed Stop button' case
@@ -491,8 +458,6 @@
127.0.0.1 - - [09/Jan/2001:10:28:18 +0100]
"GET /perl/test.pl HTTP/1.0" 200 10 -
-
-
=head2 Detecting Aborted Connections
Let's use the knowledge we have acquired to trace the execution of the
@@ -660,7 +625,6 @@
reopen with the open() call, which first closes a file. Let's see
what problems we might encounter, and possible solutions for them.
-
=head3 Critical Section
First we want to make a little detour to discuss the I<"critical
@@ -854,7 +818,6 @@
creating a new array and copying lines from one array to another, we
append the file directly to the C<@lines> array.
-
=head3 Safe Resource Locking and Cleanup Code
Let's get back to the main issue of this section, which is safe
@@ -1103,14 +1066,10 @@
C<Apache::MyModule::cleanup()> performs the cleanup, obviously.
-
-
-
-
=head1 Handling Server Timeout Cases and Working with $SIG{ALRM}
A similar situation to L<Pressed Stop button
-disease|debug/Handling_the_User_pressed_Stop_> happens when the
+disease|guide::debug/Handling_the_User_pressed_Stop_> happens when the
browser times out the connection (is it about 2 minutes?). There are
cases when your script is about to perform a very long operation and
there is a chance that its duration will be longer than the client's
@@ -1131,19 +1090,12 @@
It was recently discovered that C<local $SIG{'ALRM'}> does not restore
the original underlying C handler. This was fixed in mod_perl 1.19_01
-(L<CVS version|download/mod_perl>). As a matter of fact none of the
+(L<CVS version|guide::download/mod_perl>). As a matter of fact none of the
C<local $SIG{FOO}> signals restores the original C handler - read
L<Debugging Signal Handlers
-($SIG{FOO})|debug/Debugging_Signal_Handlers_SIG_> for a debug
+($SIG{FOO})|guide::debug/Debugging_Signal_Handlers_SIG_> for a debug
technique and a possible workaround.
-
-
-
-
-
-
-
=head1 Looking inside the server
Your server is up and running, but something appears to be wrong. You
@@ -1188,7 +1140,7 @@
If you don't put C<Apache::Status> before C<Apache::DBI>, you won't
get the C<Apache::DBI> menu entry in the status. For more about
C<Apache::DBI> see L<Persistent DB
-Connections|performance/Persistent_DB_Connections>.
+Connections|guide::performance/Persistent_DB_Connections>.
=head3 Extended Configuration
@@ -1269,7 +1221,6 @@
There is more information about C<Apache::Status> in its manpage.
-
=head3 Usage
Assuming that your mod_perl server listens on port 81, fetch
@@ -1310,7 +1261,6 @@
child has not yet compiled the script you are asking for,
I</perl-status> will just show you the main menu.
-
=head2 mod_status
The Status module allows a server administrator to find out how well
@@ -1344,7 +1294,6 @@
the page http://localhost/status (as long as your server recognizes
localhost:).
-
The details given by mod_status are:
=over
@@ -1371,30 +1320,15 @@
=back
-
-
=head2 Apache::VMonitor -- Visual System and Apache Server Monitor
This module is covered in the section "L<Apache::*
-Modules|modules/Apache_VMonitor_Visual_Syste>"
-
-
-
-
-
-
-
+Modules|guide::modules/Apache_VMonitor_Visual_Syste>"
=head1 Sometimes My Script Works, Sometimes It Does Not
See L<Sometimes it Works Sometimes it does
-Not|porting/Sometimes_it_Works_Sometimes_it>
-
-
-
-
-
-
+Not|guide::porting/Sometimes_it_Works_Sometimes_it>
=head1 Code Debug
@@ -1449,14 +1383,10 @@
itself (mod_perl is written in C), that was in a deep slumber before
your code awakened it.
-
In the following sections we will go through in detail each of the
problems presented, thoroughly discuss them and present a few
techniques to solve them.
-
-
-
=head2 Locating and correcting Syntax Errors
While developing code we often make syntax mistakes, like forgetting
@@ -1560,12 +1490,6 @@
You are OK www.foo.com
-
-
-
-
-
-
=head2 Finding the Line Which Triggered the Error or Warning
Perl has no problem with the line numbers and file names for modules
@@ -1629,7 +1553,6 @@
use Carp ();
local $SIG{__WARN__} = \&Carp::cluck;
-
=head2 Using print() for Debugging
The universal debugging tool across nearly all platforms and
@@ -1791,8 +1714,6 @@
my ($day,$month,$year) = (localtime)[3..5];
$month++;
-
-
=head2 Using print() and Data::Dumper for Debugging
Sometimes you need to peek into complex data structures, and trying to
@@ -1828,7 +1749,6 @@
]
};
-
While writing this example I made a mistake and wrote C<qw(a b c d)>
instead of C<[qw(a b c d)]>. When I pretty-printed the contents of
C<$data> I immediately saw my mistake:
@@ -1854,7 +1774,6 @@
instead of print to have all the debug messages in the error_log,
which makes it even easier to debug your code.
-
=head2 The Importance of a Good Concise Coding Style
Don't strive for elegant, clever code. Try to develop a good coding
@@ -1964,7 +1883,6 @@
as fast as the first), but because there are more ways to put a bug in
the first version than there are in the last one.
-
=head2 Introduction to the Perl Debugger
As we saw earlier, it's I<almost> always possible to debug code with
@@ -2163,7 +2081,6 @@
print "$sym\n";
-
% perl -d test.pl
main::(test.pl:3): my $sym = Symbol::gensym();
@@ -2282,7 +2199,6 @@
return $retval;
}
-
We'll start by setting a few breakpoints and then we use the C<List>
command (C<L>) to display them:
@@ -2475,7 +2391,6 @@
return $retval;
}
-
There are only two arguments in the list, so stopping to look at each
one isn't too time consuming, but consider the debugging pace if we
had a large list of 100 or so entries. It is possible to customize
@@ -2586,16 +2501,10 @@
ptkdb is not part of the standard perl distribution; it
is available from CPAN: http://www.perl.com/CPAN/authors/id/A/AE/AEPAGE/
-
-
-
-
-
=head2 Non-Interactive Perl Debugging under mod_perl
-
To debug scripts running under mod_perl either use L<Apache::DB
-(interactive Perl debugging)|debug/Interactive_mod_perl_Debugging> or
+(interactive Perl debugging)|guide::debug/Interactive_mod_perl_Debugging> or
an older non-interactive method as described below.
The C<NonStop> debugger option enables you to get some decent debugging
@@ -2767,18 +2676,6 @@
debugger for various situations. Once you have a good strategy, bug
squashing can actually be quite a bit of fun!
-
-
-
-
-
-
-
-
-
-
-
-
=head2 ptkdb and Interactive mod_perl Debugging
As you saw earlier you can use the C<ptkdb> visual debugger to
@@ -2822,11 +2719,6 @@
Any Perl/Tk guru to assist???
-
-
-
-
-
=head2 Debugging when Server Crashes on Startup before Writing to Log File.
If your server crashes on startup, you need to start it under gdb and
@@ -2922,8 +2814,6 @@
#0 0x400da4e1 in __kill () from /lib/libc.so.6
-
-
=head1 Hanging Processes: Detection and Diagnostics
Sometimes a httpd process might hang in the middle of processing a
@@ -2934,9 +2824,6 @@
(detection), so we can reproduce the problem and after that to
discover why there is problem (diagnostics).
-
-
-
=head2 Hanging because of the OS Problem
Sometimes you can find a process hanging because of some kind of the
@@ -2956,8 +2843,6 @@
resource it was waiting on. It might point the way to what component
of the system was misbehaving if the problem occurred frequently.
-
-
=head2 An Example of Code that Might Hang a Process
Deadlock is the situation where, for example, two processes, say X and
@@ -3051,7 +2936,6 @@
}
close LOCK;
-
It's very easy to see I<WRITE> process starvation if you spawn a few
of the above scripts simultaneously. Start the first few as I<READ>
processes and then start one I<WRITE> process like this:
@@ -3091,10 +2975,6 @@
until the lock is gained. Only when a write to a client's broken
connection is attempted will Apache terminate the script.
-
-
-
-
=head2 Detecting hanging processes
It's not so easy to detect hanging processes. There is no way you can
@@ -3137,7 +3017,7 @@
But if you have fifty processes, it can be quite hard to spot such a
process. L<Apache::Watchdog::RunAway is a hanging processes monitor
-and terminator|modules/Apache_Watchdog_RunAway_Hang> that implements
+and terminator|guide::modules/Apache_Watchdog_RunAway_Hang> that implements
this feature and should be used to solve this kind of problem.
If you've got a real problem, and the processes hang one after the
@@ -3148,7 +3028,7 @@
resolve it and notify the administrator using a simple crontab
watchdog that requests some very light script periodically. (See
L<Monitoring the Server. A
-watchdog.|control/Monitoring_the_Server_A_watchdo>)
+watchdog.|guide::control/Monitoring_the_Server_A_watchdo>)
In the watchdog you set a timeout appropriate for your service, which
may be anything from a few seconds to a few minutes. If the server
@@ -3165,9 +3045,6 @@
more servers or more memory, or perhaps split your single machine
across a cluster of machines.
-
-
-
=head2 Determination of the reason
Given the process id (PID), there are three ways to find out where the
@@ -3196,7 +3073,6 @@
=back
-
=head3 Using the Perl Trace
To see where an httpd is "spinning", try adding this to your script or
@@ -3212,7 +3088,7 @@
other parts of the server.
We check the registered signal handlers with help of
-L<Apache::Status|debug/Apache__Status____Embedded_Interpreter_Status_Information>.
What we see at
+L<Apache::Status|guide::debug/Apache__Status____Embedded_Interpreter_Status_Information>.
What we see at
http://localhost/perl-status?sig is :
USR2 = \&MyStartUp::__ANON__
@@ -3265,9 +3141,6 @@
line 5 of the I</home/httpd/perl/debug/perl_trace.pl> script, and it
was called by the hanging_sub() routine defined at line 4.
-
-
-
=head3 Using the System Calls Trace
Depending on the operating system you should have one of the
@@ -3536,8 +3409,6 @@
META: add the note about using the 'curinfo' gdb macro to perform an
easy detecting of the hanging location.
-
-
=head1 Debugging Hanging processes (continued)
META: incomplete
@@ -3590,26 +3461,15 @@
to produce a Perl stacktrace.
-
-
-
=head2 Debugging core Dumping Code
-
-
$ perl -e dump
Abort(coredump)
-
META: should I move the C<Apache::StatINC> here? (I think not, since it
relates to other topics like reloading config files, but you should
mention it here with a pointer to it)
-
-
-
-
-
=head1 PERL_DEBUG=1 Build Option
Building mod_perl with C<PERL_DEBUG=1>:
@@ -3638,14 +3498,6 @@
=back
-
-
-
-
-
-
-
-
=head1 Apache::Debug
(META: to be written)
@@ -3664,21 +3516,6 @@
$SIG{__DIE__} = \&Carp::confess;
eval { Carp::confess("init") };
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Debug Tracing
To enable mod_perl debug tracing, configure mod_perl with the
@@ -3735,14 +3572,6 @@
% setenv MOD_PERL_TRACE all
% httpd -X
-
-
-
-
-
-
-
-
=head1 gdb says there are no debugging symbols
During I<make install> Apache strips all the debugging symbols. To
@@ -3769,16 +3598,6 @@
I<Makefile.tmpl> do it directly in I<Makefile>). Alternatively you
rerun C<make> and copy the unstripped httpd binary away.
-
-
-
-
-
-
-
-
-
-
=head1 Debugging Signal Handlers ($SIG{FOO})
The current Perl implementation does not restore the original Apache C
@@ -3803,7 +3622,7 @@
C<Sys::Signal> module, which solves the problem:
C<Sys::Signal> - Set signal handlers with restoration of the existing
-C sighandler. Get it from L<CPAN|download/Perl>.
+C sighandler. Get it from L<CPAN|guide::download/Perl>.
The usage is simple. If the original code was:
@@ -3817,7 +3636,6 @@
};
die $@ if $@;
-
Now you would write:
use Sys::Signal ();
@@ -3839,12 +3657,6 @@
static char *sigsave[] = { "ALRM", NULL };
-
-
-
-
-
-
=head1 Code Profiling
(Meta: duplication??? I've started to write about profiling somewhere
@@ -3867,14 +3679,6 @@
See also: C<Apache::DProf>
-
-
-
-
-
-
-
-
=head1 Devel::Peek
Devel::Peek - A data debugging tool for the XS programmer
@@ -3933,12 +3737,6 @@
Note: Previously allocating a scalar in this
way saves reallocation in v5.005 but may not do so in other versions.
-
-
-
-
-
-
=head1 How can I find out if a mod_perl code has a memory leak
The C<Apache::Leak> module (derived from C<Devel::Leak>) should help
@@ -4002,13 +3800,6 @@
C<Apache::Status> includes a C<StatusLexInfo> option which can show
you the internals of your code.
-
-
-
-
-
-
-
=head1 Debugging your code in Single Server Mode
Running in httpd -X mode is good only for testing during the
@@ -4088,9 +3879,6 @@
any children, there is no controlling parent to write the status
messages.
-
-
-
=head1 Apache::DumpHeaders - Watch HTTP Transaction Via Headers
This module is used to watch an HTTP transaction, looking at client
@@ -4106,16 +3894,13 @@
For more information read the module's manpage.
-Download the module from L<CPAN|download/CPAN_Downloads>.
-
-
-
+Download the module from L<CPAN|guide::download/CPAN_Downloads>.
=head1 Apache::DebugInfo - Log Various Bits Of Per-Request Data
C<Apache::DebugInfo> offers the ability to monitor various bits of
per-request data. Its functionality is similar to
-L<Apache::DumpHeaders|debug/Debugging_mod_perl_>
+L<Apache::DumpHeaders|guide::debug/Debugging_mod_perl_>
while offering several additional features, including the ability to:
=over
@@ -4137,13 +3922,5 @@
=back
See the module's manpage for more details.
-
-
-
-
-
-
-
-
=cut
1.2 +0 -9 modperl-docs/src/docs/1.0/guide/download.pod
Index: download.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/download.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- download.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ download.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -30,7 +30,6 @@
C<Apache::DumpHeaders>, you can type:
http://search.cpan.org/search?dist=Apache-DumpHeaders .
-
=head1 Apache
Get the latest Apache webserver and documentation from
@@ -50,7 +49,6 @@
from http://perl.apache.org/snapshots/modperl/, all the mod_perl
related projects are available from http://perl.apache.org/snapshots/.
-
RPM: http://perl.apache.org/rpm/
Debian users will find Perl, Apache and mod_perl are available
@@ -82,7 +80,6 @@
http://www.cpan.org/authors/id/ABH/mod_proxy_add_forward.c, complete
with instructions on how to compile it and whatnot.
-
=head1 httperf -- webserver Benchmarking tool
http://www.hpl.hp.com/personal/David_Mosberger/httperf.html
@@ -100,7 +97,6 @@
should be available from the mod_backhand CVS tree:
http://www.backhand.org/mod_backhand/
-
=head1 High-Availability and Load Balancing Projects
=head2 mod_backhand -- Load Balancing for Apache
@@ -120,7 +116,6 @@
The homepage of mod_redundancy is http://www.ask-the-guru.com .
-
=head2 High-Availability Linux Project
You will find the definitive guide to load balancing techniques
@@ -155,8 +150,6 @@
ipnat. That may be a simple solution for a few specific load problem.
http://coombs.anu.edu.au/~avalon/ipf3.4beta3.tgz
-
-
=head1 Apache::Request
The package name is I<libapreq>.
@@ -180,7 +173,5 @@
http://home-of-linux.org/gnome/libgtop/
-
=cut
-
1.3 +3 -7 modperl-docs/src/docs/1.0/guide/frequent.pod
Index: frequent.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/frequent.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- frequent.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ frequent.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -7,21 +7,17 @@
Some problems come up very often on the mailing list. If there is
some important problem that is being reported frequently on the list
which is not included below, even if it is found elsewhere in the Guide,
-please L<tell me|help/Contacting_me>.
-
+please L<tell me|guide::help/Contacting_me>.
=head1 my() scoped variable in nested subroutines
See the section "L<my() Scoped Variable in Nested
-Subroutines|perl/my___Scoped_Variable_in_Nested_Subroutines>".
-
-
+Subroutines|guide::perl/my___Scoped_Variable_in_Nested_Subroutines>".
=head1 Segfaults caused by PerlFreshRestart
See the section L<Evil things might happen when using
-PerlFreshRestart|troubleshooting/Evil_things_might_happen_when_using_PerlFreshRestart>
-
+PerlFreshRestart|guide::troubleshooting/Evil_things_might_happen_when_using_PerlFreshRestart>
=cut
1.2 +2 -16 modperl-docs/src/docs/1.0/guide/hardware.pod
Index: hardware.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/hardware.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- hardware.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ hardware.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -121,7 +121,6 @@
Also remember that the less money you spend on OS and Software, the
more you will be able to spend on faster and stronger hardware.
-
=head2 Discontinued Products
The OSs in this hazard group tend to be developed by a single company
@@ -167,7 +166,6 @@
can always have a go yourself, but do not under-estimate the amounts
of work involved. There are many, many man-years of work in an OS.
-
=head2 OS Releases
Actively developed OSs generally try to keep pace with the latest
@@ -185,13 +183,6 @@
almost the same functionality for much less money if you were to buy
an older model of the same product.
-
-
-
-
-
-
-
=head1 Choosing Hardware
Sometimes the most expensive machine is not the one which provides the
@@ -212,7 +203,6 @@
(or an upgrade) and keep your service running - the main server will
simply not dispatch the requests to the machine that was taken down.
-
=item *
Load balancing - users are given the name of one of your machines but
@@ -225,7 +215,7 @@
clustering too.
There are many load balancing techniques. (See L<High-Availability
-Linux Project|download/High_Availability_Linux_Project> for more info.)
+Linux Project|guide::download/High_Availability_Linux_Project> for more
info.)
=item *
@@ -283,7 +273,6 @@
Wisdom and prophecy, that's all it takes :)
-
=head3 Single Strong Machine vs Many Weaker Machines
Let's start with a claim that a four years old processor is still very
@@ -356,7 +345,6 @@
a busy internet site you always have some slow clients. This is a
difficult thing to simulate in benchmark testing, though.
-
=head2 I/O Performance
If your service is I/O bound (does a lot of read/write operations to
@@ -407,7 +395,7 @@
serve one. Now you can calculate how many server processes you need.
If you know the maximum size your servers can grow to, you know how
much memory you need. If your OS supports L<memory
-sharing|hardware/Sharing_Memory>, you can make best use of this
+sharing|guide::hardware/Sharing_Memory>, you can make best use of this
feature by preloading the modules and scripts at server startup, and
so you will need less memory than you have calculated.
@@ -483,6 +471,4 @@
hardware will likewise be forced to adapt as well.
=cut
-
-
1.3 +2 -90 modperl-docs/src/docs/1.0/guide/help.pod
Index: help.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/help.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- help.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ help.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -17,19 +17,14 @@
help and you should I<RTFM> before you call for I<HELP>. (Remember the
fable of the shepherd boy and the wolves).
-For more information See L<Get helped with
mod_perl|help/Get_help_with_mod_perl>.
-
-
-
-
-
+For more information See L<Get helped with
mod_perl|guide::help/Get_help_with_mod_perl>.
=head1 Contacting me
Hi, I wrote this document to help people with mod_perl. It does not
mean that if you have any question regarding mod_perl, perl or
whatever you think I might know, you should send it directly to me.
-Please see the L<Get help with mod_perl|help/Get_help_with_mod_perl>
+Please see the L<Get help with mod_perl|guide::help/Get_help_with_mod_perl>
section and follow the guidelines described there.
However, you are welcome to submit corrections and suggestions
@@ -46,8 +41,6 @@
ask questions on the mod_perl list and if we can answer your question,
one (or more) of us will answer it on the list. Thank you!>
-
-
=head2 How to Report Problems
Always send these details:
@@ -145,7 +138,6 @@
% perl -V:archlibexp
-
=item Spinning Processes
The gdb attaching to the live process approach is helpful when
@@ -178,11 +170,6 @@
Finally send all these details to the modperl mailing list.
-
-
-
-
-
=head1 Get help with mod_perl
=over
@@ -216,7 +203,6 @@
1-56592-567-X, Order Number: 567X
746 pages, $34.95
-
=item * The mod_perl Developer's Cookbook
Home site: http://www.modperlcookbook.org
@@ -230,7 +216,6 @@
Price: $39.99
Pages: 600
-
=item * Managing and Programming mod_perl
http://www.modperlbook.com is the home site of the new mod_perl book,
@@ -252,8 +237,6 @@
See also Andrew's collection of reference card for Apache and other
programs: http://www.refcards.com.
-
-
=back
=item * mod_perl Guide
@@ -280,7 +263,6 @@
at http://perl.apache.org/dist/mod_perl_traps.html .
-
=item * Articles
=over
@@ -296,7 +278,6 @@
=back
-
=item * mod_perl mailing lists
=over
@@ -393,8 +374,6 @@
http://www.apachelabs.org/test-dev/
-
-
=item * The advocacy mailing list
The list for mod_perl advocacy issues, discussions about
@@ -406,7 +385,6 @@
The archive: http://www.mail-archive.com/[email protected]/.
-
=item * The modperl-cvs mailing list
The modperl developers list is the list where you can watch mod_perl
@@ -421,23 +399,10 @@
No archives available.
-
-
=back
-
=back
-
-
-
-
-
-
-
-
-
-
=head1 Get help with Perl
=over
@@ -525,20 +490,8 @@
List's archive is available at
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/.
-
=back
-
-
-
-
-
-
-
-
-
-
-
=head1 Get help with Perl/CGI
=over
@@ -570,17 +523,8 @@
subscribe cgi-list
-
=back
-
-
-
-
-
-
-
-
=head1 Get help with Apache
=over
@@ -626,23 +570,12 @@
Installing and Securing the Apache Webserver with SSL
http://www.securityfocus.com/infocus/1356
-
=item * mod_throttle_access
mod_throttle_access is available at http://www.fremen.org/apache/
-
=back
-
-
-
-
-
-
-
-
-
=head1 Get help with DBI and SQL
=over
@@ -677,13 +610,6 @@
=back
-
-
-
-
-
-
-
=head1 Get help with Squid - Internet Object Cache
=over 4
@@ -706,15 +632,10 @@
=back
-
-
-
-
=head1 Get help with CVS -- Concurrent Version Control
=over
-
=item *
mod_perl repository specific doc: mod_perl_cvs.pod, located in the
@@ -751,10 +672,8 @@
Introduction to CVS
http://www.sourcegear.com/CVS/Docs/blandy
-
=back
-
=head1 Get help with Performance and Scalability
=over
@@ -783,8 +702,6 @@
=back
-
-
=head1 Get help with Unix OS flavors -- Unix OS related resources
=over
@@ -796,11 +713,6 @@
=item *
-
=back
-
-
-
-
=cut
1.4 +11 -235 modperl-docs/src/docs/1.0/guide/install.pod
Index: install.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/install.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- install.pod 5 Feb 2002 02:51:36 -0000 1.3
+++ install.pod 27 Feb 2002 18:03:36 -0000 1.4
@@ -204,8 +204,6 @@
describing different installation passes, once the overview of the
four building steps is completed.
-
-
=head3 Configuration parameters
The command C<perl Makefile.PL>, which is also known as a
@@ -281,8 +279,6 @@
mod_perl will be installed. Note that, C<make test> won't work until
you have built the server.
-
-
=head4 Callback Hooks
A callback hook (abbrev. I<callback>) is a reference to a
@@ -331,21 +327,15 @@
ALL_HOOKS=1
-
=head4 EVERYTHING
To enable everything set:
EVERYTHING=1
-
-
=head4 PERL_TRACE
-To enable L<debug tracing|debug/Debug_Tracing> set: C<PERL_TRACE=1>
-
-
-
+To enable L<debug tracing|guide::debug/Debug_Tracing> set: C<PERL_TRACE=1>
=head4 APACHE_HEADER_INSTALL
@@ -360,8 +350,6 @@
APACHE_HEADER_INSTALL=0
-
-
=head4 PERL_STATIC_EXTS
Normally, if an extension is statically linked with Perl it is listed in
@@ -373,7 +361,6 @@
perl Makefile.PL "PERL_STATIC_EXTS=Something::Static Another::One"
-
=head4 APACI_ARGS
When you use the C<USE_APACI=1> parameter, you can tell C<Makefile.PL>
@@ -396,8 +383,6 @@
stripping the backslashes. This causes all the arguments except the
first to be ignored by the configuration process.
-
-
=head4 APACHE_PREFIX
Alternatively to:
@@ -438,7 +423,6 @@
in the I<httpd.conf> used for S<'make test'> stage. (Introduced in
mod_perl v1.23.)
-
=head3 Reusing Configuration Parameters
When you have to upgrade the server, it's quite hard to remember what
@@ -492,13 +476,6 @@
C<apache_x.x.x/config.status> and the mod_perl parameters in
C<mod_perl_x.xx/apaci/mod_perl.config>.
-
-
-
-
-
-
-
=head3 Discovering Whether Some Option Was Configured
mod_perl version 1.25 has introduced C<Apache::Myconfig>, which
@@ -545,7 +522,6 @@
use the feature in question. If it wasn't configured Apache will give
an error message
-
=head3 Using an Alternative Configuration File
By default mod_perl provides its own copy of the I<Configuration> file
@@ -557,10 +533,8 @@
Where I<Configuration.custom> is the pathname of the file I<relative
to the Apache source tree you build against>.
-
=head3 perl Makefile.PL Troubleshooting
-
=head4 "A test compilation with your Makefile configuration failed..."
When you see this during the C<perl Makefile.PL> stage:
@@ -582,7 +556,7 @@
installed.
The most frequent pitfall is a missing gdbm library. See L<Missing or
-Misconfigured libgdbm.so|install/Missing_or_Misconfigured_libgdbm_so>
+Misconfigured libgdbm.so|guide::install/Missing_or_Misconfigured_libgdbm_so>
for more info.
But why guess, when we can actually see the real error message and
@@ -598,9 +572,6 @@
and try again. Now you should get a useful error message.
-
-
-
=head4 Missing or Misconfigured libgdbm.so
On some Linux RedHat systems you might encounter a problem during the
@@ -654,7 +625,6 @@
numbers. We didn't use the usual I<xx.xx> version replacement here, to
make it easier to understand how the symbolic links should be set.
-
=head4 About gdbm, db and ndbm libraries
Both the gdbm and db libraries offer ndbm emulation, which is the
@@ -667,8 +637,6 @@
have trouble copying the dbm file from one system to another or even
using it after an upgrade.
-
-
=head4 Undefined reference to `PL_perl_destruct_level'
When manually building mod_perl using the shared library:
@@ -703,7 +671,6 @@
shared I<libperl.a>. Build a dynamically linked Perl (with
I<libperl.a>) and the problem will disappear.
-
=head2 mod_perl Building (make)
After completing the configuration you build the server, by calling:
@@ -718,11 +685,8 @@
Note: don't put the mod_perl directory inside the Apache
directory. This confuses the build process.
-
-
=head3 make Troubleshooting
-
=head4 Undefined reference to 'Perl_newAV'
This and similar error messages may show up during the C<make>
@@ -732,7 +696,6 @@
another properly built binary package. Run C<perl -V> to learn what
version of Perl you are using and other important details.
-
=head4 Unrecognized format specifier for...
This error usually reported due to the problems with some versions of
@@ -740,7 +703,6 @@
problem. Or if you don't really need SFIO, rebuild Perl without this
library.
-
=head2 Built Server Testing (make test)
After building the server, it's a good idea to test it thoroughly, by
@@ -784,8 +746,6 @@
I</dev/null>) so you'll have to change these by hand. The tests are
run with the C<SSLDisable> directive.
-
-
=head3 Manual Testing
Tests are invoked by running the C<./TEST> script located in the
@@ -802,7 +762,6 @@
for some reason it fails to start, use C<make start_httpd> to start it
manually.
-
=head3 make test Troubleshooting
=head4 make test fails
@@ -833,7 +792,6 @@
instead.
-
=head4 make test......skipping test on this platform
While doing C<make test> you will notice that some of the tests are
@@ -878,11 +836,6 @@
Also make sure that you have the loopback device [lo] configured.
[Hint: try 'ifconfig lo' to test for its existence.]
-
-
-
-
-
=head2 Installation (make install)
After testing the server, the last step left is to install it. First
@@ -899,10 +852,6 @@
Now the installation should be considered complete. You may now
configure your server and start using it.
-
-
-
-
=head2 Building Apache and mod_perl by Hand
If you wish to build httpd separately from mod_perl, you should use
@@ -933,7 +882,7 @@
AddModule modules/perl/libperl.a
We suggest you add this entry at the end of the I<Configuration> file
-if you want your L<callback hooks|install/Callback_Hooks> to have
+if you want your L<callback hooks|guide::install/Callback_Hooks> to have
precedence over core handlers.
Add the following to C<EXTRA_LIBS>:
@@ -973,19 +922,11 @@
% make
% make install
-
-
-
-
-
=head1 Installation Scenarios for Standalone mod_perl
There are various ways available to build Apache with the new hybrid
build environment (using C<USE_APACI=1>):
-
-
-
=head2 The All-In-One Way
If your goal is just to build and install Apache with mod_perl out of
@@ -1005,10 +946,6 @@
default C</usr/local/apache> tree and mod_perl into the C<site_perl>
hierarchy of your existing Perl installation. All in one step.
-
-
-
-
=head2 The Flexible Way
This is the normal situation where you want to be flexible while
@@ -1172,8 +1109,6 @@
dynamically load and insert mod_perl into httpd) are automatically
added to I<httpd.conf>.
-
-
=head2 Build mod_perl as a DSO outside the Apache Source Tree via APXS
Above we've seen how to build mod_perl as a DSO I<inside> the Apache
@@ -1199,13 +1134,6 @@
tree with the new Apache 1.3 support tool C<apxs> and install it into
the existing Apache hierarchy.
-
-
-
-
-
-
-
=head1 Installation Scenarios for mod_perl and Other Components
([ReaderMETA]: Please send more scenarios of mod_perl + other
@@ -1267,8 +1195,6 @@
default location. When you run C<make install> the installation
program tells you where it's going to install the files.
-
-
=head2 mod_perl and mod_ssl (+openssl)
mod_ssl provides strong cryptography for the Apache 1.3 webserver via
@@ -1327,8 +1253,6 @@
mod_perl/1.21_01-dev mod_ssl/2.4.8 OpenSSL/0.9.4 configured
-- resuming normal operations
-
-
=head2 mod_perl and mod_ssl Rolled from RPMs
As in the previous section this shows an installation of mod_perl and
@@ -1464,9 +1388,6 @@
% httpd -DSSL
-
-
-
=head2 mod_perl and apache-ssl (+openssl)
Apache-SSL is a secure Webserver, based on Apache and SSLeay/OpenSSL.
@@ -1521,11 +1442,6 @@
Now proceed with configuration of the apache_ssl and mod_perl parts of
the server configuration files, before starting the server.
-
-
-
-
-
=head2 mod_perl and Stronghold
Stronghold is a secure SSL Web server for Unix which allows you to
@@ -1578,13 +1494,6 @@
Rule WANTHSREGEX=no
-
-
-
-
-
-
-
=head2 mod_perl and mod_php
This is a simple installation scenario of the mod_perl and mod_php in
@@ -1776,14 +1685,6 @@
and after answering a few questions, go out for a coffee.
-
-
-
-
-
-
-
-
=head1 Installing on multiple machines
You may wish to build httpd once, then copy it to other machines. The
@@ -1834,24 +1735,11 @@
([ReaderMETA]: Dear reader, Can you please share a step by step scenario of
preparation of SRPMs for mod_perl? Thanks!!!)
-
-
-
-
-
-
-
-
-
-
-
=head1 using RPM and other packages to install mod_perl
[ReaderMETA]: Currently only RPM package. Please submit info about
other available packages if you use such.
-
-
=head2 A word on mod_perl RPM packages
The virtues of RPM packages is a subject of much debate among mod_perl
@@ -1908,7 +1796,6 @@
mod_perl RPM (or vice versa). Sticking with one format or the other
at first will result in fewer headaches and more hair.
-
=head2 Installing a single apache+mod_perl RPM
If you use an Apache+mod_perl RPM, chances are C<rpm -i> or C<glint>
@@ -1986,16 +1873,9 @@
/usr/sbin/modperl-enable off
-
-
-
-
-
-
-
=head2 Compiling libapreq (Apache::Request) with the RH 6.0 mod_perl RPM
-Libapreq provides the L<Apache::Request|download/Apache__Request>
+Libapreq provides the L<Apache::Request|guide::download/Apache__Request>
module.
Despite many reports of libapreq not working properly with various RPM
@@ -2099,7 +1979,6 @@
Apply this patch to libapreq:
http://www.davideous.com/modperlrpm/distrib/libapreq-0.31_include.patch
-
=item 4
Follow the libapreq directions as usual:
@@ -2109,7 +1988,6 @@
=back
-
=head2 Installing separate Apache and mod_perl RPMs
If you are trying to install separate Apache and mod_perl RPMs, like
@@ -2118,7 +1996,7 @@
http://localhost will bring up some type of web page for you.
However, after installation of the mod_perl RPM, the L<How can I tell
whether mod_perl is
-running|install/How_can_I_tell_whether_mod_perl_is_running_> test will
+running|guide::install/How_can_I_tell_whether_mod_perl_is_running_> test will
show that Apache is not mod_perl enabled. This is because mod_perl
needs to be added as a separate module using Apache's Dynamic Shared
Objects.
@@ -2126,7 +2004,6 @@
To use mod_perl as a DSO, make the following modifications to your
Apache configuration files:
-
httpd.conf:
----------
LoadModule perl_module modules/libperl.so
@@ -2144,19 +2021,11 @@
After a complete shutdown and startup of the server, mod_perl should
be up and running.
-
-
-
-
-
-
-
-
=head2 Testing the mod_perl API
Some people have reported that even when the server responds
positively to the L<How can I tell whether mod_perl is
-running|install/How_can_I_tell_whether_mod_perl_is_running_> tests,
+running|guide::install/How_can_I_tell_whether_mod_perl_is_running_> tests,
the mod_perl API will not function properly. You may want to run the
following script to verify the availability of the mod_perl API.
@@ -2165,9 +2034,6 @@
$r->send_http_header('text/html');
$r->print("It worked!!!\n");
-
-
-
=head1 Installation Without Superuser Privileges
As you have already learned, mod_perl enabled Apache consists of two
@@ -2177,7 +2043,6 @@
I'll show a complete installation example using I<stas> as a username,
assuming that I</home/stas> is the home directory of that user.
-
=head2 Installing Perl Modules into a Directory of Choice
Since without superuser permissions you aren't allowed to install
@@ -2241,7 +2106,6 @@
Writing /home/stas/lib/perl5/auto/CGI/.packlist
Appending installation info to /home/stas/lib/perl5/perllocal.pod
-
If you have to use the explicit target parameters, instead of a single
C<PREFIX> parameter, you will find it useful to create a file called
for example I<~/.perl_dirs> (where I<~> is C</home/stas> in our
@@ -2273,18 +2137,6 @@
% perl Makefile.PL `cat ~/.perl_dirs.develop`
-
-
-
-
-
-
-
-
-
-
-
-
=head2 Making Your Scripts Find the Locally Installed Modules
Perl modules are generally placed in four main directories. To find
@@ -2461,17 +2313,6 @@
variable and the explicit C<@INC> extension code at the beginning of
the scripts as described above.
-
-
-
-
-
-
-
-
-
-
-
=head2 The CPAN.pm Shell and Locally Installed Modules
As we saw in the section describing the usage of the C<CPAN.pm> shell
@@ -2565,19 +2406,6 @@
If you arrange all the above parameters in one line, you can remove
the backslashes (C<\>).
-
-
-
-
-
-
-
-
-
-
-
-
-
=head2 Making a Local Apache Installation
Just like with Perl modules, if you don't have permissions to install
@@ -2627,17 +2455,6 @@
group you belong to. You must set the C<User> and C<Group> directives
in I<httpd.conf> to appropriate values.
-
-
-
-
-
-
-
-
-
-
-
=head2 Manual Local mod_perl Enabled Apache Installation
Now when we have learned how to install local Apache and Perl modules
@@ -2705,8 +2522,7 @@
performs script compilation. As a result, C<@INC> will be reset to its
original value after the scripts are compiled and the hard-coded
settings will be forgotten. See the section 'L<@INC and
-mod_perl|porting/_INC_and_mod_perl>' for more information.
-
+mod_perl|guide::porting/_INC_and_mod_perl>' for more information.
The only place you can alter the "original" value is during the server
configuration stage either in the startup file or by putting
@@ -2734,7 +2550,7 @@
=item *
Reduce resources usage (see L<Limiting the size of the
-processes|performance/Limiting_the_Size_of_the_Processes>).
+processes|guide::performance/Limiting_the_Size_of_the_Processes>).
=item *
@@ -2756,16 +2572,6 @@
=back
-
-
-
-
-
-
-
-
-
-
=head2 Local mod_perl Enabled Apache Installation with CPAN.pm
Again, CPAN makes installation and upgrades simpler. You have seen
@@ -2827,7 +2633,6 @@
cpan> o conf makepl_arg.save PREFIX=/home/stas
-
Second, set a new value, to be used by the mod_perl installation
process. (You can add parameters to this line, or remove them,
according to your needs.)
@@ -2853,10 +2658,6 @@
on a piece of paper instead of saving it to C<makepl_arg.save>, but
you are more likely to make a mistake that way.
-
-
-
-
=head1 Automating installation
=over
@@ -2882,15 +2683,6 @@
=back
-
-
-
-
-
-
-
-
-
=head1 How can I tell whether mod_perl is running?
There are a few ways. In older versions of apache ( < 1.3.6 ?) you
@@ -2899,7 +2691,6 @@
it installed, you have to configure it for mod_perl and restart the
server too.
-
=head2 Checking the error_log
When starting the server, just check the C<error_log> file for the
@@ -2952,7 +2743,7 @@
However, just because you have got mod_perl linked in there, that does
not mean that you have configured your server to handle Perl scripts
with mod_perl. You will find configuration assistance at
-L<ModPerlConfiguration|config/>
+L<ModPerlConfiguration|guide::config/>
=head2 Testing via a CGI script
@@ -3025,9 +2816,9 @@
takes care of overriding the C<exit()> call for you, so it's not an
issue. For reasons and implementations see: L<Terminating requests
and processes, exit()
-function|porting/Terminating_requests_and_processes__the_exit___and_child_terminate___functions>
+function|guide::porting/Terminating_requests_and_processes__the_exit___and_child_terminate___functions>
and also L<Writing Mod Perl scripts and Porting plain CGIs to
-it|porting/>.
+it|guide::porting/>.
=head2 Testing via lwp-request
@@ -3072,7 +2863,6 @@
C<@INC> in the startup script, but it is better to build afresh to
save you getting into a mess.
-
=head2 Perl installation requirements
Make sure you have Perl installed! The latest stable version if
@@ -3085,8 +2875,6 @@
Do you wish to use dynamic loading? [y]
-
-
=head2 mod_auth_dbm nuances
If you are a C<mod_auth_dbm> or C<mod_auth_db> user you may need to
@@ -3128,8 +2916,6 @@
Rebuild libgdbm before Apache/mod_perl.
-
-
=head2 Stripping Apache to make it almost a Perl-server
Since most of the functionality that various apache mod_* modules
@@ -3140,7 +2926,6 @@
Perl-server, with C code to handle the tricky HTTP bits. The only
module you will need to leave in is C<mod_actions>.
-
=head2 Saving the config.status Files with mod_perl, php, ssl and Other
Components
Typically, when building the bloated Apache that sits behind Squid or
@@ -3179,9 +2964,6 @@
Hint: Take a look at the I<Config.pm> module or the output of C<perl
-V>.
-
-
-
=head1 OS Related Notes
=over 3
@@ -3206,9 +2988,6 @@
=back
-
-
-
=head1 Pros and Cons of Building mod_perl as DSO
On modern Unix derivatives there is a nifty mechanism usually called
@@ -3254,7 +3033,6 @@
-i> command followed by an S<apachectl restart> to bring a new version
of your currently developed module into the running Apache server.
-
=back
Cons:
@@ -3307,8 +3085,6 @@
Configuration file or on the configure command line.
=back
-
-
=cut
1.4 +3 -6 modperl-docs/src/docs/1.0/guide/intro.pod
Index: intro.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/intro.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- intro.pod 4 Feb 2002 14:16:49 -0000 1.3
+++ intro.pod 27 Feb 2002 18:03:36 -0000 1.4
@@ -43,7 +43,6 @@
http://perl.apache.org/tidbits.html and
http://perl.apache.org/stories/ for the facts.)
-
=head2 mod_cgi
When you run your CGI scripts by using a configuration like this:
@@ -168,13 +167,13 @@
writing and porting existing Perl scripts to run under mod_perl. Note
that it does not attempt to enter the big world of using the Perl API
or C API. You will find pointers to coverage of these topics in the
-L<Getting Help and Further Learning|help/> section of this
+L<Getting Help and Further Learning|guide::help/> section of this
document. This guide tries to cover the most of the
C<Apache::Registry> and C<Apache::PerlRun> modules. Along with
mod_perl related topics, there are many more issues related to
administering Apache servers, debugging scripts, using databases,
mod_perl related Perl, code snippets and more. The L<Guide's
-Overview|start/> will help you to find your way through the guide.
+Overview|guide::start/> will help you to find your way through the guide.
It is assumed that you know at least the basics of building and
installing Perl and Apache. (If you do not, just read the INSTALL documents
@@ -184,7 +183,7 @@
mod_perl installation and get the server running in a short time.
If after reading this guide and the other documents listed in
-L<Getting Help and Further Learning|help/> you feel that your
+L<Getting Help and Further Learning|guide::help/> you feel that your
questions remain unanswered, you could try asking the apache/mod_perl
mailing list to help you. But first try to browse the mailing list
archive (located at http://mathforum.org/epigone/modperl ). Often you
@@ -339,9 +338,7 @@
Apache/1.3.9 (Unix) mod_perl/1.16
-
=back
-
=head1 References and Acknowledgments
1.2 +8 -66 modperl-docs/src/docs/1.0/guide/modules.pod
Index: modules.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/modules.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- modules.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ modules.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -88,20 +88,10 @@
session tracking abilities. C<HTML::Embperl> hooks into
C<Apache::Session> for you.
-
-
-
-
-
-
-
=head1 Apache::DBI - Initiate a persistent database connection
See L<mod_perl and relational
-Databases|databases/Apache_DBI_Initiate_a_persist>
-
-
-
+Databases|guide::databases/Apache_DBI_Initiate_a_persist>
=head1 Apache::Watchdog::RunAway - Hanging Processes Monitor and Terminator
@@ -122,15 +112,10 @@
Refer to the C<Apache::Watchdog::RunAway> manpage for the
configuration details.
-
-
-
-
-
=head1 Apache::VMonitor -- Visual System and Apache Server Monitor
C<Apache::VMonitor> is the next generation of
-L<mod_status|debug/mod_status>. It provides all the information
+L<mod_status|guide::debug/mod_status>. It provides all the information
mod_status provides and much more.
This module emulates the reporting functions of the top(), mount(),
@@ -181,7 +166,6 @@
@Apache::VMonitor::NETDEVS = qw(lo eth0);
$Apache::VMonitor::PROC_REGEX = join "\|", qw(httpd mysql squid);
-
More information is available in the module's extensive manpage.
It requires C<Apache::Scoreboard> and C<GTop> to work. C<GTop> in
@@ -189,11 +173,6 @@
platforms. Visit http://www.home-of-linux.org/gnome/libgtop/ to check
whether
your platform/flavor is supported.
-
-
-
-
-
=head1 Apache::GTopLimit - Limit Apache httpd processes
This module allows you to kill off Apache processes if they grow
@@ -202,10 +181,9 @@
size on every request:
The module is thoroughly explained in the sections: "L<Keeping the
-Shared Memory Limit|performance/Keeping_the_Shared_Memory_Limit>" and
+Shared Memory Limit|guide::performance/Keeping_the_Shared_Memory_Limit>" and
"L<Limiting the Size of the
-Processes|performance/Limiting_the_Size_of_the_Process>"
-
+Processes|guide::performance/Limiting_the_Size_of_the_Process>"
=head1 Apache::Request (libapreq) - Generic Apache Request Library
@@ -230,17 +208,14 @@
C<Apache::Request> and libapreq are tied tightly to the Apache API,
to which there is no access in a process running under mod_cgi.
-(L<Apache::Request|download/Apache__Request>)
-
-
-
+(L<Apache::Request|guide::download/Apache__Request>)
=head1 Apache::RequestNotes - Allow Easy, Consistent Access to Cookie and
Form Data Across Each Request Phase
C<Apache::RequestNotes> provides a simple interface allowing all
phases of the request cycle access to cookie or form input parameters
in a consistent manner. Behind the scenes, it uses libapreq
-L<Apache::Request|modules/Apache__Request__libapreq____Generic_Apache_Request_Library>)
+L<Apache::Request|guide::modules/Apache__Request__libapreq____Generic_Apache_Request_Library>)
functions to parse request data and puts references to the data in
C<pnotes()>.
@@ -251,19 +226,10 @@
See the C<Apache::RequestNotes> manpage for more information.
-
-
-
=head1 Apache::PerlRun - Run unaltered CGI scripts under mod_perl
See L<Apache::PerlRun - a closer
-look|porting/Apache_PerlRun_a_closer_look>.
-
-
-
-
-
-
+look|guide::porting/Apache_PerlRun_a_closer_look>.
=head1 Apache::RegistryNG -- Apache::Registry New Generation
@@ -291,9 +257,6 @@
C<Apache::RegistryBB> (Bare-Bones) is another subclass that skips the
stat() call performed by C<Apache::Registry> on each request.
-
-
-
=head1 Apache::RegistryBB -- Apache::Registry Bare Bones
It works just like C<Apache::Registry>, but does not test the x bit
@@ -310,11 +273,6 @@
PerlHandler Apache::RegistryBB->handler
</Location>
-
-
-
-
-
=head1 Apache::OutputChain -- Chain Stacked Perl Handlers
Apache::OutputChain was written as a way of exploring the possibilities
@@ -356,17 +314,14 @@
It's really a regular C<Apache::Registry> setup, except for the added
modules in the PerlHandler line.
-(L<Apache::GzipChain|modules/Apache__GzipChain___compress_HTML__or_anything__in_the_OutputChain>
allows to
+(L<Apache::GzipChain|guide::modules/Apache__GzipChain___compress_HTML__or_anything__in_the_OutputChain>
allows to
compress the output on the fly.)
-
=head1 Apache::Filter - Alter the output of previous handlers
META: to be written (actually summarized the info from Apache::Filter
manpage)
-
-
=head1 Apache::GzipChain - compress HTML (or anything) in the OutputChain
Have you ever served a huge HTML file (e.g. a file bloated with
@@ -412,8 +367,6 @@
Here we are using C<Apache::PassFile> but you can use any module which
creates output.
-
-
=head1 Apache::Gzip - Auto-compress web files with Gzip
Similar to C<Apache::GzipChain> but works with C<Apache::Filter>.
@@ -466,7 +419,6 @@
And you will get the data compressed if configured correctly.
-
=head1 Apache::PerlVINC - Allows Module Versioning in Location blocks and
Virtual Hosts
With this module you can have different C<@INC> for different virtual
@@ -549,9 +501,6 @@
should only be used in a development environment, not a production
one.
-
-
-
=head1 Apache::LogSTDERR
When Apache's builtin syslog support is used, the stderr stream is
@@ -566,9 +515,6 @@
[META: see
http://mathforum.org/epigone/modperl/vixquimwhen ]
-
-
-
=head1 Apache::RedirectLogFix
Because of the way mod_perl handles redirects, the status code is
@@ -587,7 +533,6 @@
$r->status(304);
$r->send_http_header();
-
=head1 Apache::SubProcess
The output of C<system()>, C<exec()>, and C<open(PIPE,"|program")>
@@ -726,8 +671,5 @@
See the module manpage for more information.
-
=cut
-
-
1.4 +8 -12 modperl-docs/src/docs/1.0/guide/multiuser.pod
Index: multiuser.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/multiuser.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- multiuser.pod 4 Feb 2002 13:50:25 -0000 1.3
+++ multiuser.pod 27 Feb 2002 18:03:36 -0000 1.4
@@ -47,7 +47,7 @@
write) any other files that belong to the same user and/or group the
web server is running as. Note that L<it's impossible to run
C<suEXEC> and C<cgiwrap> extensions under
-mod_perl|install/Is_it_possible_to_run_mod_perl_enabled_Apache_as_suExec_>.
+mod_perl|guide::install/Is_it_possible_to_run_mod_perl_enabled_Apache_as_suExec_>.
Another issue is the security of the database connections. If you use
C<Apache::DBI>, by hacking the C<Apache::DBI> code you can pick a
@@ -147,7 +147,7 @@
Another solution would be to use a setuid startup script, but think
twice before you go with it, since if users can modify the scripts
they will get a root access. For more information refer to the section
-"L<SUID Start-up Scripts|control/SUID_Start_up_Scripts>".
+"L<SUID Start-up Scripts|guide::control/SUID_Start_up_Scripts>".
=item *
@@ -206,11 +206,9 @@
we don't want the user to override, such as the port number. Even if
the user changes the port number in his I<username.httpd.conf> file,
Apache reads our settings last, so they take precedence. Note that
-you can use L<Perl sections|config/Apache_Configuration_in_Perl> to
+you can use L<Perl sections|guide::config/Apache_Configuration_in_Perl> to
make the configuration much easier.
-
-
=item 3
A much better, but costly solution is I<co-location>. Let the user
@@ -297,25 +295,23 @@
=back
-
-
=head1 Virtual Hosts in the guide
If you are about to use I<Virtual Hosts> you might want to read these
sections:
-L<Apache Configuration in Perl|config/Apache_Configuration_in_Perl>
+L<Apache Configuration in Perl|guide::config/Apache_Configuration_in_Perl>
L<Easing the Chores of Configuring Virtual Hosts with
-mod_macro|config/Configuring_Apache___mod_perl_with_mod_macro>
+mod_macro|guide::config/Configuring_Apache___mod_perl_with_mod_macro>
L<Is There a Way to Provide a Different startup.pl File for Each
-Individual Virtual
Host|config/Is_There_a_Way_to_Provide_a_Different_startup_pl_File_for_Each_Individual_Virtual_Host>
+Individual Virtual
Host|guide::config/Is_There_a_Way_to_Provide_a_Different_startup_pl_File_for_Each_Individual_Virtual_Host>
L<Is There a Way to Modify @INC on a Per-Virtual-Host or Per-Location
-Basis.|config/Is_There_a_Way_to_Modify__INC_on_a_Per_Virtual_Host_or_Per_Location_Basis_>
+Basis.|guide::config/Is_There_a_Way_to_Modify__INC_on_a_Per_Virtual_Host_or_Per_Location_Basis_>
L<A Script From One Virtual Host Calls a Script with the Same Path
-From the Other Virtual
Host|config/A_Script_From_One_Virtual_Host_Calls_a_Script_with_the_Same_Path_From_the_Other_Virtual_Host>
+From the Other Virtual
Host|guide::config/A_Script_From_One_Virtual_Host_Calls_a_Script_with_the_Same_Path_From_the_Other_Virtual_Host>
=cut
1.2 +34 -284 modperl-docs/src/docs/1.0/guide/performance.pod
Index: performance.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/performance.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- performance.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ performance.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -2,8 +2,6 @@
Performance Tuning
-
-
=head1 The Big Picture
To make the user's Web browsing experience as painless as possible,
@@ -64,24 +62,16 @@
service business you should start worrying about the client's browsing
experience and B<not only> how good your code benchmarks are.
-
-
-
-
-
=head1 System Analysis
Before we try to solve a problem we need to identify it. In our case
we want to get the best performance we can with as little monetary and
time investment as possible.
-
=head2 Software Requirements
Covered in the section "L<Choosing an Operating
-System|hardware/Choosing_an_Operating_System>".
-
-
+System|guide::hardware/Choosing_an_Operating_System>".
=head2 Hardware Requirements
@@ -138,11 +128,7 @@
but exponentially!
More coverage is provided in the section "L<Choosing
-Hardware|hardware/Choosing_Hardware>".
-
-
-
-
+Hardware|guide::hardware/Choosing_Hardware>".
=head1 Essential Tools
@@ -160,8 +146,6 @@
relative results from the tests running on your machine, don't compare
your absolute results with those in this Guide.
-
-
=head2 Benchmarking Applications
How much faster is mod_perl than mod_cgi (aka plain perl/CGI)? There
@@ -183,9 +167,8 @@
directory of the mod_perl distribution includes such an example.
See also two tools for benchmarking:
-L<ApacheBench|performance/Configuration_Tuning_with_ApacheBench> and
-L<crashme test|performance/the_crashme_Script>
-
+L<ApacheBench|guide::performance/Configuration_Tuning_with_ApacheBench> and
+L<crashme test|guide::performance/the_crashme_Script>
=head3 Benchmarking Perl Code
@@ -219,9 +202,7 @@
my $elapsed = tv_interval($start_time,$end_time);
print "The sub took $elapsed seconds."
-See also the L<crashme test|performance/the_crashme_Script>.
-
-
+See also the L<crashme test|guide::performance/the_crashme_Script>.
=head3 Benchmarking a Graphic Hits Counter with Persistent DB Connections
@@ -253,18 +234,6 @@
http://www.realtime.net/~parkerm/perl/conf98/sld006.htm. It's now a
dead link. If you know its new location, please let me know.
-
-
-
-
-
-
-
-
-
-
-
-
=head3 Benchmarking Response Times
In the next sections we will talk about tools that allow us to
@@ -316,8 +285,6 @@
efficient we will try to improve it and run the benchmark again, to
see whether we have any improve in performance.
-
-
=head4 httperf
httperf is a utility written by David Mosberger. Just like
@@ -364,7 +331,7 @@
Errors: total 299 client-timo 299 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
-L<httperf download|download/httperf____webserver_Benchmarking_tool>
+L<httperf download|guide::download/httperf____webserver_Benchmarking_tool>
=head4 http_load
@@ -407,8 +374,7 @@
./http_load: unknown protocol -
-L<http_load
download|download/http_load____another_webserver_Benchmarking_tool>
-
+L<http_load
download|guide::download/http_load____another_webserver_Benchmarking_tool>
=head4 the crashme Script
@@ -445,7 +411,6 @@
=code lwp-bench.pl The LWP::Parallel::UserAgent benchmark
-
=head3 Benchmarking PerlHandlers
The C<Apache::Timeit> module does C<PerlHandler> Benchmarking. With
@@ -471,9 +436,6 @@
The C<Apache::Timeit> package is a part of the I<Apache-Perl-contrib>
files collection available from CPAN.
-
-
-
=head2 Code Profiling Techniques
The profiling process helps you to determine which subroutines or just
@@ -648,7 +610,6 @@
%Time ExclSec CumulS #Calls sec/call Csec/c Name
0.00 0.000 -0.000 1 0.0000 - main::test_code
-
It is possible to profile code running under mod_perl with the
C<Devel::DProf> module, available on CPAN. However, you must have
apache version 1.3b3 or higher and the C<PerlChildExitHandler> enabled
@@ -688,7 +649,6 @@
(Lookup the C<ServerRoot> directive's value in I<httpd.conf> to figure
out what's your C<$ServerRoot>.)
-
=head2 Measuring the Memory of the Process
Very important aspect of performance tuning is to make sure that your
@@ -817,14 +777,11 @@
For more information refer to the C<BSD::Resource> manpage.
-
-
=head2 Measuring the Memory Usage of Subroutines
With help of C<Apache::Status> you can find out the size of each
and every subroutine.
-
=over
=item 1
@@ -958,7 +915,6 @@
th 114 bytes | 0 OPs
b 113 bytes | 0 OPs
-
=back
Note, that the above is correct if you didn't precompile all
@@ -983,7 +939,6 @@
startup imported even if you ask for only one symbol. It
seems to me like a bug, but probably that's how C<CGI.pm> works.
-
BTW, you can check the number of opcodes in the code by a simple
command line run. For example comparing S<'my %hash'> vs. S<'my %hash =
()'>.
@@ -1001,33 +956,8 @@
Note that you shouldn't use C<Apache::Status> module on production
server as it adds quite a bit of overhead for each request.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Know Your Operating System
-
In order to get the best performance it helps to get intimately
familiar with the Operating System (OS) the web server is running
on. There are many OS specific things that you may be able to optimize
@@ -1036,7 +966,6 @@
The following sections will reveal some of the most important details
you should know about your OS.
-
=head2 Sharing Memory
The sharing of memory is one very important factor. If your OS
@@ -1087,17 +1016,16 @@
large, otherwise you lose some of the benefit of sharing memory.
See L<Choosing
-MaxRequestsPerChild|performance/Choosing_MaxRequestsPerChild> for more
+MaxRequestsPerChild|guide::performance/Choosing_MaxRequestsPerChild> for more
about tuning the C<MaxRequestsPerChild> parameter.
-
=head3 How Shared Is My Memory?
You've probably noticed that the word shared is repeated many times in
relation to mod_perl. Indeed, shared memory might save you a lot of
money, since with sharing in place you can run many more servers than
without it. See L<the Formula and the
-numbers|performance/Choosing_MaxClients>.
+numbers|guide::performance/Choosing_MaxClients>.
How much shared memory do you have? You can see it by either using
the memory utility that comes with your system or you can deploy the
@@ -1114,9 +1042,6 @@
C<RES> (or C<RSS>) columns with the C<SHARE> column. C<RES> is
RESident memory, which is the size of pages currently swapped in.
-
-
-
=head3 Calculating Real Memory Usage
I have shown how to measure the size of the process' shared memory,
@@ -1169,7 +1094,7 @@
this number on your own risk.
I've used this technique to display real memory usage in the module
-L<Apache::VMonitor|debug/Apache__VMonitor____Visual_System_and_Apache_Server_Monitor>,
so instead of
+L<Apache::VMonitor|guide::debug/Apache__VMonitor____Visual_System_and_Apache_Server_Monitor>,
so instead of
trying to manually calculate this number you can use this module to do
it automatically. In fact in the calculations used in this module
there is no separation between the parent and child processes, they
@@ -1201,7 +1126,6 @@
So now C<$total_real> contains approximately the really used memory.
-
=head3 Are My Variables Shared?
How do you find out if the code you write is shared between the
@@ -1431,8 +1355,6 @@
sub match { readonly =~ /\w/g; }
1;
-
-
=head3 Preloading Perl Modules at Server Startup
You can use the C<PerlRequire> and C<PerlModule> directives to load
@@ -1580,9 +1502,6 @@
fantastic ratio, but this example is certainly helps to feel the
difference.
-
-
-
=head3 Preloading Registry Scripts at Server Startup
What happens if you find yourself stuck with Perl CGI scripts and you
@@ -1665,8 +1584,7 @@
I won't show any benchmarks here, since the effect is absolutely the
same as with preloading modules.
-See also L<BEGIN blocks|porting/BEGIN_blocks>
-
+See also L<BEGIN blocks|guide::porting/BEGIN_blocks>
=head3 Modules Initializing at Server Startup
@@ -1677,8 +1595,6 @@
specific modules in their respective manpages. We will present a few
examples of widely used modules where the code can be initialized.
-
-
=head4 Initializing DBI.pm
The first example is the C<DBI> module. As you know C<DBI> works with
@@ -1891,8 +1807,6 @@
So you can tell the difference (17% more child processes in the first
version).
-
-
=head4 Initializing CGI.pm
C<CGI.pm> is a big module that by default postpones the compilation of
@@ -2047,14 +1961,6 @@
META: I've heard that the 3.x generation will be less bloated, so
probably I'll have to rerun this using the new version.
-
-
-
-
-
-
-
-
=head2 Increasing Shared Memory With mergemem
C<mergemem> is an experimental utility for linux, which looks I<very>
@@ -2079,7 +1985,6 @@
This software comes with a utility called C<memcmp> to tell you how
much you might save.
-
=head2 Forking and Executing Subprocesses from mod_perl
It's desirable to avoid forking under mod_perl. Since when you do, you
@@ -2606,7 +2511,6 @@
shifting the first value of the C<ARGV> array if available. The
C<FreezeThaw> module does a very similar thing.
-
=head3 Starting a Short Running External Program
Sometimes you need to call an external program and you cannot continue
@@ -2638,10 +2542,6 @@
solutions provided by other Perl modules like C<IPC::Open2> which
allows to open a process for both reading and writing.
-
-
-
-
=head3 Executing system() or exec() in the Right Way
The exec() and system() system calls behave identically in the way
@@ -2674,9 +2574,6 @@
pointing to the existing program code plus your data space, thus will
not create this overhead.
-
-
-
=head2 OS Specific Parameters for Proxying
Most of the mod_perl enabled servers use a proxy front-end
@@ -2688,9 +2585,7 @@
There are very important OS parameters that you might want to change
in order to improve the server performance. This topic is
discussed in the section: L<Setting the Buffering Limits on Various
-OSes|scenario/Setting_the_Buffering_Limits_on_>
-
-
+OSes|guide::scenario/Setting_the_Buffering_Limits_on_>
=head1 Performance Tuning by Tweaking Apache Configuration
@@ -2718,12 +2613,12 @@
multiple clients calling the mod_perl scripts on your server
simultaneously. While there are commercial solutions, you can get
away with free ones which do the same job. You can use the
-L<ApacheBench|performance/Configuration_Tuning_with_ApacheBench> B<C<ab>>
utility
+L<ApacheBench|guide::performance/Configuration_Tuning_with_ApacheBench>
B<C<ab>> utility
which comes with the Apache distribution, the L<crashme
-script|performance/the_crashme_Script> which uses
+script|guide::performance/the_crashme_Script> which uses
C<LWP::Parallel::UserAgent>,
-L<httperf|performance/httperf> or
-L<http_load|performance/http_load>.
+L<httperf|guide::performance/httperf> or
+L<http_load|guide::performance/http_load>.
It is important to make sure that you run the load generator (the
client which generates the test requests) on a system that is more
@@ -3015,7 +2910,6 @@
1000 50 5 2.83
1000 100 10 6.51
-
B<Conclusions:> When we drastically reduce C<MaxRequestsPerChild>, the
performance starts to become closer to plain mod_cgi.
@@ -3039,8 +2933,6 @@
about 100 seconds to be served. In the second and third tests they
waited 1000 seconds!
-
-
=head2 Choosing MaxClients
The C<MaxClients> directive sets the limit on the number of
@@ -3051,7 +2943,7 @@
possible, because in this way we can limit the resources used by the
server children. Since we can restrict each child's process size (see
L<Limiting the size of the
-processes|performance/Limiting_the_Size_of_the_Process>), the
+processes|guide::performance/Limiting_the_Size_of_the_Process>), the
calculation of C<MaxClients> is pretty straightforward:
Total RAM Dedicated to the Webserver
@@ -3061,7 +2953,7 @@
So if I have 400Mb left for the webserver to run with, I can set
C<MaxClients> to be of 40 if I know that each child is limited to 10Mb
of memory (e.g. with
-L<C<Apache::SizeLimit>|performance/Limiting_the_Size_of_the_Processes>).
+L<C<Apache::SizeLimit>|guide::performance/Limiting_the_Size_of_the_Processes>).
You will be wondering what will happen to your server if there are
more concurrent users than C<MaxClients> at any time. This situation
@@ -3087,7 +2979,7 @@
Your children can share memory between them when the OS supports that.
You must take action to allow the sharing to happen - See L<Preload
Perl modules at server
-startup|performance/Preloading_Perl_Modules_at_Serve>. If you do
+startup|guide::performance/Preloading_Perl_Modules_at_Serve>. If you do
this, the chances are that your C<MaxClients> can be even higher. But
it seems that it's not so simple to calculate the absolute number. If
you come up with a solution please let us know! If the shared memory
@@ -3136,7 +3028,6 @@
392% more servers! Now you can feel the importance of having as much
shared memory as possible.
-
=head2 Choosing MaxRequestsPerChild
The C<MaxRequestsPerChild> directive sets the limit on the number of
@@ -3164,8 +3055,8 @@
C<Apache::PerlRun> if this is the case.
Another approach is to use the
-L<Apache::SizeLimit|performance/Limiting_the_Size_of_the_Processes> or
-the L<Apache::GTopLimit|performance/Keeping_the_Shared_Memory_Limit>
+L<Apache::SizeLimit|guide::performance/Limiting_the_Size_of_the_Processes> or
+the L<Apache::GTopLimit|guide::performance/Keeping_the_Shared_Memory_Limit>
modules. By using either of these modules you should be able to
discontinue using the C<MaxRequestPerChild>, although for some
developers, using both in combination does the job. In addition the
@@ -3173,9 +3064,8 @@
drops below a specified limit.
See also L<Preload Perl modules at server
-startup|performance/Preloading_Perl_Modules_at_Serve> and L<Sharing
-Memory|performance/Sharing_Memory>.
-
+startup|guide::performance/Preloading_Perl_Modules_at_Serve> and L<Sharing
+Memory|guide::performance/Sharing_Memory>.
=head2 Choosing MinSpareServers, MaxSpareServers and StartServers
@@ -3224,7 +3114,6 @@
as a rule, but rather as examples to show you some possible scenarios.
Use this information with caution!
-
=head2 Summary of Benchmarking to tune all 5 parameters
OK, we've run various benchmarks -- let's summarize the conclusions:
@@ -3300,20 +3189,6 @@
=back
-
-
-
-
-
-
-
-
-
-
-
-
-
-
=head2 KeepAlive
If your mod_perl server's I<httpd.conf> includes the following
@@ -3377,11 +3252,6 @@
$r->header_out('Content-Length', $length);
-
-
-
-
-
=head2 PerlSetupEnv Off
C<PerlSetupEnv Off> is another optimization you might consider. This
@@ -3435,8 +3305,6 @@
Notice that we have got the value of the environment variable I<TEST>.
-
-
=head2 Reducing the Number of stat() Calls Made by Apache
If you watch the system calls that your server makes (using I<truss>
@@ -3679,16 +3547,6 @@
in the normal way (no C<E<lt>PerlE<gt>> section required).
-
-
-
-
-
-
-
-
-
-
=head1 TMTOWTDI: Convenience and Habit vs. Performance
TMTOWTDI (sometimes pronounced I<"tim toady">), or I<"There's More
@@ -3947,7 +3805,6 @@
have just seen when we have tried the same benchmark on a different
machine.
-
=head2 "Bloatware" modules
Perl modules like IO:: are very convenient, but let's see what it
@@ -4064,7 +3921,6 @@
Anybody who's thinking of choosing one of these might do well to
digest these numbers first.
-
=head2 Apache::args vs. Apache::Request::param vs. CGI::param
Let's write three C<Apache::Registry> scripts that use
@@ -4176,9 +4032,6 @@
modules, whereas C<Apache::Request::param> is much faster than
C<CGI::param>.
-
-
-
=head2 Using $|=1 Under mod_perl and Better print() Techniques.
As you know, C<local $|=1;> disables the buffering of the currently
@@ -4223,7 +4076,6 @@
<BODY>
}
-
If you try the following:
print qq{
@@ -4292,7 +4144,6 @@
B<Conclusion>: Do not blindly follow suggestions, but think what is best for
you in each case.
-
=head2 Global vs. Fully Qualified Variables
It's always a good idea to avoid using global variables where it's
@@ -4367,9 +4218,6 @@
One could save 2.3Mb per single process with C<'use POSIX ();'> and
using fully qualifying C<POSIX::> function calls.
-
-
-
=head2 Object Methods Calls vs. Function Calls
Which subroutine calling form is more efficient: Object methods or
@@ -4423,8 +4271,6 @@
C<Foo-E<gt>$method()>. And the improvement does not address the
C<@ISA> lookup that still happens in either case.
-
-
=head3 The Overhead with Heavy Subroutines
But that doesn't mean that you shouldn't use methods. Generally your
@@ -4454,7 +4300,6 @@
function => sub { Foo::bar('Foo');},
});
-
We get a very close benchmarks!
function: 33 wallclock secs (15.81 usr + 1.12 sys = 16.93 CPU)
@@ -4484,7 +4329,6 @@
over the life of a project may turn out to be the most significant
cost factor.
-
=head3 Are All Methods Slower than Functions?
Some modules' API is misleading, for example C<CGI.pm> allows you to
@@ -4545,14 +4389,6 @@
functional forms. Therefore, the functional form should be slightly
slower than the object form.
-
-
-
-
-
-
-
-
=head2 Imported Symbols and Memory Usage
There is a real memory hit when you import all of the functions into
@@ -4607,7 +4443,6 @@
more when importing all the C<CGI.pm>'s symbols than when you import
none at all.
-
Generally you use more than one script, run more than one process and
probably import more symbols from the additional modules that you
deploy. So the real numbers are much bigger.
@@ -4621,14 +4456,11 @@
reference to an object, but even then it can be passed by value.
I strongly endorse L<Apache::Request (libapreq) - Generic Apache
-Request Library|modules/Apache_Request_libapreq_Gen>. Its core is
+Request Library|guide::modules/Apache_Request_libapreq_Gen>. Its core is
written in C, giving it a significant memory and performance benefit.
It has all the functionality of C<CGI.pm> except the HTML generation
functions.
-
-
-
=head2 Interpolation, Concatenation or List
Somewhat overlapping with the previous section we want to revisit the
@@ -4724,15 +4556,9 @@
be slower than direct append to the string whenever a new string
springs into existence.
-
-
[ReaderMETA]: Please send more mod_perl relevant Perl performance
hints
-
-
-
-
=head2 Using Perl stat() Call's Cached Results
When you do a stat() (or its variations C<-M> -- last modification
@@ -4758,10 +4584,6 @@
Two stat() calls were saved!
-
-
-
-
=head1 Apache::Registry and Derivatives Specific Notes
These are the sections that deal solely with C<Apache::Registry> and
@@ -4769,7 +4591,6 @@
Perl handlers code is discussed here, so if you don't use these
modules, feel free to skip this section.
-
=head2 Be Careful with Symbolic Links
As you know C<Apache::Registry> caches the scripts in the packages
@@ -4792,7 +4613,7 @@
http://localhost/perl/news.pl
To spot the duplication you should use the
-L<C<Apache::Status>|debug/Apache__Status____Embedded_Interpreter_Status_Information>
module.
+L<C<Apache::Status>|guide::debug/Apache__Status____Embedded_Interpreter_Status_Information>
module.
Amongst other things, it shows all the compiled C<Apache::Registry>
scripts (using their respective packages):
@@ -4821,9 +4642,7 @@
processes would show only one entry or none at all, since they might
not serve the same requests as the others. For more hints see the
section "L<Run the server in single
-mode|control/Running_a_Server_in_Single_Proce>".
-
-
+mode|guide::control/Running_a_Server_in_Single_Proce>".
=head1 Improving Performance by Prevention
@@ -4838,7 +4657,6 @@
programming techniques that would help you to keep your service in
order, even if you are not around.
-
=head2 Memory leakage
Scripts under mod_perl can very easily leak memory! Global variables
@@ -4898,7 +4716,6 @@
# been modified
}
-
If you work with arrays or hashes it's:
@{$var_lr} dereferences an array
@@ -4936,7 +4753,6 @@
either modify variables passed by reference or expressly return a
result (e.g. C<$content=process($content);>).
-
=head3 Work With Databases
If you do some DB processing, you will often encounter the need to
@@ -5113,12 +4929,10 @@
} # end of sub {}
}; # end of my $rsub = eval {
-
You might also want to check the section L<Limiting the Size of the
-Processes|performance/Limiting_the_Size_of_the_Process>
+Processes|guide::performance/Limiting_the_Size_of_the_Process>
and L<Limiting Other Resources Used by Apache Child
-Processes|performance/Limiting_Other_Resources_Used_by>.
-
+Processes|guide::performance/Limiting_Other_Resources_Used_by>.
=head2 Keeping the Shared Memory Limit
@@ -5146,7 +4960,7 @@
That's where the C<Apache::GTopLimit> module comes to help. If you
are lucky to have your OS among those that can build the
-L<libgtop|download/libgtop> library, you will be able to build the
+L<libgtop|guide::download/libgtop> library, you will be able to build the
C<GTop> module that provides the Perl API for C<libgtop>, which in
turn used by C<Apache::GTopLimit> (that's the I<GTop> part in the
name).
@@ -5189,7 +5003,6 @@
$Apache::GTopLimit::DEBUG = 1;
-
=head2 Limiting the Size of the Processes
So now you know how to prevent processes from consuming more real
@@ -5359,19 +5172,13 @@
Refer to the C<Apache::Resource> and C<setrlimit(2)> manpages for more
information.
-
-
-
-
-
=head2 Limiting the Number of Processes Serving the Same Resource
If you want to limit number of Apache children that could
simultaneously be serving the (nearly) same resource, you should take
-a look at the L<C<mod_throttle_access>|download/mod_throttle_access>
+a look at the L<C<mod_throttle_access>|guide::download/mod_throttle_access>
module.
-
It solves the problem of too many concurrent request accessing the
same URI, if for example the handler that serves this URI uses some
resource that has a limitation on the maximum number of possible users
@@ -5417,32 +5224,16 @@
http://www.modperl.com/chapters/ch6.html#Blocking_Greedy_Clients
-
-
-
-
-
-
-
-
-
-
-
=head1 Perl Modules for Performance Improvement
-
These sections are about Perl modules that improve performance without
requiring changes to your code. Mostly you just need to tweak the
configuration file to plug these modules in.
-
-
=head2 Sending Plain HTML as Compressed Output
See L<Apache::GzipChain - compress HTML (or anything) in the
-OutputChain|modules/Apache_GzipChain_compress_HTM>
-
-
+OutputChain|guide::modules/Apache_GzipChain_compress_HTM>
=head2 Caching Components with HTML::Mason
@@ -5467,20 +5258,14 @@
META: Should also mention Embperl (especially since its C + XS)
-
-
-
-
=head1 Efficient Work with Databases under mod_perl
-
Most of the mod_perl enabled servers work with database engines, so in
this section we will learn about two things: how mod_perl makes working
with databases faster and a few tips for a more efficient DBI coding in
Perl. (DBI provides an identical Perl interface to many database
implementations.)
-
=head2 Persistent DB Connections
Another popular use of mod_perl is to take advantage of its ability to
@@ -5584,12 +5369,6 @@
connections to achieve the same result, although this is at the risk
of getting deadlocks depending on what you are trying to do!
-
-
-
-
-
-
=head2 mod_perl Database Performance Improving
=head3 Analysis of the Problem
@@ -5699,7 +5478,7 @@
database, C<Apache::DBI> returns a cached connection, thus saving the
significant time penalty of repeatedly connecting to the database. You
will find a full treatment of C<Apache::DBI> at L<Persistent DB
-Connections|performance/Persistent_DB_Connections>
+Connections|guide::performance/Persistent_DB_Connections>
When C<Apache::DBI> is in use, none of the code in the example needs
to change. The code is upgraded from naive to respectable with the use
@@ -5898,7 +5677,6 @@
}
# ...
-
Notice that several improvements have been made. Since the statement
handles have a longer life than the request, there is no need for each
request to prepare the statement, and no need to call the statement
@@ -5926,18 +5704,6 @@
improving your database indexing scheme or web server buffering and
load balancing.
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Using 3rd Party Applications
It's been said that no one can do everything well, but one can do
@@ -5953,16 +5719,11 @@
Let's take a look at a few of these.
-
=head2 Proxying the mod_perl Server
Proxy gives you a great performance increase in most cases. It's
discussed in the section L<Adding a Proxy Server in http Accelerator
-Mode|strategy/Adding_a_Proxy_Server_in_http_Ac>.
-
-
-
-
+Mode|guide::strategy/Adding_a_Proxy_Server_in_http_Ac>.
=head1 Upload and Download of Big Files
@@ -5978,13 +5739,12 @@
downloading of big files, you probably want it to be executed on a
plain apache server under mod_cgi (i.e. performing this operation on
the front-end server, if you use L<a dual-server
-setup|scenario/One_Plain_and_One_mod_perl_enabl>.
+setup|guide::scenario/One_Plain_and_One_mod_perl_enabl>.
This of course assumes that the script requires none of the
functionality of the mod_perl server, such as custom authentication
handlers.
-
=head1 Apache/mod_perl Build Options
It's important how you build mod_perl enabled Apache. It influences
@@ -5993,7 +5753,6 @@
[ReaderMETA: Any other building time things that influence performance?]
-
=head2 mod_perl Process Size as a Function of Compiled in C Modules and
mod_perl Features
You might wonder whether it's better to compile in only the required
@@ -6050,7 +5809,6 @@
Everything 1044432 +151504
Everything+Debug 1162100 +269172
-
Indeed when you strip most of the default things, the server size is
slimmer. But the savings are insignificant since you don't multiply
the added size by the number of child processes if your OS supports
@@ -6070,18 +5828,14 @@
components and disabling the unneeded default components, makes you a
good Apache administrator.
-
-
=head1 Perl Build Options
-
The Perl interpreter lays in the brain of the mod_perl server and if
we can optimize perl into doing things faster under mod_perl we make
the whole server faster. Generally, optimizing the Perl interpreter
means enabling or disabling some command line options. Let's see a few
important ones.
-
=head2 -DTWO_POT_OPTIMIZE and -DPACK_MALLOC Perl Build Options
Newer Perl versions also have build time options to reduce runtime
@@ -6112,9 +5866,6 @@
Important: both options are On by default in perl versions 5.005 and
higher.
-
-
-
=head2 -Dusemymalloc Perl Build Option
You have a choice to use the native or Perl's own malloc()
@@ -6135,7 +5886,6 @@
to configure Perl with -Dusemymalloc. Perl's malloc is not
much of a win under linux, but makes a B<huge> difference under
Solaris.
-
=head1 Architecture Specific Compile Options
1.2 +9 -126 modperl-docs/src/docs/1.0/guide/perl.pod
Index: perl.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/perl.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- perl.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ perl.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -12,12 +12,6 @@
information provided here. The rest of the Guide assumes that you
have read this chapter and understood it.
-
-
-
-
-
-
=head1 perldoc's Rarely Known But Very Useful Options
First of all, I want to stress that you cannot become a Perl hacker
@@ -34,7 +28,6 @@
installed on your system. To find out what Perl manpages are
available execute:
-
% perldoc perl
To find what functions perl has, execute:
@@ -63,11 +56,6 @@
% perldoc perldoc
-
-
-
-
-
=head1 Tracing Warnings Reports
Sometimes it's very hard to understand what a warning is complaining
@@ -197,16 +185,11 @@
operator and "here documents" are known to throw off Perl's line
numbering, so the messages reporting warnings and errors can have
incorrect line numbers. (See L<Finding the Line Which Triggered the
-Error or Warning|debug/Finding_the_Line_Which_Triggered> for more
+Error or Warning|guide::debug/Finding_the_Line_Which_Triggered> for more
information).
Getting the trace helps a lot.
-
-
-
-
-
=head1 Variables Globally, Lexically Scoped And Fully Qualified
META: this material is new and requires polishing so read with care.
@@ -215,7 +198,6 @@
scoping in Perl discussions, but little of it will make any sense
without a few key facts:
-
=head2 Symbols, Symbol Tables and Packages; Typeglobs
There are two important types of symbol: package global and lexical.
@@ -380,36 +362,20 @@
=back
-
-
-
=head2 Additional reading references
For more information see: L<Using global variables and sharing them
-between modules/packages|perl/Using_Global_Variables_and_Shari> and an
+between modules/packages|guide::perl/Using_Global_Variables_and_Shari> and an
article by Mark-Jason Dominus about how Perl handles variables and
namespaces, and the difference between C<use vars()> and C<my()> -
http://www.plover.com/~mjd/perl/FAQs/Namespaces.html .
-
-
-
-
-
-
-
-
-
=head1 my() Scoped Variable in Nested Subroutines
Before we proceed let's make the assumption that we want to develop
the code under the C<strict> pragma. We will use lexically scoped
variables (with help of the my() operator) whenever it's possible.
-
-
-
-
=head2 The Poison
Let's look at this code:
@@ -473,11 +439,6 @@
our code has some kind of memory for the results of the first
execution, or it ignores the arguments in subsequent executions.
-
-
-
-
-
=head2 The Diagnosis
Let's follow the guidelines and use the C<-w> flag. Now execute the
@@ -539,9 +500,6 @@
outer subroutine. There are two copies of the C<$x> variable, no
longer a single one shared by the two routines.
-
-
-
=head2 The Remedy
The C<diagnostics> pragma suggests that the problem can be solved by
@@ -594,8 +552,6 @@
So we can see that the problem is solved.
-
-
=head1 Understanding Closures -- the Easy Way
In Perl, a closure is just a subroutine that refers to one or more
@@ -685,9 +641,6 @@
identical code references and therefore it ignores any future changes
to the lexical variables outside of it.
-
-
-
=head1 When You Cannot Get Rid of The Inner Subroutine
First you might wonder, why in the world will someone need to define
@@ -796,16 +749,14 @@
it won't work as you expect starting from the second call, as was
explained in the previous section.
-
=head2 Remedies for Inner Subroutines
First of all there is nothing to worry about, as long as you don't
forget to turn the warnings On. If you do happen to have the
"L<my() Scoped Variable in Nested
-Subroutines|perl/my_Scoped_Variable_in_Nested_S>"
+Subroutines|guide::perl/my_Scoped_Variable_in_Nested_S>"
problem, Perl will always alert you.
-
Given that you have a script that has this problem, what are the ways
to solve it? There are many of them and we will discuss some of them
here.
@@ -1035,7 +986,6 @@
it is not updatable as would be the case of calling the function with
a literal, e.g. I<increment_counter(5)>).
-
multirun5.pl
-----------
#!/usr/bin/perl -w
@@ -1101,28 +1051,12 @@
1 ;
-
Now you have at least six workarounds to choose from.
-
For more information please refer to perlref and perlsub manpages.
-
-
-
-
-
-
-
-
-
-
-
-
=head1 use(), require(), do(), %INC and @INC Explained
-
-
=head2 The @INC array
C<@INC> is a special Perl variable which is the equivalent of the
@@ -1138,7 +1072,6 @@
of the directories in C<@INC>, or you can provide the full path to the
file.
-
=head2 The %INC hash
C<%INC> is another special Perl variable that is used to cache the
@@ -1284,7 +1217,6 @@
recompile the C<FindBin> module on each request. So it may not be
worth it.
-
=head2 Modules, Libraries and Program Files
Before we proceed, let's define what we mean by I<module>,
@@ -1333,7 +1265,6 @@
}
1;
-
=item * Modules
A file which contains perl subroutines and other code.
@@ -1378,10 +1309,6 @@
=back
-
-
-
-
=head2 require()
require() reads a file containing Perl code and compiles it. Before
@@ -1410,7 +1337,7 @@
the suggestion is to put "C<1;>" at the end of file.
Although you should use the real filename for most files, if the file
-is a L<module|perl/Modules__Libraries_and_Program_Files>, you may use the
+is a L<module|guide::perl/Modules__Libraries_and_Program_Files>, you may use
the
following convention instead:
require My::Module;
@@ -1477,7 +1404,7 @@
use(), just like require(), loads and compiles files containing Perl
code, but it works with
-L<modules|perl/Modules__Libraries_and_Program_Files> only. The only way to
+L<modules|guide::perl/Modules__Libraries_and_Program_Files> only. The only
way to
pass a module to load is by its module name and not its filename. If
the module is located in I<MyCode.pm>, the correct way to use() it is:
@@ -1539,7 +1466,6 @@
imported by C<use>, i.e., it calls C<Module-E<gt>unimport(LIST)>
instead of C<import()>.
-
=head2 do()
While do() behaves almost identically to require(), it reloads the
@@ -1552,21 +1478,6 @@
successfully compiled, do() returns the value of the last expression
evaluated.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Using Global Variables and Sharing Them Between Modules/Packages
It helps when you code your application in a structured way, using the
@@ -1591,7 +1502,7 @@
import(). This will work only if you do not use C<strict> pragma; but
you I<have> to use this pragma if you want to run your scripts under
mod_perl. Read L<The strict
-pragma|porting/The_strict_pragma> to find out why.
+pragma|guide::porting/The_strict_pragma> to find out why.
=head2 Making Variables Global With strict Pragma On
@@ -1692,7 +1603,6 @@
My::HTML::printmyheader();
-
My/HTML.pm
----------------
package My::HTML;
@@ -1741,7 +1651,6 @@
}
1;
-
=head2 Using the Perl Aliasing Feature to Share Global Variables
As the title says you can import a variable into a script or module
@@ -1889,7 +1798,6 @@
my $config_module = $r->dir_config('FooConfigModule') || '';
-
=head1 The Scope of the Special Perl Variables
Special Perl variables like C<$|> (buffering), C<$^T> (script's start
@@ -1948,18 +1856,6 @@
but within the enclosing block, the global variable will be visible
with its new value inside the subroutine.
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Compiled Regular Expressions
When using a regular expression that contains an interpolated Perl
@@ -2094,12 +1990,6 @@
The qr() operator compiles the pattern for each request and then use
the compiled version in the actual match.
-
-
-
-
-
-
=head1 Exception Handling for mod_perl
Here are some guidelines for S<clean(er)> exception handling in
@@ -2177,7 +2067,6 @@
}
# all is well or has been handled
-
=head2 Alternative Exception Handling Techniques
An often suggested method for handling global exceptions in mod_perl,
@@ -2249,8 +2138,6 @@
inform them of better ways to code. The following material is an
attempt to do just that.
-
-
=head2 Better Exception Handling
The C<eval{}> construct in itself is a fairly weak way to handle
@@ -2449,7 +2336,7 @@
overcome this by overriding the core die function. This is slightly
more complex than implementing a C<$SIG{__DIE__}> handler, but is far
less magical, and is the right thing to do, according to the
-L<perl5-porters mailing list|help/Get_help_with_Perl>.
+L<perl5-porters mailing list|guide::help/Get_help_with_Perl>.
Overriding core functions has to be done from an external
package/module. So we're going to add that to our C<My::Exception>
@@ -2490,7 +2377,6 @@
there's no "finally" clause, and no exception stack, but that's another topic
for another time).
-
=head2 A Single UnCaught Exception Class
Until the Perl core gets its own base exception class (which will likely
happen
@@ -2548,7 +2434,6 @@
check the source code of anything you install to make sure it follows
your exception handling technique, or just uses die() with strings.
-
=head2 Some Uses
I'm going to come right out and say now: I abuse this system horribly!
@@ -2581,7 +2466,6 @@
programmer style really. There's a lot of literature out there about
exception handling, so I suggest doing some research.
-
=head2 Conclusions
Here I've demonstrated a simple and scalable (and useful) exception
@@ -2593,7 +2477,7 @@
delivering to thousands of users.
For similar exception handling techniques, see the section "L<Other
-Implementations|perl/Other_Implementations>".
+Implementations|guide::perl/Other_Implementations>".
=head2 The My::Exception class in its entirety
@@ -2661,7 +2545,7 @@
=item * Error.pm
Graham Barr's excellent OO styled "try, throw, catch" module (from
-L<CPAN|download/Perl>). This should be considered your best option
+L<CPAN|guide::download/Perl>). This should be considered your best option
for structured exception handling because it is well known and well
supported and used by a lot of other applications.
@@ -2677,7 +2561,6 @@
classes that provide extra methods or data. For example, an exception
class for database errors could provide a method for returning the SQL
and bound parameters in use at the time of the error.
-
=item * Try.pm
1.3 +33 -357 modperl-docs/src/docs/1.0/guide/porting.pod
Index: porting.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/porting.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- porting.pod 21 Feb 2002 09:08:38 -0000 1.2
+++ porting.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -34,23 +34,13 @@
functions that were reimplemented to work better in mod_perl
environment.
-
-
-
-
-
-
-
-
-
-
=head1 Before you start to code
It can be a good idea to tighten up some of your Perl programming
practices, since mod_perl doesn't tolerate sloppy programming.
This chapter relies on a certain level of Perl knowledge. Please
-read through the L<Perl Reference|perl/Perl_Reference_> chapter and make
sure you
+read through the L<Perl Reference|guide::perl/Perl_Reference_> chapter and
make sure you
know the material covered there. This will allow me to concentrate on
pure mod_perl issues and make them more prominent to the experienced
Perl programmer, which would otherwise be lost in the sea of Perl
@@ -82,16 +72,6 @@
=back
-
-
-
-
-
-
-
-
-
-
=head1 Exposing Apache::Registry secrets
Let's start with some simple code and see what can go wrong with it,
@@ -119,7 +99,6 @@
print "Counter is equal to $counter !\r\n";
}
-
You would expect to see the output:
Counter is equal to 1 !
@@ -144,9 +123,6 @@
counter over 5 and inconsistent growth over reloads. Let's investigate
this script.
-
-
-
=head2 The First Mystery
First let's peek into the C<error_log> file. Since we have enabled the
@@ -160,7 +136,7 @@
opposed to anonymous - subroutine defined inside another subroutine)
that refers to a lexically scoped variable defined outside this nested
subroutine. This effect is explained in L<my() Scoped Variable in
-Nested Subroutines|perl/my_Scoped_Variable_in_Nested_S>.
+Nested Subroutines|guide::perl/my_Scoped_Variable_in_Nested_S>.
Do you see a nested named subroutine in my script? I don't! What's
going on? Maybe it's a bug? But wait, maybe the perl interpreter sees
@@ -298,7 +274,7 @@
(unless I create them myself :).
The section 'L<Remedies for Inner
-Subroutines|perl/Remedies_for_Inner_Subroutines>' discusses
+Subroutines|guide::perl/Remedies_for_Inner_Subroutines>' discusses
many other possible workarounds for this problem.
You shouldn't be intimidated by this issue at all, since Perl is your
@@ -341,9 +317,6 @@
Why didn't we notice this when we were trying the software on our
development server? Keep reading and you will understand why.
-
-
-
=head2 The Second Mystery
Let's return to our original example and proceed with the second
@@ -385,21 +358,10 @@
Of course none of the warnings will be reported if the warning
mechanism is not turned B<On>. Refer to the section "L<Tracing
-Warnings Reports|perl/Tracing_Warnings_Reports>" to learn about
-warnings in general and to the "L<Warnings|porting/Warnings>" section
+Warnings Reports|guide::perl/Tracing_Warnings_Reports>" to learn about
+warnings in general and to the "L<Warnings|guide::porting/Warnings>" section
to learn how to turn them on and off under mod_perl.
-
-
-
-
-
-
-
-
-
-
-
=head1 Sometimes it Works, Sometimes it Doesn't
When you start running your scripts under mod_perl, you might find
@@ -480,11 +442,8 @@
return (SOME_USER_PASSWD_CHECK_IS_OK) ? 1 : 0;
}
-
Of course this example is trivial--but believe me it happens!
-
-
=head2 Thinking mod_cgi
Just another little one liner that can spoil your day, assuming you
@@ -524,25 +483,10 @@
}
To make sure you don't miss these bugs always test your CGI in
-L<single process mode|control/Running_a_Server_in_Single_Process_Mode>.
+L<single process
mode|guide::control/Running_a_Server_in_Single_Process_Mode>.
To solve this particular B</o> modifier problem refer to L<Compiled
-Regular Expressions|perl/Compiled_Regular_Expressions>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+Regular Expressions|guide::perl/Compiled_Regular_Expressions>.
=head1 Script's name space
@@ -551,22 +495,10 @@
your URI is C</perl/test.pl> the package will be called
C<Apache::ROOT::perl::test_2epl>.
-
-
-
-
-
-
-
-
-
-
-
-
=head1 @INC and mod_perl
The basic Perl C<@INC> behaviour is explained in section L<use(), require(),
-do(), %INC and @INC Explained|perl/use_require_do_INC_and>.
+do(), %INC and @INC Explained|guide::perl/use_require_do_INC_and>.
When running under mod_perl, once the server is up C<@INC> is frozen
and cannot be updated. The only opportunity to B<temporarily> modify
@@ -604,22 +536,12 @@
PerlRequire /path/to/startup.pl
-
=back
-
-
-
-
-
-
-
-
-
=head1 Reloading Modules and Required Files
You might want to read the "L<use(), require(), do(), %INC and @INC
-Explained|perl/use_require_do_INC_and>" before you proceed with this
+Explained|guide::perl/use_require_do_INC_and>" before you proceed with this
section.
When you develop plain CGI scripts, you can just change the code, and
@@ -649,7 +571,7 @@
The simplest approach is to restart the server each time you apply
some change to your code. See L<Server Restarting
-techniques|control/Restarting_Techniques>.
+techniques|guide::control/Restarting_Techniques>.
After restarting the server about 100 times, you will tire of it and
you will look for other solutions.
@@ -697,11 +619,10 @@
value.
To make sure that you have set C<@INC> correctly, configure
-L</perl-status
location|debug/Apache__Status____Embedded_Interpreter_Status_Information>, fetch
+L</perl-status
location|guide::debug/Apache__Status____Embedded_Interpreter_Status_Information>,
fetch
http://www.example.com/perl-status?inc and look at the bottom of the
page, where the contents of C<@INC> will be shown.
-
Notice the following trap:
While "C<.>" is in C<@INC>, perl knows to require() files with
@@ -715,7 +636,6 @@
If you want Apache::StatINC to reload your script--modify C<@INC> at
server startup, or use a full path in the require() call.
-
=head2 Using Apache::Reload
C<Apache::Reload> comes as a drop-in replacement for
@@ -787,7 +707,6 @@
This module might have a problem with reloading single modules that
contain multiple packages that all use pseudo-hashes.
-
Also if you have modules loaded from directories which are not in
C<@INC>, C<Apache::Reload> will fail to find the files, due the fact
that C<@INC> is reset to its original value even if it gets temporary
@@ -810,12 +729,9 @@
and restart the server. Now the problem is solved.
-
=head3 Availability
-This module is available from L<CPAN|download/CPAN_Downloads>.
-
-
+This module is available from L<CPAN|guide::download/CPAN_Downloads>.
=head2 Configuration Files: Writing, Dynamically Updating and Reloading
@@ -1156,12 +1072,10 @@
},
);
-
You have just learned how to make configuration files easily
maintainable, and how to save memory by avoiding the export of
variables into a script's namespace.
-
=head3 Reloading Configuration Files
First, lets look at a simple case, when we just have to look after a
@@ -1289,7 +1203,7 @@
variables on its first invocation. To do that, you would need to
replace each occurrence of return() and warn() with die(). If you do
that, take a look at the section "L<Redirecting Errors to the Client
-instead of error_log|snippets/Redirecting_Errors_to_the_Client>".
+instead of error_log|guide::snippets/Redirecting_Errors_to_the_Client>".
I used the above approach when I had a huge configuration file that
was loaded only at server startup, and another little configuration
@@ -1634,7 +1548,6 @@
} # end sub conf_modification_form
-
Once updated the script generates a file like:
$c{release} = '5.6';
@@ -1645,8 +1558,6 @@
1;
-
-
=head2 Reloading handlers
If you want to reload a perlhandler on each invocation, the following
@@ -1656,27 +1567,10 @@
do() reloads C<MyTest.pm> on every request.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Name collisions with Modules and libs
This section requires an in-depth understanding of L<use(), require(),
-do(), %INC and @INC |perl/use_require_do_INC_and>.
+do(), %INC and @INC |guide::perl/use_require_do_INC_and>.
To make things clear before we go into details: each child process has
its own C<%INC> hash which is used to store information about its
@@ -1742,7 +1636,6 @@
=back
-
Let's look at three scripts with faults related to name space. For the
following discussion we will consider just one individual child process.
@@ -1757,11 +1650,9 @@
compiled. This is a direct result of using C<%INC>, which has keys
equal to the names of the modules. Two identical names will refer to
the same key in the hash. (Refer to the section 'L<Looking inside the
-server|debug/Looking_inside_the_server>' to find out how you can know
+server|guide::debug/Looking_inside_the_server>' to find out how you can know
what is loaded and where.)
-
-
So if you have two different C<Foo> modules in two different
directories and two scripts C<script1.pl> and C<script2.pl>, placed
like this:
@@ -1771,7 +1662,6 @@
./tool2/Foo.pm
./tool2/tool2.pl
-
Where some sample code could be:
./tool1/tool1.pl
@@ -1806,7 +1696,7 @@
about C<Foo>. When you call the second script it will not know about
C<Foo> at all--it's like you've forgotten to write C<use Foo;>. Run
the server in L<single server
-mode|control/Running_a_Server_in_Single_Proce> to detect this kind of
+mode|guide::control/Running_a_Server_in_Single_Proce> to detect this kind of
bug immediately.
You will see the following in the error_log file:
@@ -1861,7 +1751,6 @@
=back
-
There are three solutions for this:
=over
@@ -1977,19 +1866,6 @@
server! You have to run a separate server for each. They can be on the
same machine, but the servers will use different ports.
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 More package name related issues
If you have the following:
@@ -2001,17 +1877,6 @@
then the C<Apache::Work::Foo> package gets defined, so mod_perl does
not try to pull in C<Apache/Work/Foo.pm>
-
-
-
-
-
-
-
-
-
-
-
=head1 __END__ and __DATA__ tokens
C<Apache::Registry> scripts cannot contain C<__END__> or C<__DATA__>
@@ -2062,20 +1927,6 @@
Also, remember that whatever applies to C<Apache::Registry> scripts,
in most cases applies to C<Apache::PerlRun> scripts.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Output from system calls
The output of C<system()>, C<exec()>, and C<open(PIPE,"|program")> calls
@@ -2089,21 +1940,12 @@
But you're throwing performance out the window either way. It's best
not to fork at all if you can avoid it. See the "L<Forking or
Executing subprocesses from
-mod_perl|performance/Forking_and_Executing_Subprocess>" section
+mod_perl|guide::performance/Forking_and_Executing_Subprocess>" section
to learn about implications of forking.
-Also read about
L<Apache::SubProcess|porting/CGI_to_mod_perl_Porting__mod_perl_Coding_guidelines__>
for
+Also read about
L<Apache::SubProcess|guide::porting/CGI_to_mod_perl_Porting__mod_perl_Coding_guidelines__>
for
overridden system() and exec() implementations that work with mod_perl.
-
-
-
-
-
-
-
-
-
=head1 Using format() and write()
The interface to filehandles which are linked to variables with Perl's
@@ -2120,9 +1962,6 @@
Another alternative is to use the C<Text::Reform> module.
-
-
-
=head1 Terminating requests and processes, the exit() and child_terminate()
functions
Perl's C<exit()> built-in function (all versions prior to 5.6) cannot
@@ -2202,16 +2041,11 @@
The above is the code that is used by the C<Apache::SizeLimit> module
which terminates processes that grow bigger than a value you choose.
-L<Apache::GTopLimit|modules/Apache__GTopLimit___Limit_Apache_httpd_processes>
(based on
+L<Apache::GTopLimit|guide::modules/Apache__GTopLimit___Limit_Apache_httpd_processes>
(based on
I<libgtop> and C<GTop.pm>) is a similar module. It does the same
thing, plus you can configure it to terminate processes when their
shared memory shrinks below some specified size.
-
-
-
-
-
=head1 die() and mod_perl
When you write:
@@ -2246,7 +2080,6 @@
$SIG{__DIE__} = sub { print STDERR @_; Apache::exit(); }
-
=head1 Return Codes
C<Apache::Registry> normally assumes a return code of C<OK> (C<200>).
@@ -2259,17 +2092,12 @@
C<$r-E<gt>send_http_header()> (assuming that you have C<PerlSendHeader
Off>).
-
=head1 Testing the Code from the Shell
Your CGI scripts will B<not> yet run from the command line unless you
use C<CGI::Switch> or C<CGI.pm> and have Perl 5.004 or later. They
must not make any direct calls to Apache's Perl API methods.
-
-
-
-
=head1 I/O is different
If you are using Perl 5.004 or later, most CGI scripts can run under
@@ -2279,10 +2107,6 @@
functions do not work as they do under CGI. If you're using C<CGI.pm>,
use C<$query-E<gt>print> instead of plain ol' C<print()>.
-
-
-
-
=head1 STDIN, STDOUT and STDERR streams
In mod_perl both C<STDIN> and C<STDOUT> are tied to the socket the
@@ -2301,12 +2125,10 @@
Note that C<OUT> was picked just as an example -- there is nothing
special about it. If you are looking to redirect the STDOUT stream
into a scalar, see the L<Redirecting STDOUT into a
-String|porting/Redirecting_STDOUT_into_a_Scalar> section.
+String|guide::porting/Redirecting_STDOUT_into_a_Scalar> section.
C<STDERR> is tied to the file defined by the C<ErrorLog> directive.
-
-
=head1 Redirecting STDOUT into a Scalar
Sometimes you have a situation where a black box functions prints the
@@ -2328,8 +2150,6 @@
# reset default fh to previous value
select($old_fh) if defined $old_fh;
-
-
=head1 Apache::print() and CORE::print()
Under mod_perl C<CORE::print()> will redirect its data to
@@ -2359,8 +2179,6 @@
print(scalar($foo));
-
-
=head1 Global Variables Persistence
Since the child process generally doesn't exit before it has serviced
@@ -2368,7 +2186,7 @@
from request to request. This means that you must never rely on the
value of the global variable if it wasn't initialized at the beginning
of the request processing. See "L<Variables globally, lexically scoped
-and fully qualified|perl/Variables_Globally_Lexically_Sc>" for more
+and fully qualified|guide::perl/Variables_Globally_Lexically_Sc>" for more
info.
You should avoid using global variables unless it's impossible without
@@ -2377,15 +2195,9 @@
they are used. Use my() scoped variables wherever you can.
You should be especially careful with L<Perl Special
-Variables|perl/The_Scope_of_the_Special_Perl_Va> which cannot be
+Variables|guide::perl/The_Scope_of_the_Special_Perl_Va> which cannot be
lexically scoped. You have to use local() instead.
-
-
-
-
-
-
=head1 Generating correct HTTP Headers
A HTTP response header consists of at least two fields. HTTP response
@@ -2538,7 +2350,6 @@
$r->send_http_header;
}
-
Note that you can always use the code in the else part of the above
example, no matter whether the C<PerlSendHeader> directive is On or
Off.
@@ -2689,7 +2500,7 @@
Why can't we use a lexical without hitting the nested subroutine
effect? Because when we've discussed L<Apache::Registry
-secrets|porting/Exposing_Apache_Registry_secret> we have seen that the
+secrets|guide::porting/Exposing_Apache_Registry_secret> we have seen that the
code is wrapped in a C<handler> routine, effectively turning any
subroutines within the file a script resides in into nested
subroutines. Hence we are forced to use a global in this situation.
@@ -2704,19 +2515,7 @@
additional headers, such as cookies.
See also L<Correct Headers--A quick guide for mod_perl
-users|correct_headers/>
-
-
-
-
-
-
-
-
-
-
-
-
+users|guide::correct_headers/>
=head1 NPH (Non Parsed Headers) scripts
@@ -2732,13 +2531,6 @@
PerlSendHeader Off
</Files>
-
-
-
-
-
-
-
=head1 BEGIN blocks
Perl executes C<BEGIN> blocks as soon as possible, at the time of
@@ -2780,7 +2572,6 @@
=back
-
C<BEGIN> blocks in C<Apache::Registry> scripts will be executed, as
above plus:
@@ -2810,18 +2601,7 @@
=back
Make sure you read L<Evil things might happen when using
-PerlFreshRestart|troubleshooting/Evil_things_might_happen_when_us>.
-
-
-
-
-
-
-
-
-
-
-
+PerlFreshRestart|guide::troubleshooting/Evil_things_might_happen_when_us>.
=head1 END blocks
@@ -2854,7 +2634,7 @@
used to emulate plain perl's C<END{}> block behavior.
The last paragraph is very important for handling the case of L<'User
-Pressed the Stop Button'|debug/Handling_the_User_pressed_Stop_>.
+Pressed the Stop Button'|guide::debug/Handling_the_User_pressed_Stop_>.
If you only want something to run once in the parent on shutdown or
restart you can use C<$r-E<gt>register_cleanup()> in the I<startup.pl>.
@@ -2881,11 +2661,6 @@
% perl -e 'eval qq(CHECK { print "ok\n" })'
-
-
-
-
-
=head1 Command Line Switches (-w, -T, etc)
Normally when you run perl from the command line, you have the shell
@@ -3000,8 +2775,6 @@
the C<PerlTaintCheck> configuration directive and will otherwise
ignore it.
-
-
=head2 Other switches
Finally, if you still need to set additional perl startup flags
@@ -3017,17 +2790,7 @@
[META: verify]
See also
-L<Apache::PerlRun|modules/Apache__PerlRun___Run_unaltered_CGI_scripts_under_mod_perl>.
-
-
-
-
-
-
-
-
-
-
+L<Apache::PerlRun|guide::modules/Apache__PerlRun___Run_unaltered_CGI_scripts_under_mod_perl>.
=head1 The strict pragma
@@ -3050,18 +2813,6 @@
time. And, of course, clean scripts will still run under mod_cgi
(plain CGI)!
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Passing ENV variables to CGI
To pass an environment variable from I<httpd.conf>, add to it:
@@ -3100,15 +2851,9 @@
}
</Perl>
-See also L<PerlSetupEnv|performance/PerlSetupEnv_Off> which can
+See also L<PerlSetupEnv|guide::performance/PerlSetupEnv_Off> which can
enable/disable environment variables settings.
-
-
-
-
-
-
=head1 -M and other time() file tests under mod_perl
Under mod_perl, files that have been created after the server's
@@ -3141,31 +2886,15 @@
system call, and uses the already available time of the request has
been started at via C<$r-E<gt>request_time> method.
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Apache and syslog
When native syslog support is enabled, the stderr stream will be
redirected to C</dev/null>!
It has nothing to do with mod_perl (plain Apache does the same). Doug
-wrote the
L<Apache::LogSTDERR|porting/CGI_to_mod_perl_Porting__mod_perl_Coding_guidelines__>
module to work
+wrote the
L<Apache::LogSTDERR|guide::porting/CGI_to_mod_perl_Porting__mod_perl_Coding_guidelines__>
module to work
around this.
-
-
-
=head1 File tests operators
Remember that with mod_perl you might get negative times when you use
@@ -3184,11 +2913,6 @@
META: Above is near duplicate of "-M and other time() file tests under
mod_perl"
make a link instead
-
-
-
-
-
=head1 Filehandlers and locks leakages
META: duplication at
@@ -3211,7 +2935,7 @@
Even if you do call close(), if for some reason the interpreter
was stopped before the C<close()> call, the leakage will still happen.
See for example L<Handling the 'User pressed Stop button'
-case|debug/Handling_the_User_pressed_Stop_>. After a long run without
+case|guide::debug/Handling_the_User_pressed_Stop_>. After a long run without
restarting Apache your machine might run out of file descriptors, and
worse, files might be left locked and unusable.
@@ -3252,25 +2976,13 @@
open my $fh, $filename or die $! ;
-
-
-
-
-
-
-
-
-
=head1 Code has been changed, but it seems the script is running the old code
Files pulled in via B<use> or B<require> statements are not
automatically reloaded when they change on disk. See L<Reloading Modules
-and Required Files|porting/Reloading_Modules_and_Required_F> for more
+and Required Files|guide::porting/Reloading_Modules_and_Required_F> for more
info.
-
-
-
=head1 The Script Is Too Dirty, But It Does The Job And I Cannot Afford To
Rewrite It.
You still can win from using mod_perl.
@@ -3291,7 +3003,7 @@
PerlSendHeader On
</Location>
-See L<Apache::PerlRun--a closer look|porting/Apache__PerlRun__a_closer_look>
+See L<Apache::PerlRun--a closer
look|guide::porting/Apache__PerlRun__a_closer_look>
Another "bad", but workable method is to set C<MaxRequestsPerChild> to
1, which will force each child to exit after serving only one request.
@@ -3303,17 +3015,6 @@
than actually required and the killed one will immediately be replaced
with a fresh one. Probably that's not what you want.
-
-
-
-
-
-
-
-
-
-
-
=head1 Apache::PerlRun--a closer look
C<Apache::PerlRun> gives you the benefit of preloaded Perl and its
@@ -3370,19 +3071,6 @@
logs its messages to the I<error_log> file, so you should expect the
output there and not together with STDOUT.
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Sharing variables between processes
META: to be completed
@@ -3417,9 +3105,6 @@
=back
-
-
-
=head1 Transitioning from Apache::Registry to Apache handlers
Even if you are a CGI script die-hard at some point you might want to
@@ -3529,7 +3214,6 @@
return scalar localtime;
} # end of sub generate_sessionID
-
The code is very simple. It creates a session if you've pressed the
I<'Start'> button or deletes it if you've pressed the I<'Stop'>
button. The session is stored and retrieved using the cookies
@@ -3555,8 +3239,6 @@
unique session every time it was called. And it should be secure,
i.e. users will not be able to forge one and do nasty things.
-
-
=head2 Converting into Perl Content Handler
Now let's convert this script into a content handler. There are two
@@ -3720,7 +3402,6 @@
}
1;
-
and now we have a fully fledged Perl Content Handler.
=head2 Converting to use Apache Perl Modules
@@ -3730,10 +3411,9 @@
better performance, mainly because the internals of many of these Perl
modules are implemented in C, therefore we should get a significant
improvement in speed. The section "L<TMTOWTDI: Convenience and
-Performance|performance/TMTOWTDI_Convenience_and_Habit_>"
+Performance|guide::performance/TMTOWTDI_Convenience_and_Habit_>"
compares the three approaches.
-
What we are going to do is to replace C<CGI.pm> and C<CGI::Cookie>
with C<Apache::Request> and C<Apache::Cookie> respectively. The two
modules are written in C with the XS interface to Perl, which makes
@@ -3903,15 +3583,11 @@
the file I</home/httpd/perl/Test/Cookie2.pm> since we have called this
package C<Test::Cookie2>.
-
=head2 Conclusion
If your took care to write the original plain CGI script's code in a
clean and modular way, you can see that the transition is a very
simple one and doesn't take a lot of effort. Almost no code was
modified.
-
-
-
=cut
1.4 +15 -64 modperl-docs/src/docs/1.0/guide/scenario.pod
Index: scenario.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/scenario.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- scenario.pod 21 Feb 2002 09:08:38 -0000 1.3
+++ scenario.pod 27 Feb 2002 18:03:36 -0000 1.4
@@ -86,7 +86,7 @@
There are many additional optional parameters. You can find some of
them later in this section and in the L<Server
-Configuration|config/mod_perl_Configuration> section.
+Configuration|guide::config/mod_perl_Configuration> section.
While running C<perl Makefile.PL ...> the process will check for
prerequisites and tell you if something is missing. If you are
@@ -122,7 +122,6 @@
Now the build and installation processes are complete.
-
=head2 Configuration
First, a simple configuration. Configure Apache as you usually would
@@ -239,14 +238,13 @@
degree of sloppiness they may need anything from minor tweaking to a
major rewrite to make them work properly. (See L<Sometimes My Script
Works, Sometimes It Does
-Not|debug/Sometimes_My_Script_Works__Sometimes_It_Does_Not> )
+Not|guide::debug/Sometimes_My_Script_Works__Sometimes_It_Does_Not> )
The above setup is very basic, but as with Perl, you can start to
benefit from mod_perl from the very first moment you try it. As you
become more familiar with mod_perl you will want to start writing
Apache handlers and make more use of its power.
-
=head1 One Plain and One mod_perl enabled Apache Servers
Since we are going to run two Apache servers we will need two complete
@@ -384,7 +382,6 @@
configuration and the manual executable name adjustment as described
at the beginning of this section .
-
=head3 Building the httpd_perl Server
Now we proceed with the sources configuration and installation of the
@@ -429,7 +426,7 @@
[META:
It's very important to use the same compiler you build the perl with.
See the section 'L<What Compiler Should Be Used to Build
-mod_perl|install/What_Compiler_Should_Be_Used_to_Build_mod_perl_>'
+mod_perl|guide::install/What_Compiler_Should_Be_Used_to_Build_mod_perl_>'
for more information.
[META: --- Hmm, what's the option that overrides the compiler when
@@ -458,12 +455,12 @@
If C<make test> fails, look into
I</usr/src/httpd_perl/mod_perl-x.xx/t/logs> and read the error_log
-file. Also see L<make test fails|install/make_test_fails>.
+file. Also see L<make test fails|guide::install/make_test_fails>.
While doing C<perl Makefile.PL ...> mod_perl might complain by warning
you about a missing library C<libgdbm>. This is a crucial warning. See
L<Missing or Misconfigured
-libgdbm.so|install/Missing_or_Misconfigured_libgdbm_so> for more info.
+libgdbm.so|guide::install/Missing_or_Misconfigured_libgdbm_so> for more info.
Now rename C<httpd> to C<httpd_perl>:
@@ -475,11 +472,6 @@
% perl -p -i -e 's|bin/httpd|bin/httpd_perl|' \
/usr/local/httpd_perl/bin/apachectl
-
-
-
-
-
=head2 Configuration of the servers
Now when we have completed the building process, the last stage before
@@ -499,7 +491,6 @@
/usr/local/httpd_docs/bin/apachectl start
-
=head3 Basic httpd_perl Server Configuration
Edit the I</usr/local/httpd_perl/conf/httpd.conf>. As with the
@@ -525,12 +516,12 @@
server like Squid.
For more details see L<Publishing Port Numbers other than
-80|config/Publishing_Port_Numbers_other_than_80>, L<Running One Webserver
+80|guide::config/Publishing_Port_Numbers_other_than_80>, L<Running One
Webserver
and Squid in httpd Accelerator
-Mode|scenario/Running_One_Webserver_and_Squid_in_httpd_Accelerator_Mode>,
+Mode|guide::scenario/Running_One_Webserver_and_Squid_in_httpd_Accelerator_Mode>,
L<Running Two Webservers and Squid in httpd Accelerator
-Mode|scenario/Running_Two_webservers_and_Squid_in_httpd_Accelerator_Mode>
-and L<Using mod_proxy|scenario/mod_proxy>.
+Mode|guide::scenario/Running_Two_webservers_and_Squid_in_httpd_Accelerator_Mode>
+and L<Using mod_proxy|guide::scenario/mod_proxy>.
Now we proceed to the mod_perl specific directives. It will be a good
idea to add them all at the end of C<httpd.conf>, since you are going
@@ -577,18 +568,17 @@
nph (non-parsed-headers) scripts.
This is only a very basic configuration. The L<Server
-Configuration|config/> section covers the rest of the details.
+Configuration|guide::config/> section covers the rest of the details.
Now start the server with:
/usr/local/httpd_perl/bin/apachectl start
-
=head1 Running Two webservers and Squid in httpd Accelerator Mode
While I have detailed the mod_perl server installation, you are on
your own with installing the Squid server (See L<Getting
-Helped|help/> for more details).
+Helped|guide::help/> for more details).
I run Linux, so I downloaded the RPM package, installed it, configured
the I</etc/squid/squid.conf>, fired off the server and all was set.
@@ -709,7 +699,7 @@
But this is only possible if you set the headers correctly. Refer to
the chapter L<Correct Headers - A quick guide for mod_perl
-users|correct_headers/> to learn more about generating the proper
+users|guide::correct_headers/> to learn more about generating the proper
caching headers under mod_perl. In case where only the scripts under
I</perl/caching-unfriendly> are not I<caching friendly> fix the above
setting to be:
@@ -720,7 +710,7 @@
But if you are lazy, or just have too many things to deal with, you
can leave the above directives the way we described. Just keep in
mind that one day you will want to reread this section and L<the
-headers generation tutorial|correct_headers/> to squeeze even more
+headers generation tutorial|guide::correct_headers/> to squeeze even more
power from your servers without investing money in more memory and
better hardware.
@@ -1035,9 +1025,6 @@
cachemgr_passwd disable shutdown
-
-
-
=head1 mod_proxy
mod_proxy implements a proxy/cache for Apache. It implements proxying
@@ -1127,8 +1114,6 @@
directives.) Do not use the C<ProxyRequests> directive on your
reverse proxy servers.
-
-
=head2 Buffering Feature
In addition to correcting the URI on its way back from the back-end
@@ -1199,7 +1184,6 @@
seems to be the best solution for these specific scripts whose major
function is receiving large amounts of upstream data.
-
[META: check this: --]
Of course just like mod_perl, mod_proxy writes the data it
@@ -1230,7 +1214,6 @@
returns the success of data transmission. (The last, is the part I am
not sure on)
-
[/META]
Unfortunately you cannot set the socket buffer size as large as you
@@ -1326,7 +1309,6 @@
When you tell the kernel to use bigger sockets you can set bigger
values for I<ProxyReceiveBufferSize>. e.g. 1048576 (1MB).
-
=head3 Hacking the Code
Some folks have patched the Apache's 1.3.x source code to make the
@@ -1358,8 +1340,6 @@
C<ProxySocketBufferSize>. This would also remove some of the
confusion about what it actually does.
-
-
=head2 Caching Feature
META: complete the conf details
@@ -1369,8 +1349,6 @@
the Apache documentation for more details on the configuration of this
capability.
-
-
=head2 Build Process
To build mod_proxy into Apache just add I<--enable-module=proxy>
@@ -1378,8 +1356,6 @@
the mod_rewrite capability enable it as well with
I<--enable-module=rewrite>.
-
-
=head1 Front-end Back-end Proxying with Virtual Hosts
This section explains a configuration setup for proxying your back-end
@@ -1469,7 +1445,7 @@
the back-end port.
To get the I<real> remote IP addresses from proxy, the
-L<My::ProxyRemoteAddr|scenario/Getting_the_Remote_Server_IP_in_the_Back_end_server_in_the_Proxy_Setup>
+L<My::ProxyRemoteAddr|guide::scenario/Getting_the_Remote_Server_IP_in_the_Back_end_server_in_the_Proxy_Setup>
handler is used based on the C<mod_proxy_add_forward> Apache module.
Prior to mod_perl 1.22 this setting must have been set per-virtual
host, since it wasn't inherited by the virtual hosts.
@@ -1488,13 +1464,12 @@
by the front-end as we did in the previous example to handle files
with the extensions I<.gif>, I<.jpg>, I<.png> and I<.txt> internally.
-
=head1 Getting the Remote Server IP in the Back-end server in the Proxy Setup
Ask Bjoern Hansen has written the C<mod_proxy_add_forward> module for
Apache. It sets the C<X-Forwarded-For> field when doing a
C<ProxyPass>, similar to what Squid can do. Its location is specified
-in the L<download|download/mod_proxy_add_forward> section.
+in the L<download|guide::download/mod_proxy_add_forward> section.
Basically, this module adds an extra HTTP header to proxying requests.
You can access that header in the mod_perl-enabled server, and set the
@@ -1516,7 +1491,6 @@
I<--enable-module=proxy_add_forward> enables this module as you have
guessed already.
-
=head2 Usage
If you are using C<Apache::Registry> or C<Apache::PerlRun> modules
@@ -1548,7 +1522,6 @@
Otherwise if you write your own mod_perl content handler, you can
retrieve it directly in your code using a similar code.
-
=head2 Security
Different sites have different needs. If you use the header to set
@@ -1652,11 +1625,6 @@
the back-end server, and the remote IP appears in the back-end
server's I<access_log> file.
-
-
-
-
-
=head1 HTTP Authentication With Two Servers Plus a Proxy
Assuming that you have a setup of one "front-end" server, which
@@ -1678,19 +1646,6 @@
the SSL requests. So if your machine is secured from inside, your
back-end server can do secure transactions.
-
-
-
-
-
-
-
-
-
-
-
-
-
=head1 mod_rewrite Examples
In the mod_proxy + mod_perl servers scenario, C<ProxyPass> was used to
@@ -1777,10 +1732,6 @@
RewriteRule ^/(images|style) - [L]
RewriteRule ^/(.*) http://www.example.com:8080/$1 [P]
ProxyPassReverse / http://www.example.com/
-
-
-
-
=head1 Caching in mod_proxy
1.2 +2 -7 modperl-docs/src/docs/1.0/guide/security.pod
Index: security.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/security.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- security.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ security.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -29,9 +29,9 @@
When you want to make sure that a user is who he claims to be, you
generally ask her for a username and a password. Once you have both,
you can check them against your L<database of username/password
-pairs|databases/>. If they match, the user has passed the
+pairs|guide::databases/>. If they match, the user has passed the
B<Authentication> stage. From now on if you keep the
-L<session|modules/Apache__Session___Maintain_session_state_across_HTTP_requests>
open all you need to
+L<session|guide::modules/Apache__Session___Maintain_session_state_across_HTTP_requests>
open all you need to
do is to remember the username.
=item Authorization
@@ -46,7 +46,6 @@
session_ids can be spoofed (forged), and that is why you should not do
B<Authorization> without B<Authentication>.
-
=back
Actually you've been familiar with both these concepts for a while.
@@ -58,7 +57,6 @@
checks the permissions on this file (B<Authorization>). You may hear
about B<Access control> which is another name for the same thing.
-
=head1 Illustrated Security Scenarios
I am going to present some real world security requirements and their
@@ -167,7 +165,6 @@
to OK, and the Authentication stage will ask the user for a login and
password.
-
=head1 Authentication code snippets
=head2 Forcing re-authentication
@@ -191,7 +188,6 @@
This may not work! The browser's behaviour is in no way guaranteed.
-
=head2 OK, AUTH_REQUIRED and FORBIDDEN in Authentication handlers
When your authentication handler returns OK, it means that user has
@@ -233,7 +229,6 @@
$r->custom_response(SERVER_ERROR, "/errors/suspended_account.html");
return FORBIDDEN if $suspended;
-
=head1 Apache:Auth* modules
1.3 +1 -124 modperl-docs/src/docs/1.0/guide/snippets.pod
Index: snippets.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/snippets.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- snippets.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ snippets.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -2,7 +2,6 @@
Code Snippets
-
=head1 Redirecting Errors to the Client Instead of error_log
Many error conditions result in an I<exception> (or I<signal> -- same
@@ -22,7 +21,7 @@
information to the client instead of to I<error_log> you have to take
the responsibility yourself, by writing your own exception handler to
implement this behaviour. See the section "L<Exception Handling for
-mod_perl|perl/Exception_Handling_for_mod_perl>" for more information.
+mod_perl|guide::perl/Exception_Handling_for_mod_perl>" for more information.
The code examples below can be useful with your own exception handlers
as well as with the default handlers.
@@ -190,10 +189,6 @@
Please note that as of version 2.49, CGI.pm provides the cgi_error()
method to print the errors and won't die() unless you want it to.
-
-
-
-
=head1 Reusing Data from POST request
What happens if you need to access the POSTed data more than once, say
@@ -256,10 +251,6 @@
C<Apache::Request>-E<gt>instance() within a single request you always
get the same C<Apache::Request> object back.
-
-
-
-
=head1 Redirecting POST Requests
Under mod_cgi it's not easy to redirect POST requests to some other
@@ -279,7 +270,6 @@
Of course that last line can be any other kind of redirect.
-
=head1 Redirecting While Maintaining Environment Variables
Let's say you have a module that sets some environment variables.
@@ -293,18 +283,6 @@
subprocess_env(). The only nuance is that the C<%ENV> keys will be
prefixed with C<REDIRECT_>.
-
-
-
-
-
-
-
-
-
-
-
-
=head1 Terminating a Child Process on Request Completion
If you want to terminate the child process serving the current
@@ -315,8 +293,6 @@
Apache won't actually terminate the child until everything it needs to
do is done and the connection is closed.
-
-
=head1 Setting Content-type and Content-encoding headers in non-OK responses
You cannot set I<Content-type> and I<Content-encoding> headers in
@@ -325,7 +301,6 @@
r->content_type = "text/html; charset=iso-8859-1";
-
=head1 More on Relative Paths
Many people use relative paths for C<require>, C<use>, etc., and when
@@ -363,16 +338,6 @@
will use the cached value, which would be probably incorrect if they
reside in different directories.
-
-
-
-
-
-
-
-
-
-
=head1 Watching the error_log File Without Telneting to the Server
I wrote this script a long time ago, when I had to debug my CGI
@@ -469,10 +434,6 @@
: $context;
}
-
-
-
-
=head1 Accessing Variables from the Caller's Package
Sometimes you want to access variables from the caller's
@@ -484,10 +445,6 @@
print qq[$caller --- ${"${caller}::var"}];
}
-
-
-
-
=head1 Handling Cookies
Unless you use some well known module like C<CGI::Cookie> or
@@ -520,12 +477,6 @@
}
-
-
-
-
-
-
=head1 Sending Multiple Cookies with the Perl API
Given that you have prepared your cookies in C<@cookies>, the
@@ -535,8 +486,6 @@
$r->headers_out->add( 'Set-Cookie' => $_ );
}
-
-
=head1 Sending Cookies in REDIRECT Response
You should use err_headers_out() and not headers_out() when you want
@@ -551,9 +500,6 @@
$r->send_http_header;
return OK;
-
-
-
=head1 Passing and Preserving Custom Data Structures Between Handlers
Let's say that you wrote a few handlers to process a request, and they
@@ -578,12 +524,6 @@
The stored information will be destroyed at the end of the request.
-
-
-
-
-
-
=head1 Passing Notes Between mod_perl and other (non-Perl) Apache Modules
The notes() method can be used to make various Apache modules talk to
@@ -639,7 +579,6 @@
$r->main->notes('answer');
-
=head1 Passing Environment Variables Between Handlers
This is a simple example of passing environment variables between
@@ -668,7 +607,6 @@
Adding C<%{TICKET}e> and C<%{TICKET}n> to the C<LogFormat> for
access_log works fine too.
-
=head1 Verifying Whether A Request Was Received Over An SSL Connection
Just like C<$ENV{MODPERL}> is checked to see whether the code is run
@@ -692,7 +630,6 @@
but it's not one hundred percent certain unless you control the server
and you know that you run a secure server on the port 443.
-
=head1 CGI::params in the mod_perl-ish Way
You can retrieve the request parameters in a similar to C<CGI::params>
@@ -706,12 +643,6 @@
Also take a look at C<Apache::Request> which has the same API as
C<CGI.pm> for extracting and setting request parameters.
-
-
-
-
-
-
=head1 Subclassing Apache::Request
To subclass a package you simply modify @ISA, for example:
@@ -748,15 +679,6 @@
1;
__END__
-
-
-
-
-
-
-
-
-
=head1 Sending Email from mod_perl
There is nothing special about sending email from mod_perl, it's just
@@ -846,13 +768,6 @@
} # end of sub send_mail
-
-
-
-
-
-
-
=head1 A Simple Handler To Print The Environment Variables
The code:
@@ -880,11 +795,6 @@
http://localhost/env
-
-
-
-
-
=head1 mod_rewrite in Perl
We can easily implement everything mod_rewrite does in Perl. We do
@@ -926,8 +836,6 @@
C<$uri> will hold I<http://www2.example.com/news/> and that's where
the request will be redirected.
-
-
=head1 URI Rewrite in PerlTransHandler
Suppose that before a content handler is invoked you want to make this
@@ -967,7 +875,6 @@
separate slot, so you cannot just push them into the original
URI. Therefore the args() method should be used.
-
=head1 Setting PerlHandler Based on MIME Type
It's very easy to implement a dispatching module based on the MIME
@@ -1005,10 +912,6 @@
the end we return C<DECLINED> so some other fixup handler could take
over.
-
-
-
-
=head1 SSI and Embperl -- Doing Both
This handler lets you use both SSI and Embperl in the same request:
@@ -1021,7 +924,6 @@
PerlHandler Apache::EmbperlFilter Apache::SSI
</FilesMatch>
-
package Apache::EmbperlFilter;
use Apache::Util qw(parsedate);
@@ -1066,14 +968,6 @@
1;
__END__
-
-
-
-
-
-
-
-
=head1 Getting the Front-end Server's Name in the Back-end Server
Assume that you have more than one front-end server, and you want to
@@ -1096,8 +990,6 @@
sort, but if query string is good enough for you, then this should
work really nicely.
-
-
=head1 Authentication Snippets
Getting the authenticated username: C<$r-E<gt>connection-E<gt>user()>,
@@ -1112,7 +1004,6 @@
my $user = $r->connection->user;
-
=head1 Emulating the Authentication Mechanism
You can provide your own mechanism to authenticate users, instead of
@@ -1125,10 +1016,6 @@
that you can have your "username" passed as if it was transmitted to
Apache through HTTP authentication.
-
-
-
-
=head1 An example of using Apache::Session::DBI with cookies
META: should be annotated at some point. (an example was posted to the
@@ -1172,7 +1059,6 @@
}
-
=head1 Using DESTROY to Finalize Output
Well, as always with Perl -- TMTOWTDI (There's More Than One Way To Do
@@ -1307,8 +1193,6 @@
After all, it's a little awkward to need a C<LogHandler> to clean up
after ourselves....
-
-
=head1 Setting Environment Variables For Scripts Called From CGI.
Perl uses C<sh()> for its C<system()> and C<open()> calls. So if you
@@ -1337,8 +1221,6 @@
containing a subroutine which you can then call directly from your
mod_perl script.
-
-
=head1 Mysql Backup and Restore Scripts
This is somewhat off-topic, but since many of us use mysql or some
@@ -1366,7 +1248,6 @@
=code mysql-3.22.30+_backup.pl This is the code modified to work with
mysql-3.22.30+
-
You might need to change the executable paths according to your
system. List the names of the databases you want to backup using
the C<db_names> array.
@@ -1397,9 +1278,5 @@
that can make an atomic snapshot of a database. (by Tim Bunce) So you
may consider using it instead.
-
=cut
-
-
-
1.3 +26 -30 modperl-docs/src/docs/1.0/guide/start.pod
Index: start.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/start.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- start.pod 4 Feb 2002 13:50:25 -0000 1.2
+++ start.pod 27 Feb 2002 18:03:36 -0000 1.3
@@ -8,36 +8,36 @@
overall picture of this wonderful technology. There is more than one
way to use a mod_perl-enabled webserver. You have to decide which
mod_perl scheme you want to use. L<Picking the Right
-Strategy|strategy/> chapter presents various approaches and discusses
+Strategy|guide::strategy/> chapter presents various approaches and discusses
their pros and cons.
Once you know what best fits your requirements, you should proceed
-to L<Real World Scenarios Implementation|scenario/>. This chapter
+to L<Real World Scenarios Implementation|guide::scenario/>. This chapter
provides very detailed scenarios of the schemes discussed in the
-L<Choosing the Right Strategy|strategy/> chapter.
+L<Choosing the Right Strategy|guide::strategy/> chapter.
-The L<Server Installation|install/> chapter follows on from the L<Real
-World Scenarios Implementation|scenario/> chapter by providing more
+The L<Server Installation|guide::install/> chapter follows on from the L<Real
+World Scenarios Implementation|guide::scenario/> chapter by providing more
in-depth installation details.
-The L<Server Configuration|config/> chapter adds to the basic
+The L<Server Configuration|guide::config/> chapter adds to the basic
configurations presented in the L<Real World Scenarios
-Implementation|scenario/> chapter with extended configurations and
+Implementation|guide::scenario/> chapter with extended configurations and
various configuration examples.
-The L<Frequent mod_perl problems|frequent/> chapter is a collection of
+The L<Frequent mod_perl problems|guide::frequent/> chapter is a collection of
links to other chapters. It is an attempt to stress some of the most
frequently encountered mod_perl problems. So this is the first place
you should check if you have got a problem.
Probably the most important chapter is L<CGI to mod_perl
-Porting. mod_perl Coding guidelines|porting/>. It explains the
+Porting. mod_perl Coding guidelines|guide::porting/>. It explains the
differences between scripts running under mod_cgi and mod_perl, and
what should be done in order to make existing scripts run under
mod_perl. Along with the porting notes it provides guidelines for
proper mod_perl programming.
-L<Performance. Benchmarks|performance/> is the biggest and a very
+L<Performance. Benchmarks|guide::performance/> is the biggest and a very
important chapter. It explains the details of tuning mod_perl and the
scripts running under it, so you can squeeze every ounce of the power
from your server. A large part of the chapter is benchmarks, the
@@ -54,37 +54,37 @@
all the intimate details of what is happening to your scripts. But
the problem is that it speaks a secret language. To learn the alphabet
and the grammar of this language, refer to the chapter L<Warnings and
-Errors: Where and Why|troubleshooting/>.
+Errors: Where and Why|guide::troubleshooting/>.
-L<Protecting Your Site|security/> - All about security.
+L<Protecting Your Site|guide::security/> - All about security.
If you are into driving relational databases with your cgi scripts,
-the L<mod_perl and Relational Databases|databases/> chapter will tell
+the L<mod_perl and Relational Databases|guide::databases/> chapter will tell
you all about the database-related goodies mod_perl has prepared for
you.
If you are using good old dbm files for your databases, the L<mod_perl
-and dbm files|dbm/> chapter explains how to utilize them better under
+and dbm files|guide::dbm/> chapter explains how to utilize them better under
mod_perl.
More and more Internet Service Providers (ISPs) are evaluating the
possibility of providing mod_perl services to their users. Is this
possible? Is it secure? Will it work? What resources does it take?
-The L<mod_perl for ISPs. mod_perl and Virtual Hosts|multiuser/>
+The L<mod_perl for ISPs. mod_perl and Virtual Hosts|guide::multiuser/>
chapter answers all these questions. If you want to run a mod_perl-
enabled server, but do not have root access, read this chapter as
well, either to learn how to do it yourself, or maybe to persuade your
ISP to provide this service.
If you have to administer your Apache mod_perl server the
-L<Controlling and Monitoring the Server|control/> chapter is for
+L<Controlling and Monitoring the Server|guide::control/> chapter is for
you. Among the topics are: server restarting and monitoring
techniques, preventing the server from eating up all your disk space
in a matter of minutes, and more.
(META: fix this)
The L<mod_perl Status. Peeking into the Server's Perl
-Innards|config/mod_perl_Configuration> chapter shows you the ways you
+Innards|guide::config/mod_perl_Configuration> chapter shows you the ways you
can peek at what is going on in a mod_perl-enabled server while it is
running. Like looking at the value of some global variable, what
database connections are open, looking up what modules are loaded and
@@ -95,16 +95,16 @@
flag and debug it. Is it possible to do the same under mod_perl? After
all you cannot debug every CGI script by executing it from the command
line: some scripts will not run from the command line. The L<Debugging
-mod_perl|debug/> chapter proves debugging under mod_perl is possible.
+mod_perl|guide::debug/> chapter proves debugging under mod_perl is possible.
Sometimes browsers that interact with our servers have bugs, which
cause big headaches for CGI developers. Coping with these bugs
is discussed in the L<Workarounds for some known bugs in
-browsers|browserbugs/> chapter.
+browsers|guide::browserbugs/> chapter.
Many modules were written to extend mod_perl's core
functionality. Some important modules are covered in the L<Apache::*
-modules|modules/> chapter.
+modules|guide::modules/> chapter.
Some folks decide to go with mod_perl even though they are not
experienced Perl programmers. mod_perl is a demanding environment
@@ -113,31 +113,27 @@
barrier; Perl comes with copious and high quality on-line
documentation and there are many Perl books available which will get
you up to speed. Get a good Perl book and start reading. The L<Perl
-Reference|perl/> chapter gives some basic, mod_perl specific Perl
+Reference|guide::perl/> chapter gives some basic, mod_perl specific Perl
lessons, delivering the knowledge without which you cannot start to
program mod_perl scripts.
-The L<Code Snippets|snippets/> chapter is just a collection of code
+The L<Code Snippets|guide::snippets/> chapter is just a collection of code
snippets I have found useful while writing the scripts.
-The L<Choosing an Operating System and Hardware|hardware/> chapter
+The L<Choosing an Operating System and Hardware|guide::hardware/> chapter
gives you an idea on how to choose the software and hardware for the
webserver.
-The L<mod_perl Advocacy|advocacy/> tries to make it easier to advocate
+The L<mod_perl Advocacy|guide::advocacy/> tries to make it easier to advocate
mod_perl around the world.
-The L<Getting Help and Further Learning|help/> chapter refers you to
+The L<Getting Help and Further Learning|guide::help/> chapter refers you to
other related information resources, like learning Perl programming
and SQL, understanding security, building databases, and more.
-L<Appendix A: Downloading software and documentation|download/>
+L<Appendix A: Downloading software and documentation|guide::download/>
includes pointers to the software that was explained and/or mentioned
in this guide.
=cut
-
-
-
-
1.2 +14 -72 modperl-docs/src/docs/1.0/guide/strategy.pod
Index: strategy.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/strategy.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- strategy.pod 6 Jan 2002 16:54:56 -0000 1.1
+++ strategy.pod 27 Feb 2002 18:03:36 -0000 1.2
@@ -38,11 +38,6 @@
=back
-
-
-
-
-
=head1 mod_perl Deployment Overview
There are several different ways to build, configure and deploy your
@@ -115,12 +110,10 @@
The DSO module (C<mod_so>) adds size and complexity to your binaries.
Refer to the section L<"Pros and Cons of Building mod_perl as
-DSO|install/Pros_and_Cons_of_Building_mod_pe"> for more information.
+DSO|guide::install/Pros_and_Cons_of_Building_mod_pe"> for more information.
Build details: L<Build mod_perl as DSO inside Apache source tree via
-APACI|install/Build_mod_perl_as_a_DSO_inside_t>
-
-
+APACI|guide::install/Build_mod_perl_as_a_DSO_inside_t>
=item 4
@@ -130,18 +123,11 @@
=back
-
-
-
-
-
-
-
=head1 Alternative architectures for running one and two servers
The next part of this chapter discusses the pros and the cons of each
of these presented configurations. L<Real World Scenarios
-Implementation|scenario/> describes the implementation techniques of
+Implementation|guide::scenario/> describes the implementation techniques of
these schemes.
We will look at the following installations:
@@ -158,7 +144,6 @@
=back
-
=head2 Standalone mod_perl Enabled Apache Server
The first approach is to implement a straightforward mod_perl
@@ -248,11 +233,9 @@
for you!
For implementation notes, see the "L<One Plain and One mod_perl
-enabled Apache Servers|scenario/One_Plain_and_One_mod_perl_enabl>"
+enabled Apache Servers|guide::scenario/One_Plain_and_One_mod_perl_enabl>"
section in the implementations chapter.
-
-
=head2 One Plain Apache and One mod_perl-enabled Apache Servers
As I have mentioned before, when running scripts under mod_perl you
@@ -310,8 +293,7 @@
hide the internal port implementations, so the client sees only one
server running on port C<80>. (See L<Publishing Port Numbers other
than
-80|config/Publishing_Port_Numbers_other_th>)
-
+80|guide::config/Publishing_Port_Numbers_other_th>)
The disadvantages:
@@ -355,10 +337,10 @@
Before you go on with this solution you really want to look at the
L<Adding a Proxy Server in http Accelerator
-Mode|strategy/Adding_a_Proxy_Server_in_http_Ac> section.
+Mode|guide::strategy/Adding_a_Proxy_Server_in_http_Ac> section.
For implementation notes see the "L<One Plain and One mod_perl enabled
-Apache Servers|scenario/One_Plain_and_One_mod_perl_enabl>" section in
+Apache Servers|guide::scenario/One_Plain_and_One_mod_perl_enabl>" section in
implementations chapter.
=head2 One light non-Apache and One mod_perl enabled Apache Servers
@@ -370,7 +352,6 @@
since it is very simple and uses almost no memory (260K) and does not
spawn child processes.
-
The Advantages:
=over 4
@@ -400,7 +381,6 @@
=back
-
The Disadvantages:
=over 4
@@ -412,7 +392,6 @@
=back
-
Another interesting choice is a kHTTPd webserver for Linux. kHTTPd is
different from other webservers in that it runs from within the
Linux-kernel as a module (device-driver). kHTTPd handles only static
@@ -422,8 +401,6 @@
Also check out the Boa webserver: http://www.boa.org/
-
-
=head1 Adding a Proxy Server in http Accelerator Mode
At the beginning there were two servers: one plain Apache server,
@@ -532,7 +509,7 @@
and therefore will not be discussed here. There is a plenty of
information available at the Internet though. For more information see
L<'High-Availability Linux
-Project'|download/High_Availability_Linux_Project>)
+Project'|guide::download/High_Availability_Linux_Project>)
=item *
@@ -601,7 +578,6 @@
Chapter on page XXX (mod_proxy_add_forward) we present a solution for
this problem.
-
=back
Have I succeeded in convincing you that you want a proxy server?
@@ -612,7 +588,6 @@
feeding a slow client is gone. You are probably better off sticking
with a straight mod_perl server in this case.
-
=head1 Implementations of Proxy Servers
As of this writing, two proxy implementations are known to be widely
@@ -698,12 +673,11 @@
For implementation details, see the sections L<Running One Webserver
and Squid in httpd Accelerator
-Mode|scenario/Running_One_Webserver_and_Squid_> and L<Running Two
+Mode|guide::scenario/Running_One_Webserver_and_Squid_> and L<Running Two
Webservers and Squid in httpd Accelerator
-Mode|scenario/Running_Two_webservers_and_Squid> in the implementations
+Mode|guide::scenario/Running_Two_webservers_and_Squid> in the implementations
chapter.
-
=head2 Apache's mod_proxy
I do not think the difference in speed between Apache's B<mod_proxy>
@@ -725,7 +699,6 @@
already sent, so that it does not change in the client's B<Location>
window.
-
The Advantages:
=over 4
@@ -752,7 +725,7 @@
=item *
It does mod_perl output buffering like squid does. See the L<Using
-mod_proxy|scenario/mod_proxy> notes for more details.
+mod_proxy|guide::scenario/mod_proxy> notes for more details.
=item *
@@ -780,10 +753,9 @@
=back
For implementation see the "L<Using
-mod_proxy|scenario/mod_proxy>" section in the
+mod_proxy|guide::scenario/mod_proxy>" section in the
implementation chapter.
-
=head2 Closing Lingering Connections with Lingerd
Because of some technical complications in TCP/IP, at the end of each
@@ -824,9 +796,6 @@
For more information about C<lingerd> see:
http://www.iagora.com/about/software/lingerd/
-
-
-
=head1 When One Machine is not Enough for RDBMS Database and mod_perl
Imagine a scenario where you start your business as a small service
@@ -894,7 +863,6 @@
some heavy Java applets, but that movie is screened in another
theater.
-
=head2 Servers' Requirements
Let's first understand what kind of software the web and database
@@ -927,7 +895,6 @@
small amounts (otherwise)
* CPU: medium to high (according to needs)
-
=head2 The Problem
With the database and the httpd on the same machine, you have
@@ -965,7 +932,6 @@
process is getting 99.9% CPU time, and the kernel scheduler is using
the remainder.
-
=head2 The Solution
Adding another machine, which allows a set-up where both the database
@@ -1002,8 +968,6 @@
=back
-
-
=head3 Cons
=over
@@ -1046,10 +1010,8 @@
new requests. So the overall machine performance can be worse than it
was originally when you had just a single machine for both servers.
-
=back
-
=head2 Three Machines Model
Since we are talking about using a dedicated machine for each server,
@@ -1065,10 +1027,6 @@
the hardware requirement will depend on the number of objects you will
have to serve and the rate at which they are requested.
-
-
-
-
=head1 Running More than One mod_perl Server on the Same Machine.
Let's assume that you have two different sets of code which have
@@ -1094,13 +1052,12 @@
webserver.
According to the equation developed in the section: "L<Choosing
-MaxClients|performance/Choosing_MaxClients>":
+MaxClients|guide::performance/Choosing_MaxClients>":
Total_RAM - Shared_RAM_per_Child
MaxClients = ---------------------------------------
Max_Process_Size - Shared_RAM_per_Child
-
MaxClients = (251 - 11)/(17-11) = 40
We see that we can run 40 processes, using the given memory and the
@@ -1202,15 +1159,13 @@
the second code set won't work with a new version of a module it was
relying on.
-
-
=head1 SSL functionality and a mod_perl Server
If you need SSL functionality, you can get it by adding the mod_ssl or
equivalent Apache_ssl to the light front-end server (httpd_docs) or
the heavy back-end mod_perl server (httpd_perl). ( The configuration
and installation instructions are located
-L<here|install/mod_perl_and_mod_ssl___openssl_>.)
+L<here|guide::install/mod_perl_and_mod_ssl___openssl_>.)
The question is: Is it a good idea to add mod_ssl into the back-end
mod_perl enabled server? Given that your internal network is secured,
@@ -1267,18 +1222,5 @@
to adapt you'll have more freedom to change what software you're using
and more control of things. So the choice is in your hand.
-
-
-
-
-
-
-
-
-
=cut
-
-
-
-
1.2 +0 -2 modperl-docs/src/docs/1.0/guide/style.css
Index: style.css
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/style.css,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- style.css 6 Jan 2002 16:54:56 -0000 1.1
+++ style.css 27 Feb 2002 18:03:36 -0000 1.2
@@ -1,10 +1,8 @@
-
body { font-family: helvetica, arial, sans-serif;
color: #000000;
background-color: #ffffee;
margin: 1em 4em;
}
-
h1, h2, h3 { color: #005A9C }
h1, h2, h3, h4, h5, h6 {
1.4 +19 -152 modperl-docs/src/docs/1.0/guide/troubleshooting.pod
Index: troubleshooting.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/troubleshooting.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- troubleshooting.pod 4 Feb 2002 14:16:49 -0000 1.3
+++ troubleshooting.pod 27 Feb 2002 18:03:36 -0000 1.4
@@ -7,39 +7,22 @@
Perl's warnings mode is immensely helpful in detecting possible
problems. Make sure you always turn on warnings while you are
developing code. See L<The Importance of
-Warnings|debug/The_Importance_of_Warnings>.
+Warnings|guide::debug/The_Importance_of_Warnings>.
Enabling C<use diagnostics;> generally helps you to determine the
source of the problem and how to solve it. See L<diagnostics
-pragma|debug/diagnostics_pragma> for more information.
-
-
-
-
-
-
-
+pragma|guide::debug/diagnostics_pragma> for more information.
=head1 Building and Installation
-See L<make Troubleshooting|install/make_Troubleshooting> and
-L<make test Troubleshooting|install/make_test_Troubleshooting>
-
-
-
-
-
-
-
-
-
+See L<make Troubleshooting|guide::install/make_Troubleshooting> and
+L<make test Troubleshooting|guide::install/make_test_Troubleshooting>
=head1 Configuration and Startup
This section talks about errors reported when you attempt to start the
server.
-
=head2 SegFaults During Startup
You have to build mod_perl with the same compiler as Perl was built
@@ -117,8 +100,6 @@
For more information see the I<ld> manpage and an essay on
C<LD_LIBRARY_PATH>: http://www.visi.com/~barr/ldpath.html
-
-
=head2 Invalid command 'PerlHandler'...
Syntax error on line 393 of /etc/httpd/conf/httpd.conf: Invalid
@@ -137,10 +118,6 @@
This can also happen when you try to run a non-mod_perl Apache server
using the configuration from a mod_perl server.
-
-
-
-
=head2 RegistryLoader: Translation of uri [...] to filename failed
RegistryLoader: Translation of uri [/home/httpd/perl/test.pl] to filename
@@ -155,12 +132,6 @@
complex cases. C<Apache::RegistryLoader>'s man page shows how to
handle these cases as well (look for the trans() sub).
-
-
-
-
-
-
=head2 "Apache.pm failed to load!"
If your server startup fails with:
@@ -171,51 +142,17 @@
PerlModule Apache
-
-
-
-
-
-
-
-
-
-
=head1 Code Parsing and Compilation
-
-
-
-
-
-
-
=head2 Value of $x will not stay shared at - line 5
L<my() Scoped Variable in Nested
-Subroutines|perl/my___Scoped_Variable_in_Nested_Subroutines>.
-
-
-
-
-
-
-
+Subroutines|guide::perl/my___Scoped_Variable_in_Nested_Subroutines>.
=head2 Value of $x may be unavailable at - line 5.
L<my() Scoped Variable in Nested
-Subroutines|perl/my___Scoped_Variable_in_Nested_Subroutines>.
-
-
-
-
-
-
-
-
-
-
+Subroutines|guide::perl/my___Scoped_Variable_in_Nested_Subroutines>.
=head2 Can't locate loadable object for module XXX
@@ -227,12 +164,6 @@
C<EVERYTHING=1> or C<DYNAMIC=1> parameters to enable and build all the
components of C<Apache::Util>.
-
-
-
-
-
-
=head2 Can't locate object method "get_handlers"...
Can't locate object method "get_handlers" via package "Apache"
@@ -240,22 +171,12 @@
You need to rebuild your mod_perl with stacked handlers, i.e.
C<PERL_STACKED_HANDLERS=1> or more simply C<EVERYTHING=1>.
-
-
-
-
-
-
=head2 Missing right bracket at line ...
Most often you will find that you really do have a syntax error.
However the other reason might be that a script running under
C<Apache::Registry> is using C<__DATA__> or C<__END__> tokens. L<Learn
-why|porting/__END___and___DATA___tokens>.
-
-
-
-
+why|guide::porting/__END___and___DATA___tokens>.
=head2 Can't load '.../auto/DBI/DBI.so' for module DBI
@@ -294,17 +215,6 @@
This problem is only known to be caused by installing gnu ld under Solaris.
-
-
-
-
-
-
-
-
-
-
-
=head1 Runtime
=head2 "exit signal Segmentation fault (11)" with mysql
@@ -317,8 +227,6 @@
Solution: re-compile PHP without the built-in MySQL support (you can
still connect to MySQL).
-
-
=head2 foo ... at /dev/null line 0
Under mod_perl you may receive a warning or an error in the
@@ -328,13 +236,11 @@
handler, because there is no actual file associated with the handler.
Therefore C<$0> is set to I</dev/null> and that's what you see.
-
=head2 Preventing mod_perl Processes From Going Wild
See the sections "L<Non-Scheduled Emergency Log
-Rotation|control/Non_Scheduled_Emergency_Log_Rotation>" and "L<All RAM
-Consumed|control/All_RAM_Consumed>"
-
+Rotation|guide::control/Non_Scheduled_Emergency_Log_Rotation>" and "L<All RAM
+Consumed|guide::control/All_RAM_Consumed>"
=head2 Segfaults when using XML::Parser
@@ -347,20 +253,15 @@
Starting from mod_perl version 1.23 this option is disabled by default.
-
=head2 My CGI/Perl Code Gets Returned as Plain Text Instead of Being
Executed by the Webserver
See L<My CGI/Perl Code Gets Returned as Plain Text Instead of Being
-Executed by the
Webserver|config/My_CGI_Perl_Code_Gets_Returned_as_Plain_Text_Instead_of_Being_Executed_by_the_Webserver>.
-
-
+Executed by the
Webserver|guide::config/My_CGI_Perl_Code_Gets_Returned_as_Plain_Text_Instead_of_Being_Executed_by_the_Webserver>.
=head2 Incorrect line number reporting in error/warn log messages
See L<Use of uninitialized value at (eval 80) line
-12.|troubleshooting/Use_of_uninitialized_value_at__eval_80__line_12_>
-
-
+12.|guide::troubleshooting/Use_of_uninitialized_value_at__eval_80__line_12_>
=head2 rwrite returned -1
@@ -370,7 +271,7 @@
There was a bug that reported this debug message regardless of the
value of the C<LogLevel> directive. It was fixed in mod_perl 1.19_01
-(L<CVS version|download/mod_perl>).
+(L<CVS version|guide::download/mod_perl>).
Generally C<LogLevel> is either C<debug> or C<info>. C<debug> logs
everything, C<info> is the next level, which doesn't include debug
@@ -378,18 +279,12 @@
At the moment there is no way to prevent users from aborting
connections.
-
-
=head2 Can't upgrade that kind of scalar ...
Fixed in mod_perl 1.23.
-
-
-
=head2 caught SIGPIPE in process
-
[modperl] caught SIGPIPE in process 1234
[modperl] process 1234 going to Apache::exit with status...
@@ -398,7 +293,7 @@
'Stop' button. It gives you an opportunity to do cleanups if the
script was aborted in the middle of its execution. See L<Handling the
'User pressed Stop button'
-case|debug/Handling_the__User_pressed_Stop_button__case> for more
+case|guide::debug/Handling_the__User_pressed_Stop_button__case> for more
info.
If your mod_perl version is earlier than 1.17 you might also get the
@@ -410,9 +305,7 @@
Process 2493 going to Apache::exit with status=-2
You may see this message in mod_perl versions less than 1.17. See also
-L<caught SIGPIPE in process|troubleshooting/caught_SIGPIPE_in_process>.
-
-
+L<caught SIGPIPE in
process|guide::troubleshooting/caught_SIGPIPE_in_process>.
=head2 Global symbol "$foo" requires explicit package name
@@ -475,10 +368,6 @@
verbose and will tell you more than you might wish to know including
full source.
-
-
-
-
=head2 Use of uninitialized value at (eval 80) line 12.
Your code includes some undefined variable that you have used as if it
@@ -497,14 +386,12 @@
empty string in our example).
Also read about L<Finding the Line Which Triggered the Error or
-Warning|debug/Finding_the_Line_Which_Triggered_the_Error_or_Warning>.
+Warning|guide::debug/Finding_the_Line_Which_Triggered_the_Error_or_Warning>.
=head2 Undefined subroutine &Apache::ROOT::perl::test_2epl::some_function
called at
See L<Names collisions with Modules and
-libs|porting/Name_collisions_with_Modules_and_libs>.
-
-
+libs|guide::porting/Name_collisions_with_Modules_and_libs>.
=head2 Callback called exit
@@ -565,12 +452,9 @@
this way, when the real problem happens, C<Carp::confess> doesn't eat
memory in the emergency pool (C<$^M>).
-
-
-
=head2 server reached MaxClients setting, consider raising the MaxClients
setting
-See L<Choosing MaxClients|performance/Choosing_MaxClients>.
+See L<Choosing MaxClients|guide::performance/Choosing_MaxClients>.
=head2 syntax error at /dev/null line 1, near "line arguments:"
@@ -589,7 +473,6 @@
# mknod /dev/null c 1 3
# chmod a+rw /dev/null
-
=head2 Can't call method "register_cleanup" (CGI.pm)
Can't call method "register_cleanup" on an
@@ -617,14 +500,8 @@
my %bar = $cookies->{foo}->value;
}
-
-
-
-
=head1 Shutdown and Restart
-
-
=head2 Evil things might happen when using PerlFreshRestart
Unfortunately, not all perl modules are robust enough to survive
@@ -662,9 +539,6 @@
problem with code within a CGI script, moving all the code into a
module (or a library) and require()ing it should solve the problem.
-
-
-
=head2 Can't undef active subroutine
Can't undef active subroutine at
@@ -680,9 +554,6 @@
with B<$SIG{PIPE}>. It's also triggered only when you've changed your
script on disk and mod_perl is trying to reload it.
-
-
-
=head2 [warn] child process 30388 did not exit, sending another SIGHUP
From mod_perl.pod: With Apache versions 1.3.0 and higher, mod_perl
@@ -697,7 +568,6 @@
variable to C<-1>. Be aware that `your code' includes any modules you
use and I<they> may well have C<DESTROY> and C<END> blocks...
-
=head2 Processes Get Stuck on Graceful Restart
If you see a process stuck in "G" (Gracefully finishing) after a doing
@@ -706,18 +576,16 @@
cleanup normally isn't a requirement, you can disable it by setting
the PERL_DESTRUCT_LEVEL environment variable to -1. See the section
"L<Speeding up the Apache Termination and
-Restart|control/Speeding_up_the_Apache_Termination_and_Restart>" for
+Restart|guide::control/Speeding_up_the_Apache_Termination_and_Restart>" for
more information.
-
=head2 httpd keeps on growing after each restart
See the I<HUP Signal> explanation at the section:
-L<Server Stopping and Restarting|control/Server_Stopping_and_Restarting>
+L<Server Stopping and
Restarting|guide::control/Server_Stopping_and_Restarting>
=head1 Windows OS specific notes
-
=head2 Apache::DBI
C<Apache::DBI> causes the server to exit when it starts up, with:
@@ -738,6 +606,5 @@
C<PerlRequire> and C<PerlModule> statements on the first load, so they
can succeed on the second load. Without that flag, the second load
fails.
-
=cut
1.3 +3 -3 modperl-docs/src/docs/1.0/win32/win32_binaries.pod
Index: win32_binaries.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/win32/win32_binaries.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- win32_binaries.pod 10 Jan 2002 22:32:08 -0000 1.2
+++ win32_binaries.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -172,9 +172,9 @@
=head1 SEE ALSO
-L<mod_perl>, L<Apache>, http://perl.apache.org/, especially the guide,
-http://take23.org/, http://httpd.apache.org/, and
-http://www.activestate.com/.
+The I<mod_perl> manpage, the L<Apache> manpage,
+http://perl.apache.org/, especially the guide, http://take23.org/,
+http://httpd.apache.org/, and http://www.activestate.com/.
=cut
1.3 +2 -2 modperl-docs/src/docs/1.0/win32/win32_compile.pod
Index: win32_compile.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/1.0/win32/win32_compile.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- win32_compile.pod 10 Jan 2002 22:32:08 -0000 1.2
+++ win32_compile.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -169,7 +169,7 @@
=head1 SEE ALSO
-L<mod_perl>, L<Apache>, http://perl.apache.org/, especially
-the guide, and http://take23.org/.
+The I<mod_perl> manpage, the L<Apache> manpage,
+http://perl.apache.org/, especially the guide, and http://take23.org/.
=cut
1.3 +1 -1 modperl-docs/src/docs/2.0/api/mod_perl-2.0/APR/PerlIO.pod
Index: PerlIO.pod
===================================================================
RCS file:
/home/cvs/modperl-docs/src/docs/2.0/api/mod_perl-2.0/APR/PerlIO.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PerlIO.pod 2 Jan 2002 11:14:22 -0000 1.2
+++ PerlIO.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -61,7 +61,7 @@
=head1 SEE ALSO
-L<perliol(1)>, L<perlapio(1)>, L<perl(1)>.
+The I<perliol(1)>, I<perlapio(1)> and I<perl(1)> manpages.
=cut
1.4 +1 -1
modperl-docs/src/docs/2.0/api/mod_perl-2.0/Apache/ServerUtil.pod
Index: ServerUtil.pod
===================================================================
RCS file:
/home/cvs/modperl-docs/src/docs/2.0/api/mod_perl-2.0/Apache/ServerUtil.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ServerUtil.pod 20 Nov 2001 02:35:07 -0000 1.3
+++ ServerUtil.pod 27 Feb 2002 18:03:38 -0000 1.4
@@ -54,7 +54,7 @@
with a trailing C</>. (it's the same as using C<''> as C<$fname>'s
value).
-Also see the L<C<server_root>> constant.
+Also see the C<server_root> constant.
=back
1.5 +4 -4 modperl-docs/src/docs/2.0/devel/help/help.pod
Index: help.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/devel/help/help.pod,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- help.pod 9 Jan 2002 18:09:49 -0000 1.4
+++ help.pod 27 Feb 2002 18:03:38 -0000 1.5
@@ -6,8 +6,8 @@
This document covers the resources available to the mod_perl 2.0 core
developer. Please notice that you probably want to read the L<user's
-help documentation|../../user/help/help.pod> if you have problems
-using mod_perl.
+help documentation|user::help::help> if you have problems using
+mod_perl.
The following mailing lists and resources can be of a major interest
to the mod_perl 2.0 developers.
@@ -219,8 +219,8 @@
=head1 More Help
-There is a L<parallel help document|../../user/help/help.pod> in the
-user documentation set which covers mod_perl user's issues.
+There is a L<parallel help document|user::help::help> in the user
+documentation set which covers mod_perl user's issues.
=head1 Maintainers
1.4 +2 -2
modperl-docs/src/docs/2.0/devel/porting_from_1.x/porting_from_1.x.pod
Index: porting_from_1.x.pod
===================================================================
RCS file:
/home/cvs/modperl-docs/src/docs/2.0/devel/porting_from_1.x/porting_from_1.x.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- porting_from_1.x.pod 27 Dec 2001 12:07:53 -0000 1.3
+++ porting_from_1.x.pod 27 Feb 2002 18:03:38 -0000 1.4
@@ -83,8 +83,8 @@
C<Apache::Test> testing framework that comes together with mod_perl
2.x works with 1.x and 2.x mod_perl versions. Therefore you should
-consider porting your test suite to use
-C<Apache::Test>. L<writing_tests> explains how to do that.
+consider porting your test suite to use L<the Apache::Test
+Framework|devel::testing::testing>.
=head1 Maintainers
1.12 +1 -1 modperl-docs/src/docs/2.0/devel/testing/testing.pod
Index: testing.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/devel/testing/testing.pod,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- testing.pod 21 Feb 2002 04:39:01 -0000 1.11
+++ testing.pod 27 Feb 2002 18:03:38 -0000 1.12
@@ -676,7 +676,7 @@
=back
The debugging options I<-debug> and I<-breakpoint> are covered in the
-L<Debugging> section.
+L</Debugging> section.
For a complete list of available switches see the output of C<t/TEST
-help>.
1.9 +1 -1 modperl-docs/src/docs/2.0/user/compat/compat.pod
Index: compat.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/compat/compat.pod,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- compat.pod 29 Jan 2002 07:55:56 -0000 1.8
+++ compat.pod 27 Feb 2002 18:03:38 -0000 1.9
@@ -132,7 +132,7 @@
...;
}
-see the L<attributes> manpage for additional information on subroutine
+see the I<attributes> manpage for additional information on subroutine
attributes.
mod_perl 2.0 doesn't support the C<($$)> prototypes, mainly because
1.4 +1 -1 modperl-docs/src/docs/2.0/user/design/design.pod
Index: design.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/design/design.pod,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- design.pod 16 Jan 2002 05:36:53 -0000 1.3
+++ design.pod 27 Feb 2002 18:03:38 -0000 1.4
@@ -21,7 +21,7 @@
being implemented as a complete re-write from scratch.
For a more detailed introduction and functionality overview, see
-L<Overview|overview/overview/"test">.
+L<Overview|user::overview::overview/"test">.
=head1 Interpreter Management
1.8 +5 -3 modperl-docs/src/docs/2.0/user/install/install.pod
Index: install.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/install/install.pod,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- install.pod 27 Dec 2001 11:51:54 -0000 1.7
+++ install.pod 27 Feb 2002 18:03:38 -0000 1.8
@@ -196,7 +196,8 @@
% make test
-L<../testing/testing.pod> document covers the C<make test> suite.
+L<Apache::Test Framework|devel::testing::testing> document covers the
+C<make test> suite.
META: probably need to link directly to the 'Running Tests' section.
@@ -214,8 +215,9 @@
% perl build/source_scan.pl apxs $apache_prefix/bin/apxs
-META: this is covered in L<core_explained> should probably move/point
-there.
+META: this is covered in L<Core
+Explained|devel::core_explained::core_explained> should probably
+move/point there.
=head2 Re-using Build Options
1.2 +17 -14 modperl-docs/src/maillist/email-etiquette.pod
Index: email-etiquette.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/email-etiquette.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- email-etiquette.pod 5 Jan 2002 19:15:41 -0000 1.1
+++ email-etiquette.pod 27 Feb 2002 18:03:38 -0000 1.2
@@ -1,4 +1,8 @@
-=head1 The mod_perl Mailing List Guidelines
+=head1 NAME
+
+The mod_perl Mailing List Guidelines
+
+=head1 Introduction
=for html <!--
email-etiquette: This version dated 21 October 2001.
@@ -13,7 +17,6 @@
Except where noted the language of all documents is English.
-
=head1 What is mod_perl?
http://perl.apache.org/guide/intro.html#What_is_mod_perl
@@ -94,8 +97,8 @@
I<Posting> to the list is just sending a message to the address which
you will be given after you subscribe.
-Your message will not be accepted unless you have first
-L<subscribed|To Get On The List>.
+Your message will not be accepted unless you have first L<To Get On
+The List|maillist::list-users>.
Do not post to [EMAIL PROTECTED], except to subscribe to
the list! Please do not post to the list itself to attempt to
@@ -358,15 +361,15 @@
It is a large document, you probably will want to download it and read
it off-line. If you get the source (see below, L<Corrections and
-Contributions>) it comes with a build file to turn the .pod (Plain Old
-Documentation) source into HTML, .ps (PostScript) and .pdf (Portable
-Document Format). You will need at least Perl version 5.005 to build
-it. If you browse the Guide on-line you can use one of the search
-engines to find things in it. If you build and browse your own local
-HTML copy of the Guide, some of the links in it will not work unless
-you are connected to the Internet. Some people prefer to work
-offline, using tools like `grep' or `mc' to search the .pod source
-directly.
+Contributions|/Corrections_and_Contributions>) it comes with a
+build file to turn the .pod (Plain Old Documentation) source into
+HTML, .ps (PostScript) and .pdf (Portable Document Format). You will
+need at least Perl version 5.005 to build it. If you browse the Guide
+on-line you can use one of the search engines to find things in it.
+If you build and browse your own local HTML copy of the Guide, some of
+the links in it will not work unless you are connected to the
+Internet. Some people prefer to work offline, using tools like `grep'
+or `mc' to search the .pod source directly.
=head2 Finding the Guide
@@ -377,7 +380,7 @@
The sources are available from CPAN and other mirrors:
-http://www.perl.com/CPAN-local/authors/id/S/ST/STAS/
+http://www.cpan.org/authors/id/S/ST/STAS/
=head2 Corrections And Contributions
1.3 +10 -6 modperl-docs/src/maillist/list-advocacy.pod
Index: list-advocacy.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-advocacy.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-advocacy.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-advocacy.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -12,8 +16,8 @@
A mailing list for B<mod_perl advocacy issues>,
discussions about the site, etc.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-announce.pod
Index: list-announce.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-announce.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-announce.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-announce.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -12,8 +16,8 @@
The B<announce> list is for announcing mod_perl and related products
releases.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-asp.pod
Index: list-asp.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-asp.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-asp.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-asp.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -11,8 +15,8 @@
The B<asp> list is for C<Apache::ASP> discussions.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-cvs.pod
Index: list-cvs.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-cvs.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-cvs.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-cvs.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -16,8 +20,8 @@
committed to the modperl CVS repository a mail is sent here with the
diff.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-dev.pod
Index: list-dev.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-dev.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-dev.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-dev.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -12,8 +16,8 @@
The B<development> mailing list is for discussions about the
development of the core mod_perl.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-docs-cvs.pod
Index: list-docs-cvs.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-docs-cvs.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-docs-cvs.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-docs-cvs.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -12,8 +16,8 @@
A mailing list where all the B<mod_perl documentation modification
commits> are sent.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-docs-dev.pod
Index: list-docs-dev.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-docs-dev.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-docs-dev.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-docs-dev.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -11,8 +15,8 @@
A mailing list for discussing B<mod_perl documentation>
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-embperl.pod
Index: list-embperl.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-embperl.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-embperl.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-embperl.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -13,8 +17,8 @@
L<http://perl.apache.org/embperl/> users and developers to share
ideas, ask question and solve problems.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-test-cvs.pod
Index: list-test-cvs.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-test-cvs.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-test-cvs.pod 5 Feb 2002 16:19:17 -0000 1.2
+++ list-test-cvs.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -14,8 +18,8 @@
including cvs commits of changes for mod_perl's sub-project
C<Apache::Test>.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-test-dev.pod
Index: list-test-dev.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-test-dev.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-test-dev.pod 5 Feb 2002 16:19:18 -0000 1.2
+++ list-test-dev.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -14,8 +18,8 @@
because mod_perl's sub-project C<Apache::Test> is discussed on this
list.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +10 -6 modperl-docs/src/maillist/list-users.pod
Index: list-users.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/list-users.pod,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- list-users.pod 5 Feb 2002 16:19:18 -0000 1.2
+++ list-users.pod 27 Feb 2002 18:03:38 -0000 1.3
@@ -1,7 +1,11 @@
-###########################################
-# WARNING: Do not edit this file! #
-# Edit data.pl instead and re-run make.pl #
-###########################################
+###################################################
+# WARNING: Do not edit this file!
+# If you do the changes will be lost!
+# Instead edit data.pl instead and re-run make.pl
+#
+# Don't forget to commit the changes to both .txt and the generated
+# .pod to cvs, since others won't run the local make.pl
+####################################################
=head1 NAME
@@ -13,8 +17,8 @@
mod_perl users and developers to share ideas, solve problems and discuss
things related to mod_perl and the C<Apache::*> modules.
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
1.3 +2 -2 modperl-docs/src/maillist/maillist.tmpl
Index: maillist.tmpl
===================================================================
RCS file: /home/cvs/modperl-docs/src/maillist/maillist.tmpl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- maillist.tmpl 5 Feb 2002 03:31:34 -0000 1.2
+++ maillist.tmpl 27 Feb 2002 18:03:38 -0000 1.3
@@ -15,8 +15,8 @@
[% list.desc -%]
-Please read the mailing list L<Guidelines|email-etiquette> before
-posting.
+Please read the mailing list L<Guidelines|maillist::email-etiquette>
+before posting.
=head1 Subscription Information
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]