=head1 NAME Getting Your Feet Wet with mod_perl =head1 Description 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. =head1 Installation If you are a Win32 user, please refer to the L. First, L the mod_perl 2.0 source. Before installing mod_perl, you need to check that you have the L B. Apache and the right Perl version have to be built and installed B you can proceed with building mod_perl. In this chapter we assume that httpd and all helper files were installed under I<$HOME/httpd/prefork>, if your distribution doesn't install all the files under the same tree, please refer to L. 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 C is the full path to the C executable, normally found in the same directory as the C executable, but could be put in a different path as well. Finally, build, test and install mod_perl: % make && make test && make install Become I before doing C if installing system-wide. If something goes wrong or you need to enable optional features please refer to L. =head1 Configuration If you are a Win32 user, please refer to the L. Enable mod_perl built as DSO, by adding to I: LoadModule perl_module modules/mod_perl.so There are many other configuration options which you can find in the L. 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: L. =head1 Server Launch and Shutdown Apache is normally launched with C: % $HOME/httpd/prefork/bin/apachectl start and shut down with: % $HOME/httpd/prefork/bin/apachectl stop Check I<$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 =head1 Registry Scripts To enable registry scripts add the following to I: Alias /perl/ /home/httpd/httpd-2.0/perl/ SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI Order allow,deny Allow from all 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 I. 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 I and you should get the response: mod_perl 2.0 rocks! If that didn't work check the I file. For more information on the registry scripts refer to the C> manpage. (XXX: one day there will a tutorial on registry, should port it from 1.0's docs). =head1 Handler Modules 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 I, somewhere where mod_perl can find it. For example let's put it under I, and we tell mod_perl that I is in C<@INC>, via a startup file which includes just: use lib qw(/home/httpd/httpd-2.0/perl); 1; and loaded from I: PerlRequire /home/httpd/httpd-2.0/perl/startup.pl Now we can configure our module in I: SetHandler perl-script PerlResponseHandler MyApache2::Rocks Now restart the server and issue a request to I and you should get the response: mod_perl 2.0 rocks! If that didn't work check the I file. =head1 Troubleshooting If after reading the complete L and L you are still having problems, take a look at the L. If the problem persist, please report them using the L. =head1 Maintainers Maintainer is the person(s) you should contact with updates, corrections and patches. =over =item * Stas Bekman [http://stason.org/] =back =head1 Authors =over =item * Stas Bekman [http://stason.org/] =back Only the major authors are listed above. For contributors see the Changes file. =cut