Perl
  Home arrow Perl arrow Page 3 - Introduction to mod_perl (part 3): Non...
Dev Shed Forums 
Administration  
Apache  
BrainDump  
DHTML  
Flash  
Java  
JavaScript  
Multimedia  
MySQL  
Oracle  
Perl  
PHP  
Practices  
Python  
Reviews  
Security  
Style-Sheets  
Web Services  
XML  
Zend  
Zope  
Forums Sitemap 
IBM® developerWorks 
Dedicated Servers 
E-Commerce Hosting 
Linux Web Hosting 
Managed Hosting 
Small Business Hosting 
Download TestComplete 
VPS Hosting 
Weekly Newsletter

 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
PERL

Introduction to mod_perl (part 3): Non-privileged Install
By: Stas Bekman
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 5 stars5 stars5 stars5 stars5 stars / 5
    2002-12-17

    Table of Contents:
  • Introduction to mod_perl (part 3): Non-privileged Install
  • Installing Perl Modules into a Directory of Choice
  • Manual Local mod_perl Enabled Apache Installation
  • References

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
     
    ADVERTISEMENT

    PCmover - $15 Off with Coupon Code CJPH7Q

    Introduction to mod_perl (part 3): Non-privileged Install - Manual Local mod_perl Enabled Apache Installation
    (Page 3 of 4 )

    Now when we have learned how to install local Apache and Perl modules separately, let's see how to install mod_perl enabled Apache in our home directory. It's almost as simple as doing each one separately, but there is one wrinkle you need to know about which I'll mention at the end of this section.

    Let's say you have unpacked the Apache and mod_perl sources under /home/stas/src and they look like this:

    % ls /home/stas/src /home/stas/src/apache_x.x.x /home/stas/src/mod_perl-x.xx
    where x.xx are the version numbers as usual. You want the Perl modules from the mod_perl package to be installed under /home/stas/lib/perl5 and the Apache files to go under /home/stas/apache. The following commands will do that for you:

    % perl Makefile.PL \ PREFIX=/home/stas \ APACHE_PREFIX=/home/stas/apache \ APACHE_SRC=../apache_x.x.x/src \ DO_HTTPD=1 \ USE_APACI=1 \ EVERYTHING=1 % make && make test && make install % cd ../apache_x.x.x % make install
    If you need some parameters to be passed to the .configure script, as we saw in the previous section use APACI_ARGS. For example:

    APACI_ARGS='--sbindir=/home/stas/apache/sbin, \ --sysconfdir=/home/stas/apache/etc, \ --localstatedir=/home/stas/apache/var, \ --runtimedir=/home/stas/apache/var/run, \ --logfiledir=/home/stas/apache/var/logs, \ --proxycachedir=/home/stas/apache/var/proxy'
    Note that the above multiline splitting will work only with bash, tcsh users will have to list all the parameters on a single line.

    Basically the installation is complete. The only remaining problem is the @INC variable. This won't be correctly set if you rely on the PERL5LIB environment variable unless you set it explicitly in a startup file which is require'd before loading any other module that resides in your local repository. A much nicer approach is to use the lib pragma as we saw before, but in a slightly different way--we use it in the startup file and it affects all the code that will be executed under mod_perl handlers. For example:

    PerlRequire /home/stas/apache/perl/startup.pl
    where startup.pl starts with:

    use lib qw(/home/stas/lib/perl5/5.00503/ /home/stas/lib/perl5/site_perl/5.005);
    Note that you can still use the hard-coded @INC modifications in the scripts themselves, but be aware that scripts modify @INC in BEGIN blocks and mod_perl executes the BEGIN blocks only when it performs script compilation. As a result, @INC will be reset to its original value after the scripts are compiled and the hard-coded settings will be forgotten.

    The only place you can alter the "original" value is during the server configuration stage either in the startup file or by putting

    PerlSetEnv Perl5LIB \ /home/stas/lib/perl5/5.00503/:/home/stas/lib/perl5/site_perl/5.005
    in httpd.conf, but the latter setting will be ignored if you use the PerlTaintcheck setting, and I hope you do use it.

    The rest of the mod_perl configuration and use is just the same as if you were installing mod_perl as superuser.{mospagebreak title=Local mod_perl Enabled Apache Installation with CPAN.pm} Assuming that you have configured CPAN.pm to install Perl modules locally as explained earlier in this article, the installation is very simple. Start the CPAN.pm shell, set the arguments to be passed to perl Makefile.PL (modify the example setting to suit your needs), and tell CPAN.pm to do the rest for you:

    % perl -MCPAN -eshell cpan> o conf makepl_arg 'DO_HTTPD=1 USE_APACI=1 EVERYTHING=1 \ PREFIX=/home/stas APACHE_PREFIX=/home/stas/apache' cpan> install mod_perl
    When you use CPAN.pm for local installations, after the mod_perl installation is complete you must make sure that the value of makepl_arg is restored to its original value.

    The simplest way to do this is to quit the interactive shell by typing quit and reenter it. But if you insist here is how to make it work without quitting the shell. You really want to skip this :)

    If you want to continue working with CPAN *without* quitting the shell, you must:
    1. remember the value of makepl_arg

    2. change it to suit your new installation

    3. build and install mod_perl

    4. restore it after completing mod_perl installation
    this is quite a cumbersome task as of this writing, but I believe that CPAN.pm will eventually be improved to handle this more easily.

    So if you are still with me, start the shell as usual:

    % perl -MCPAN -eshell
    First, read the value of the makepl_arg:

    cpan> o conf makepl_arg PREFIX=/home/stas
    It will be something like PREFIX=/home/stas if you configured CPAN.pm to install modules locally. Save this value:

    cpan> o conf makepl_arg.save PREFIX=/home/stas
    Second, set a new value, to be used by the mod_perl installation process. (You can add parameters to this line, or remove them, according to your needs.)

    cpan> o conf makepl_arg 'DO_HTTPD=1 USE_APACI=1 EVERYTHING=1 \ PREFIX=/home/stas APACHE_PREFIX=/home/stas/apache'
    Third, let CPAN.pm build and install mod_perl for you:

    cpan> install mod_perl
    Fourth, reset the original value to makepl_arg. We do this by printing the value of the saved variable and assigning it to makepl_arg.

    cpan> o conf makepl_arg.save PREFIX=/home/stas cpan> o conf makepl_arg PREFIX=/home/stas
    Not so neat, but a working solution. You could have written the value on a piece of paper instead of saving it to makepl_arg.save, but you are more likely to make a mistake that way.

    More Perl Articles
    More By Stas Bekman


     

       

    PERL ARTICLES

    - Perl: A Continuing Look at Hashes and Multid...
    - Perl: Another Round with Hashes
    - Perl Hashes
    - Perl Lists: A Final Look at List::Util
    - Perl Lists: Utilizing List::Util
    - Perl Lists: The Split() Function
    - SQL and CGI with Perl and DBI
    - Perl Lists: More Functions and Operators
    - SELECT Queries and Perl
    - Perl Lists: More on Manipulation
    - Creating a Database with Perl and DBI
    - Perl: Sailing the List(less) Seas
    - Perl and DBI
    - Perl: Concatenating Text and More
    - Perl Text: Quoting Without Quote Marks

     
    Accelerating Trading Partner Performance
     
    Competing on Analytics
     
    Cost Effective Scaling with Virtualization and Coyote Point Systems
     
    Five Checkpoints to Implementing IP Telephony
     
    Hosted Email Security: Staying Ahead of New Threats
     




    © 2003-2008 by Developer Shed. All rights reserved. DS Cluster 5 hosted by Hostway