You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "Eric J. Hansen" <eh...@worldmachine.com> on 2004/01/18 23:18:14 UTC
[mp2] configure Apache with PerlRequire and external script (does $PerlConfig work in mp2?)
I'd like to dynamically configure Apache using an external Perl script. i.e., in
httpd.conf:
PerlRequire myhttpdconf.pl
Since I'm using a database to define how I'd like to configure multiple
virtual hosts on my server, my Perl script iterates through records to
produce the necessary Apache configuration:
myhttpdconf.pl:
package Apache::ReadConfig;
use Apache::ServerUtil ();
...database query/fetch...
...iterate through records...
With all the books and web references on hand, I've already tried numerous approaches
to get things working, but have been unsuccessful. The only thing that has worked
has been to generate my Apache configuration syntax as text and then copy/paste
it into the httpd.conf file (obviously not as dynamic as I'd like):
Here's a summary of what I've tried (unsuccessfully) in the myhttpdconf.pl file:
1) appending Apache syntax to $PerlConfig, i.e., "$PerlConfig .= "<VirtualHost 1.2.3.4:80>\n", etc.
2) same as #1, but pushing lines onto @PerlConfig array
3) Apache->server->add_config($line), for each $line in my $myconfig (similar as approach #1,
but using add_config rather than $PerlConfig, and prepending the entire block with "<Perl>",
and appending "</Perl>".)
I have also tried using the Perl Syntax within the external script
(i.e. "<Perl>\n$VirtualHost{ ... }\n</Perl>") but found it too complicated for
my needs, particularly since most of my virtual hosts have the same IP/port.
I'm hoping that someone can shed some light on this topic. I think the
ideal way for me to do this is with the $PerlConfig var, but it seems that perhaps
this area has changed considerably since mp1, and is perhaps the API is still in flux.
FYI, Here's an example of a typical VirtualHost configuration for my server (there are
many of these, mostly sharing the same IP:port):
<VirtualHost 1.2.3.4:443>
ServerName www.hostA.com
PerlSetVar myvar_A value1
PerlSetEnv myenvvar_A value1
SetHandler perl-script
PerlInitHandler myhandler1
PerlTransHandler myhandler2
SSLEngine on
SSLCertificateFile conf/ssl/host_A.crt
SSLCertificateKeyFile conf/ssl/host_A.key
</VirtualHost>
My system is:
Apache/2.0.48 (Unix) mod_perl/1.99_11 Perl/v5.8.2 mod_ssl/2.0.48 OpenSSL/0.9.7c
thanks
Eric
--
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html