Getting Your Feet Wet with mod_perl
This chapter gives you the bare minimum information to get you started with mod_perl 2.0. For most people it's sufficient to get going.
First of all check that you have the mod_perl 2.0 prerequisites.
In this chapter we assume that httpd was installed under $HOME/httpd/prefork.
Next, download the mod_perl 2.0 source from: http://perl.apache.org/download/.
Now, configure mod_perl:
% tar -xvzf mod_perl-2.x.xx.tar.gz % cd modperl-2.0 % perl Makefile.PL MP_AP_PREFIX=$HOME/httpd/prefork \ MP_INST_APACHE2=1
where MP_AP_PREFIX is an Apache installation prefix, under which the include/ directory with Apache C header files can be found.
MP_AP_PREFIX
Finally, build, test and install mod_perl:
% make && make test && make install
Become root before doing make install if installing system-wide.
make install
If something goes wrong or you need to enable optional features please refer to the complete installation instructions.
Enable mod_perl built as DSO, by adding to httpd.conf:
LoadModule perl_module modules/mod_perl.so
Next, tell Perl where to find mod_perl2 libraries:
PerlModule Apache2
There are many other configuration options which you can find in the configuration manual.
If you want to run mod_perl 1.0 code on mod_perl 2.0 server enable the compatibility layer:
PerlModule Apache::compat
For more information see: Migrating from mod_perl 1.0 to mod_perl 2.0.
Apache is normally launched with apachectl:
apachectl
% $HOME/httpd/prefork/bin/apachectl start
and shut down with:
% $HOME/httpd/prefork/bin/apachectl stop
Check $HOME/httpd/prefork/logs/error_log to see that the server has started and it's a right one. It should say something similar to:
[Tue Sep 03 12:34:57 2002] [notice] Apache/2.0.41-dev (Unix) mod_perl/1.99_05-dev Perl/v5.8.0 mod_ssl/2.0.41-dev OpenSSL/0.9.6d DAV/2 configured -- resuming normal operations
To enable registry scripts add to httpd.conf:
Alias /perl/ /home/httpd/httpd-2.0/perl/ <Location /perl/> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI </Location>
and now assuming that we have the following script:
#!/usr/bin/perl print "Content-type: text/plain\n\n"; print "mod_perl 2.0 rocks!\n";
saved in /home/httpd/httpd-2.0/perl/rock.pl. Make the script executable and readable by everybody:
% chmod a+rx /home/httpd/httpd-2.0/perl/rock.pl
Of course the path to the script should be readable by the server too. In the real world you probably want to have a tighter permissions, but for the purpose of testing that things are working this is just fine.
Now restart the server and issue a request to http://localhost/perl/rock.pl and you should get the response:
mod_perl 2.0 rocks!
If that didn't work check the error_log file.
Finally check that you can run mod_perl handlers. Let's write a response handler similar to the registry script from the previous section:
package MyApache::Rocks; use strict; use warnings; use Apache::RequestRec (); use Apache::RequestIO (); use Apache::Const -compile => qw(OK); sub handler { my $r = shift; $r->content_type('text/plain'); print "mod_perl 2.0 rocks!\n"; return Apache::OK; } 1;
Save the code in the file MyApache/Rocks.pm, somewhere where mod_perl can find it. For example let's put it under /home/httpd/httpd-2.0/perl/MyApache/Rocks.pm, and we tell mod_perl that /home/httpd/httpd-2.0/perl/ is in @INC, via a startup file which includes just:
@INC
use lib qw(/home/httpd/httpd-2.0/perl);
and loaded from httpd.conf:
PerlRequire /home/httpd/httpd-2.0/perl/startup.pl
Now we can configure our module in httpd.conf:
<Location /rocks> SetHandler perl-script PerlResponseHandler MyApache::Rocks </Location>
Now restart the server and issue a request to http://localhost/rocks and you should get the response:
If after reading the complete installation and configuration chapters you are still having problems, please report them.
Maintainer is the person(s) you should contact with updates, corrections and patches.
Stas Bekman <stas (at) stason.org>
Only the major authors are listed above. For contributors see the Changes file.
To install mod_perl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm mod_perl
CPAN shell
perl -MCPAN -e shell install mod_perl
For more information on module installation, please visit the detailed CPAN module installation guide.