Running CGI Scripts with mod_perl
What most people want to do with
mod_perl is improve CGI performance. The
mod_perl installation assumes this request by
enabling the PerlHandler
callback
hook by default and by installing the Apache::Registry module.
PerlHandler
is the handler used for
the content retrieval stage of the server transaction.
Apache::Registry is the Perl module that emulates the CGI environment
so you can use “standard” Perl CGI scripts with
mod_perl without having to rewrite them (much).
This is by far the cheapest way to get improved CGI
performance.
With Apache::Registry, each individual CGI program is compiled and cached the first time it is called (or whenever it is changed) and remains available for all subsequent instances of that CGI script. This process avoids the costs of startup time.
Whereas most CGI scripts are kept in cgi-bin, scripts that use Apache::Registry are placed in a separate directory, e.g., perl-bin. The access.conf Apache configuration file needs to point to this directory by setting an alias and defining a handler for this new location:
Alias /perl-bin/ /usr/local/apache/perl-bin/ <Location /perl-bin> SetHandler perl-script PerlHandler Apache::Registry PerlSendHeader On Options ExecCGI </Location>
Instead of using the cgi-script
handler, we use the perl-script
handler to give control to
mod_perl. Next, the PerlHandler
directive tells
mod_perl that the Apache::Registry module should
be used for serving all files in that directory.PerlSendHeader ...
Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.