You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs-cvs@perl.apache.org by ra...@apache.org on 2002/05/30 21:56:15 UTC
cvs commit: modperl-docs/src/docs/2.0/os/win32 config.pod install.pod Changes.pod config.cfg modperl2.pod
randyk 02/05/30 12:56:15
Modified: src/docs/2.0/os/win32 Changes.pod config.cfg
Added: src/docs/2.0/os/win32 config.pod install.pod
Removed: src/docs/2.0/os/win32 modperl2.pod
Log:
split modperl2 into config and install
Revision Changes Path
1.2 +5 -0 modperl-docs/src/docs/2.0/os/win32/Changes.pod
Index: Changes.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/os/win32/Changes.pod,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Changes.pod 30 May 2002 05:50:21 -0000 1.1
+++ Changes.pod 30 May 2002 19:56:14 -0000 1.2
@@ -9,6 +9,11 @@
The most recent changes are listed first.
+=head1 Thu May 30 16:44:02 SGT 2002
+
+* split modperl2 into config and install
+ [Randy Kobes E<lt>randy@theoryx5.uwinnipeg.caE<gt>]
+
=head1 Thu May 30 12:20:02 SGT 2002
* win32::modperl2 initial docs
1.2 +2 -1 modperl-docs/src/docs/2.0/os/win32/config.cfg
Index: config.cfg
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/os/win32/config.cfg,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- config.cfg 30 May 2002 05:50:21 -0000 1.1
+++ config.cfg 30 May 2002 19:56:14 -0000 1.2
@@ -9,7 +9,8 @@
EOB
chapters => [qw(
- modperl2.pod
+ config.pod
+ install.pod
Changes.pod
)],
);
1.1 modperl-docs/src/docs/2.0/os/win32/config.pod
Index: config.pod
===================================================================
=head1 NAME
config - configuring mod_perl-2 for Win32
=head1 Description
This document discusses how to configure mod_perl-2.
=head1 Configuration
Add this line to F<C:/Apache2/conf/httpd.conf>:
LoadModule perl_module modules/mod_perl.so
Be sure that the path to your Perl binary (eg, F<C:/Perl/bin>) is in
your C<PATH> environment variable. You may also want to use
a start-up script to load commonly used modules; this can be
done with a directive as, eg,
PerlRequire "C:/Apache2/conf/extra.pl"
where a sample start-up script F<C:/Apache2/conf/extra.pl> is
use Apache2 ();
use ModPerl::Util ();
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
use Apache::Server ();
use Apache::ServerUtil ();
use Apache::Connection ();
use Apache::Log ();
use Apache::Const -compile => ':common';
use APR::Const -compile => ':common';
use APR::Table ();
use Apache::compat ();
use ModPerl::Registry ();
use CGI ();
1;
The C<Apache2> module is used to add to C<@INC> the
relevant directories underneath, eg, F</Perl/site/lib/Apache2/>
used when building mod_perl-2 with an C<MP_INST_APACHE2=1>
option to C<perl Makefile.PL> (the C<PPM> packages discussed
above were built this way). C<Apache::compat> is used to
provide backwards compatibility with mod_perl-1.
C<ModPerl::Registry>, named so as not to conflict with
C<Apache::Registry> of mod_perl-1, is used for registry scripts.
=head1 Registry scripts
Using C<ModPerl::Registry> to speed up cgi scripts may be done as
follows. Create a directory, for example, F<C:/Apache2/perl/>, which
will hold your scripts, such as
## printenv -- demo CGI program which just prints its environment
##
use strict;
print "Content-type: text/html\n\n";
print "<HTML><BODY><H3>Environment variables</H3><UL>";
foreach (sort keys %ENV) {
my $val = $ENV{$_};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "<LI>$_ = \"${val}\"</LI>\n";
}
#sleep(10);
print "</UL></BODY></HTML>";
Note that Apache takes care of using the proper line endings
when sending the I<Content-type> header. Next, insert in
F<C:/Apache2/conf/httpd.conf> the following directives:
Alias /perl/ "/Apache2/perl/"
<Location /perl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
</Location>
whereby the script would be called as
http://localhost/perl/name_of_script
The C<PerlOptions +ParseHeaders> directive is needed when
the script sends the header (in mod_perl-1, this was given
as C<PerlSendHeader ON)>. Note that if you use the C<CGI.pm>
module in your script, then the directive
PerlOptions +GlobalRequest
should be added within the relevant C<Location> block.
As an illustration of how mod_perl-2 addresses the issues
raised in the discussion of issues in
L<multithread win32|docs::1.0::os::win32::multithread>
concerning the threading limitations
of mod_perl-1 on Win32, consider the C<printenv> script above
with the C<sleep(10)> line uncommented. Using the Apache
benchmarking tool C<ab> of the Apache-2 Win32 distribution:
ab -n 5 -c 5 http://localhost/perl/printenv
to make 5 concurrent requests, we find the following results.
For mod_perl-1/Apache-1:
Server Software: Apache/1.3.23
Concurrency Level: 5
Time taken for tests: 50.51972 seconds
Complete requests: 5
Failed requests: 0
Requests per second: 0.10 [#/sec] (mean)
Time per request: 50.052 [ms] (mean)
Time per request: 10.010 [ms] (mean, across all concurrent requests)
Transfer rate: 0.14 [Kbytes/sec] received
while for mod_perl-2/Apache-2:
Server Software: Apache/2.0.36
Concurrency Level: 5
Time taken for tests: 1.81555 seconds
Complete requests: 5
Requests per second: 4.62 [#/sec] (mean)
Time per request: 1.082 [ms] (mean)
Time per request: 0.216 [ms] (mean, across all concurrent requests)
Transfer rate: 7.40 [Kbytes/sec] received
The dramatic difference is due to the fact that in Apache-1/mod_perl-1
a given request has to finish (taking essentially 10 seconds, due
to the C<sleep(10)> call) before the next request is processed, whereas
on Apache-2/mod_perl-2 the requests are processed as they arrive.
=head1 Hello World
As you will discover, there is much to mod_perl beyond simple speed-up
of cgi scripts. Here is a simple I<Hello, World> example that
illustrates the use of mod_perl as a content handler. Create a file
F<Hello.pm> as follows:
package Apache::Hello;
use strict;
use Apache::RequestRec (); # for $r->content_type
use Apache::RequestIO (); # for $r->puts
use Apache::Const -compile => ':common';
sub handler {
my $r = shift;
my $time = scalar localtime();
my $package = __PACKAGE__;
$r->content_type('text/html');
$r->puts(<<"END");
<HTML><BODY>
<H3>Hello</H3>
Hello from <B>$package</B>! The time is $time.
</BODY></HTML>
END
return Apache::OK;
}
1;
and save it in, for example, the F<C:/Perl/site/lib/Apache2/Apache/>
directory. Next put the following directives in
F<C:/Apache2/conf/httpd.conf>:
PerlModule Apache::Hello
<Location /hello>
SetHandler modperl
PerlResponseHandler Apache::Hello
</Location>
With this, calls to
http://localhost/hello
will use C<Apache::Hello> to deliver the content.
=head1 See Also
The directions for
<installing mod_perl-2 on Win32|docs::1.0::os::win32::install>,
the L<mod_perl documentation|docs::index>,
http://perl.apache.org/, http://take23.org/,
http://httpd.apache.org/, and http://www.activestate.com/.
Help on setting up and configuring mod_perl-2 can be
found by subscribing to the mod_perl mailing list,
details of which are at http://perl.apache.org/.
=head1 Maintainers
Maintainer is the person(s) you should contact with updates,
corrections and patches.
=over
=item *
Randy Kobes E<lt>randy@theoryx5.uwinnipeg.caE<gt>
=back
=head1 Authors
=over
=item *
Randy Kobes E<lt>randy@theoryx5.uwinnipeg.caE<gt>
=back
Only the major authors are listed above. For contributors see the
Changes file.
=cut
1.1 modperl-docs/src/docs/2.0/os/win32/install.pod
Index: install.pod
===================================================================
=head1 NAME
install - installing mod_perl-2 for Win32
=head1 Description
As described in the discussion of issues in
L<multithreaded win32|docs::1.0::os::win32::multithread>,
a mod_perl-1 enabled
server based on Apache-1 on Win32 is limited to a single
thread serving a request at a time. This effectively
prevents concurrent processing, which can have serious
implications for busy sites. This problem is addressed
in the multi-thread/multi-process approach of mod_perl-2/Apache-2.
This document discusses how to obtain mod_perl-2.
=head1 Installing
Apache-2 and mod_perl-2 can be obtained in two ways - either
as binaries, or through building from the sources.
As with most packages of a more complex nature, it is best,
when possible, to build things from the sources. However,
this requires some experience with using Visual C++.
=head2 Building from sources
If you are building mod_perl-2 from sources, it is probably
also best to do the same for Apache-2. The Apache-2 sources
can be obtained from http://httpd.apache.org/, which when
unpacked will contain at the top-level a Visual Studio
project file. Choose the C<InstallBin - Win32 Release> target
to build and install Apache-2, which by default will
be placed in F</Apache2>.
Having built and installed Apache-2, next obtain the
mod_perl-2 sources from http://www.cpan.org/authors/id/D/DO/DOUGM/.
After unpacking, run the command
perl Makefile.PL MP_AP_PREFIX=\Path\to\Apache2
where F<\Path\to\Apache2> is the path to the Apache-2
package you earlier built. Then
nmake
nmake test
will build and test mod_perl-2. mod_perl-2 on Win32 is
considered at an alpha stage of development, so not
all the tests may pass.
The final command,
nmake install
will install the necessary mod_perl-2 files into your
Perl directory tree (you will also need to copy
F<src/modules/perl/mod_perl.so> into your F</Path/to/Apache2/modules/>
directory). If you are installing mod_perl-2 on a system that
also contains mod_perl-1, then some mod_perl-1 files will be
overwritten by this procedure. This can be avoided by preparing
the build as
perl Makefile.PL MP_AP_PREFIX=\Path\to\Apache2 MP_INST_APACHE2=1
which will subsequently lead to the mod_perl-2 files
being installed under an F<Apache2> subdirectory in your Perl tree.
You will then have to employ either a C<use Apache2;> line in your
scripts/packages or else a C<PerlModule Apache2> directive in
Apache's F<httpd.conf>.
If this build fails, you may want to try the latest cvs
sources - see http://perl.apache.org/mod_perl_cvs.html for
details. If you do try this, it is generally
a good idea to also use the cvs Apache-2 sources -
see http://httpd.apache.org/dev/ for information. Be aware,
though, that as well as providing
bug fixes, there may be new features being added and tested
in the cvs versions, so at any given time there are no
guarantees that these packages will build and test successfully.
=head2 Binary packages
There are two ways of obtaining a binary mod_perl-2 package.
=over 3
=item PPM
The first, for ActivePerl users, is through C<PPM> - this
assumes you already have ActivePerl (build 6xx) from
http://www.activestate.com/ and a Win32 Apache-2 binary
from http://httpd.apache.org/. In installing
this, you may find it convenient when transcribing any Unix-oriented
documentation to choose installation directories that do not have
spaces in their names (eg, F<C:/Apache2>).
After installing Perl and Apache-2, you can then install mod_perl via
the C<PPM> utility. ActiveState does not maintain mod_perl in their ppm
repository, so you must get it from a different location other than
ActiveState's site. One way is simply as (broken over two lines for
readability)
C:\> ppm install
http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl-2.ppd
Another way, which will be useful if you plan on installing additional
Apache modules, is to set the repository within the C<ppm> shell
utility as (broken over 2 lines for readability)
PPM> set repository theoryx5
http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer
or, for C<ppm3>,
PPM> rep add theoryx5
http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer
mod_perl-2 can then be installed as
PPM> install mod_perl-2
This will install the necessary modules under an F<Apache2>
subdirectory in your Perl tree, so as not to disturb an
existing F<Apache> directory from mod_perl-1. See the section
below on configuring mod_perl to add this directory to the
C<@INC> path for searching for modules.
The mod_perl PPM package also includes the necessary Apache DLL
C<mod_perl.so>; a post-installation script should be run which will
offer to copy this file to your Apache2 modules directory (eg,
F<C:/Apache2/modules/>). If this is not done, you can get
the file F<mod_perl-2.tar.gz> from
http://theoryx5.uwinnipeg.ca/ppmpackages/x86/ which, when
unpacked, contains F<mod_perl.so> in the top-level directory.
Note that the mod_perl package available from this site will always
use the latest mod_perl sources compiled against the latest official
Apache release; depending on changes made in Apache, you may or may
not be able to use an earlier Apache binary. However, in the Apache
Win32 world it is particularly a good idea to use the latest version,
for bug and security fixes.
=item Apache/mod_perl binary
At ftp://theoryx5.uwinnipeg.ca/pub/other/ one can find an
archive F<Apache2.tar.gz> containing a binary version
of Apache-2/mod_perl-2 - see the F<Apache2.readme> file
for further information. This archive unpacks into
an F<Apache2> directory, underneath which is a F<blib>
subdirectory containing the necessary mod_perl files (enabled
with a C<PerlSwitches> directive in F<httpd.conf>).
Some editing of F<httpd.conf> will be necessary to reflect
the location of the installed directory.
This package, which is updated periodically, is compiled against
recent cvs sources of Apache-2 and mod_perl-2. As such, it may
contain features, and bugs, not present in the current official
releases. Also for this reason, these may not be binary compatible
with other versions of Apache-2/mod_perl-2.
=back
=head1 See Also
The directions for
<configuring mod_perl-2 on Win32|docs::1.0::os::win32::config>,
the L<mod_perl documentation|docs::index>,
http://take23.org/,
http://httpd.apache.org/, and http://www.activestate.com/.
Help on setting up and configuring mod_perl-2 can be
found by subscribing to the mod_perl mailing list,
details of which are at http://perl.apache.org/.
=head1 Maintainers
Maintainer is the person(s) you should contact with updates,
corrections and patches.
=over
=item *
Randy Kobes E<lt>randy@theoryx5.uwinnipeg.caE<gt>
=back
=head1 Authors
=over
=item *
Randy Kobes E<lt>randy@theoryx5.uwinnipeg.caE<gt>
=back
Only the major authors are listed above. For contributors see the
Changes file.
=cut
---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org
Re: notes to committers
Posted by Per Einar Ellefsen <pe...@skynet.be>.
At 05:15 02.06.2002, Stas Bekman wrote:
>Per Einar Ellefsen wrote:
>>At 04:07 31.05.2002, Stas Bekman wrote:
>>
>>>Since now we have four committers it's easier to break the automatic build
>>
>>Hmm, so is the automatic build up now? Could you give specifics as to how
>>you've enabled it?
>
>it's just a cron job, doing 'cvs up', bin/build and bin/makeindex. Every 6
>hours it does bin/build -d (update), every 24 hours bin/build -fd (rebuild
>all). I'll document the details once I'm done with it. I've to move the
>whole build to a different location on apache.org, first.
Ok, that's what I thought. Thanks.
--
Per Einar Ellefsen
per.einar@skynet.be
---------------------------------------------------------------------
To unsubscribe, e-mail: docs-dev-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-dev-help@perl.apache.org
Re: notes to committers
Posted by Stas Bekman <st...@stason.org>.
Per Einar Ellefsen wrote:
> At 04:07 31.05.2002, Stas Bekman wrote:
>
>> Since now we have four committers it's easier to break the automatic
>> build
>
>
> Hmm, so is the automatic build up now? Could you give specifics as to
> how you've enabled it?
it's just a cron job, doing 'cvs up', bin/build and bin/makeindex. Every
6 hours it does bin/build -d (update), every 24 hours bin/build -fd
(rebuild all). I'll document the details once I'm done with it. I've to
move the whole build to a different location on apache.org, first.
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: docs-dev-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-dev-help@perl.apache.org
Re: notes to committers
Posted by Per Einar Ellefsen <pe...@skynet.be>.
At 04:07 31.05.2002, Stas Bekman wrote:
>Since now we have four committers it's easier to break the automatic build
Hmm, so is the automatic build up now? Could you give specifics as to how
you've enabled it?
>--
Per Einar Ellefsen
per.einar@skynet.be
---------------------------------------------------------------------
To unsubscribe, e-mail: docs-dev-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-dev-help@perl.apache.org
notes to committers
Posted by Stas Bekman <st...@stason.org>.
Starting from yesterday Randy, Per Einar, Bill and I are the four active
committers to the modperl-docs repository. That's fantastic! Thank you all!
Since now we have four committers it's easier to break the automatic
build, especially if you mess up with config files and break something.
Currently I get the automatic build problems emailed to me, but later
these emails will be sent to the list, so if I'm not around you can fix
the problems. Nothing bad happens if you break something, and if it does
it's easy to fix, so don't be paranoid, but still it's nice to have
everything working all the time.
Therefore before you commit, make sure to run bin/build on your machine
and see that it builds cleanly. Then commit. Thanks!
When adding new files, make sure to run 'cvs up' on your machine, which
will pinpoint any files that were forgotten to be 'cvs add'. It's quite
frequent when people add new files, run bin/build and everything works
for them but forget to commit :)
BTW, Randy we have a conventions of using a prompt sign % in our docs,
so the readers won't get confused where is code and where are command
line instructions. I guess on win32 it's something like C:>. Can you
please add those? Thanks!
One more note: the style doc that we try to follow is not cast in stone,
so if you think there is something wrong about it or you have an idea on
how to do things better please speak up. The consistent style is needed
so many people can work in agreement on the same docs, not to make you
work harder :) So please try following it. (I know you do, but just a
reminder.)
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: docs-dev-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-dev-help@perl.apache.org