On Wednesday, November 24, 2010 02:28:40 Mohit Anchlia wrote:
> 1. Is it possible to build it such that I don't have to run make
> install on every web server? Is there a way to build mod_perl that
> contains everything including perl modules? This will help in install
> and keeping track of mod_perl in only one place.
How about using a package system like RPM?
Also, "make install" supports the "DESTDIR=..." option. For example
make DESTDIR=/tmp/buildroot install
That won't install anything under your normal root directory but instead
/tmp/buildroot will look like / with respect to the installed files.
So, after installing you can pack /tmp/buildroot into a tar file:
(cd /tmp/buildroot && tar cf - .) | gzip -9 >mp-install.tar.gz
Now, go to the destination machine and unpack the tar as:
zcat mp-install.tar.gz | (cd / && tar xf -)
Note the different cd commands in packing and unpacking.
> 2. Also, is it possible to Keep all the install modules and files
> local to apache install directory instead of having to create perl
> modules
That can be achieved by setting some variables similar to DESTDIR on the "make
install" command line. It can also be combined with DESTDIR. For example:
make DESTDIR=... \
INSTALLSITEARCH=... \
INSTALLSITELIB=... \
... \
install
I used to set DESTDIR, INSTALLSITEARCH, INSTALLSITELIB, INSTALLSITEBIN,
INSTALLSITESCRIPT, INSTALLBIN, INSTALLSCRIPT, INSTALLSITEMAN1DIR and
INSTALLSITEMAN3DIR in one of my SPEC files. See ExtUtils::MakeMaker for more
information.
But be aware that you will then have to let Perl know about the different
locations by setting @INC. That can be done for example by setting PERL5LIB
prior to starting apache or by using "PerlSwitches -I ..." or by issuing a
"use lib" or "BEGIN {...@inc=(...)}" or something similar. Recent perl versions
can be compiled with -Dusesitecustomize which can also help here. See INSTALL
in the root directory of you perl source package.
> 3. Is it possible to deploy the modules that I create local to apache
> install directory? Currently I found one of the paths from @INC and
> created module there. But the problem is that we have too many
> webservers and install is going to be a problem.
You have to install your own modules in a location where perl can find them,
see above.
> 4. Is there a way to dynamically change perl module without having to
> stop or start apache?
The best approximation is Apache::Reload. Due to the nature of perl it cannot
catch all possible cases. But if you write your modules with a possible reload
in mind it can do a good job.
Torsten Förtsch
--
Need professional modperl support? Hire me! (http://foertsch.name)
Like fantasy? http://kabatinte.net