[prev in list] [next in list] [prev in thread] [next in thread]
List: apache-modperl
Subject: Re: Using "switch" in <Perl> section.
From: Jeff Nokes <jeff_nokes () yahoo ! com>
Date: 2006-08-21 18:45:53
Message-ID: 20060821184553.68733.qmail () web60716 ! mail ! yahoo ! com
[Download RAW message or body]
Hi,
We have about 30 servers in our productin envrionment, and growing too. We use \
blocks in our configs, but we just use standard conditionals to do any switch/case \
decision trees (which is what Switch is doing under the hood anyway \
[http://faq.perl.org/perlfaq7.html#How_do_I_create_a_sw].
We found it easiest to deploy our conf files with macro substitution strings in them, \
and we have a Bourne shell script that iterates over the conf files, and replaces \
macros where appropriate; then the script will start up apache. Here's an example:
...
<VirtualHost macro_ROW_HOST:macro_APACHE_HTTP_PORT>
ServerAdmin macro_APACHE_SERVER_ADMIN
ServerName macro_ROW_HOST
...
In the Bourne shell script, each macro is tied to an inline `sed` statement that does \
the subsitution. The conf file goes out with a name like '_httpd.conf', and after \
substitution, is rewritten to 'httpd.conf'.
Works well for us. It's a single solution that solves all dynamic config issues for \
our dev/QA and prod envrionments.
- Jeff
----- Original Message ----
From: Krist van Besien <krist.vanbesien@gmail.com>
To: modperl@perl.apache.org
Sent: Friday, August 18, 2006 3:20:19 AM
Subject: Using "switch" in <Perl> section.
Hello,
this is my first post to the mod_perl mailing list. I have been using
mod_perl for about a week now. I do however have quite a few years
Perl scripting experience.
What I am trying to do is: Make one httpd.conf that will be suitable
for all of our servers. We have about 20 (and growing) apache servers.
Their role can be terermined from their hostname, so mod_perl's <Perl>
sections seem especially well suited to do this.
Currently I have the following section in my httpd.conf:
526 <Perl>
527
528 # We get the hostname, and use it to:
529 # generate a PID file name
530 # generate log file names
531 # include a hostname dependent include file
532
533 use Sys::Hostname;
534 use Apache2::ServerRec;
535 use Apache2::ServerUtil;
536 use Switch;
537 my $VFL_hostname = hostname();
538 my $VFL_servertype = "";
539 $ServerName = $VFL_hostname;
540
541 $PidFile = "logs/$ServerName.pid";
542 $ServerName .= ".swisptt.ch";
543 print STDERR "ServerName = $ServerName\n";
544
545 switch ($VFL_hostname) {
546 case "mstvflfewprp2v" {
547 $VFL_servertype = "sony" ;
548 }
549 case /ms.vflfe(.*).v/ {
550 $VFL_servertype = $1;
551 }
552 else {
553 $VFL_servertype = "default";
554 }
555 }
556
557 my $VFL_include = "conf/$VFL_servertype.inc" ;
558 print STDERR "Including $VFL_include\n" ;
559 $Include = $VFL_include ;
560
561 $CustomLog = "logs/$VFL_hostname/access_log vfl" ;
562 $ErrorLog = "logs/$VFL_hostname/error_log" ;
563
564 my $VFL_serverroot = Apache2::ServerUtil::server_root() ;
565
566 unless ( -d "$VFL_serverroot/logs/$VFL_hostname" ) {
567 mkdir "$VFL_serverroot/logs/$VFL_hostname", 0755;
568 }
569
570 </Perl>
My problem: When I run apachectl test I get the following error:
String found where operator expected at
/opt/portal/webserver/conf/httpd.conf line 546, near "case
"mstvflfewprp2v""
(Do you need to predeclare case?)
Syntax error on line 527 of /opt/portal/webserver/conf/httpd.conf:
syntax error at /opt/portal/webserver/conf/httpd.conf line 545, near ") {"\n
And after staring at my code for hours I still can't find out what
might be the syntas errors...
- Perl version used is 5.8.5. I checked the contents of the @INC
variable (by adding a print STDERR @INC" statement in a seperate perl
section, and found out that on of the directories searched does
contains the switch.pm module.
I alos tested this piece of code by puting it in a small perl script,
and there it compiles just fine. But as part of a Perl section it does
not work. Why?
--
krist.vanbesien@gmail.com
Bremgarten b. Bern, Switzerland
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic