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.
If you are a Win32 user, please refer to the Win32 installation document.
First, download the mod_perl 2.0 source.
Before installing mod_perl, you need check that you have the mod_perl 2.0 prerequisites installed. Apache and the right Perl version have to be built and installed before you can proceed with building mod_perl.
In this chapter we assume that httpd and all helper files were installed under $HOME/httpd/prefork, if your distribution doesn't install all the files under the same tree, please refer to the complete installation instructions.
Now, configure mod_perl:
% tar -xvzf mod_perl-2.x.xx.tar.gz % cd modperl-2.0 % perl Makefile.PL MP_APXS=$HOME/httpd/prefork/bin/apxs
where MP_APXS is the full path to the apxs executable, normally found in the same directory as the httpd executable, but could be put in a different path as well.
MP_APXS
apxs
httpd
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.
If you are a Win32 user, please refer to the Win32 configuration document.
Enable mod_perl built as DSO, by adding to httpd.conf:
LoadModule perl_module modules/mod_perl.so
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 Apache2::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:
[Fri Jul 22 09:39:55 2005] [notice] Apache/2.0.55-dev (Unix) mod_ssl/2.0.55-dev OpenSSL/0.9.7e DAV/2 mod_perl/2.0.2-dev Perl/v5.8.7 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.
For more information on the registry scripts refer to the ModPerl::Registry manapage. (XXX: on day there will a tutorial on registry, should port it from 1.0's docs).
ModPerl::Registry
Finally check that you can run mod_perl handlers. Let's write a response handler similar to the registry script from the previous section:
#file:MyApache2/Rocks.pm #---------------------- package MyApache2::Rocks; use strict; use warnings; use Apache2::RequestRec (); use Apache2::RequestIO (); use Apache2::Const -compile => qw(OK); sub handler { my $r = shift; $r->content_type('text/plain'); print "mod_perl 2.0 rocks!\n"; return Apache2::Const::OK; } 1;
Save the code in the file MyApache2/Rocks.pm, somewhere where mod_perl can find it. For example let's put it under /home/httpd/httpd-2.0/perl/MyApache2/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); 1;
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 MyApache2::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, take a look at the troubleshooting sections. If the problem persist, please report them using the following guidelines.
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 Getting, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Getting
CPAN shell
perl -MCPAN -e shell install Getting
For more information on module installation, please visit the detailed CPAN module installation guide.