>It looks like "$include" is getting the value "Include" without aninclude file 
>name. 
>The reason is very simple. You forgot to declare

>$include as local.

You're not kidding! It is very temperamental.

I resolved the issues, and this portion appears to be working well. I'll attach 
the result below.

I am trying to revamp our architecture to be more svn oriented. The new setup 
is an EVA4400 served 
up via NFS with a few Polyserve boxes. 

I have machines for predev, dev, staging, and production (several of course).

The idea is to isolate any non-site specific configs and have one standard base 
set, hence the mod_perl effort.

At some point I'll get to putting in place some more stuff, like promoting 
sites between the environments without 
hassle, perhaps even hand that responsibility off to some extent to development 
(eg; dev->stage).

Thanks for making me see it wasn't _just_ perl though. I was under the 
impression that mod_perl kept the scripts 
contained and simple used the resulting output. More like piping I guess. 

Here's that code, which simple propagates vhost configs based on the presence 
of a site config file, and thanks again. 


<Perl>
    use Sys::Hostname;
    use File::Basename;
    use Apache2::ServerUtil;
    my $s = Apache2::ServerUtil->server;
    $s->add_config(['NameVirtualHost *:80']);

##################################################
# Get site/configuration environment using hostname()
# eg; predev01 = predev, prod01 = prod, prod02 = prod
#
    my $env=hostname();
    $env=~s/^(.*)\d+\d+\..*$/$1/;

##################################################
# Where's cronolog?
#
    my $cronolog="/efs/www/$env/app/cronolog/1.6.2/sbin/cronolog";

##################################################
# Go through the environments "CONF" directory
# to find out what sites we should load.
#
    my @configs=`find /efs/www/$env/conf/ -type f`;
    foreach $cf (@configs){
        my ($sn,$inc,$dr);
        chomp $cf;
        $inc=$cf;
        $cf = basename($cf);
        $sn=$env . "\." . $cf;
        $dr="/efs/www/$env/sites/$cf/";
        unless (-e $dr){mkdir($dr);}
       
##################################################
# This is the actual Apache Virt Configuration.
# Standard BASE configs are here, site details
# are in the $site_conf file.
#
        $s->add_config( ["<VirtualHost *:80>",
                                "ServerName $sn",
                                "ServerAdmin [EMAIL PROTECTED]",
                                "DocumentRoot \"$dr\"",
                                "Include \"$inc\"",
                                "ErrorLog \"|$cronolog 
/var/apache/logs/error/$cf/%Y-%m-%d.error.log\"",
                                "CustomLog \"|$cronolog 
/var/apache/logs/access/$cf/%Y-%m-%d.access.log\" combinedio",
                                "</VirtualHost>"
                        ]);
        }
</Perl>


      

Reply via email to