phpbar.de logo

Mailinglisten-Archive

MySQL & Perl

MySQL & Perl

Rene Enskat mysql_(at)_lists.phpcenter.de
Tue, 3 Jul 2001 15:49:59 +0200


Hallo ich bin ziemlich neu in der Sache.
Also ich hab ein Script was Daten für einen Apache webserve rin eine MySql
datenbank schreibt.
Und zwar für virtuelle hosts. Ich weiß net ob jemand sich damit auskennt abe
rman kann in der httpd.conf vom apache Virtuelle hosts anlegen so nun hab
eich für jeden eintrag zum bsp DocumentRoot, ServerAdmin etc. jeweils eine
Zeile wobei servername und ip bei jedem drin stehen und dann unte ritem z.B.
ServerAdmin und unter value dann info_(at)_test.de
usw. dann mit dne andren sahcne so nun bin ich dabei eins cript zuschreiben
was sich die daten aus der sql datenbank holt und diese in die httpd.conf
schreibt allerdings wenn ich SELECT servername,item,value macht trägt er
imme rnur den letzten server mit seinen zeilen ein die andren läßßt er
garnichts machen.
Mein perlscript sieht bis jetzt so aus:

#!/usr/bin/perl

use DBI;

# check on syntax

if (length($ARGV[0])==0) {
        die "Usage: mk-www.pl <path to httpd.conf> <Server-IP> <add |
all>\n";
        }
if (length($ARGV[1])==0) {
        die "Usage: mk-www.pl <path to httpd.conf> <Server-IP> <add |
all>\n";
        }
if (length($ARGV[2])==0) {
        die "Usage: mk-www.pl <path to httpd.conf> <Server-IP> <add |
all>\n";
        }


# Connect to DB

$dbh = DBI->connect("DBI:mysql:database=company;host="localhost","","",
                {'RaiseError' => 1});


# some output

print "httpd.conf - generation for Server $ARGV[1] at $ARGV[0]\n\n";


# do the database

if ($ARGV[2]=='all') {
$sql="SELECT * FROM www_main WHERE ip='$ARGV[1]' AND status='aktiv' ";
}
if ($ARGV[2]=='add') {
$sql="SELECT * FROM www_main WHERE ip='$ARGV[1]' AND status='aktiv' AND
changed='1'";
}


#print "$sql\n";
$sth = $dbh->prepare($sql);
$sth->execute();
while ($ref = $sth->fetchrow_hashref()) {

# open file

                open(FD,">$ARGV[0]/httpd.conf");

# create header

                print FD "ServerType standalone\n";
                print FD "HostnameLookups off\n";
                print FD "User webadmin\n";
                print FD "Group nogroup\n";
                print FD "ServerRoot /u/portal/p$ref->{'p_nr'}/\n";
                print FD "LogLevel warn\n";
                print FD "LogFormat \"%h %l %u %t \"%r\" %>s %b
\"%{Referer}i\" \"%{User-Agent}i\"\" combined\n";
                print FD "LogFormat \"%h %l %u %t \"%r\" %>s %b\" common\n";
                print FD "LogFormat \"%{Referer}i -> %U\" referer\n";
                print FD "LogFormat \"%{User-agent}i\" agent\n";
                print FD "LogFormat \"%t:%b\" acclog\n";
                print FD "CustomLog
/u/portal/p$ref->{'p_nr'}/logs/p$ref->{'p_nr'}/access_log common\n";
                print FD "PidFile
/u/portal/p$ref->{'p_nr'}/logs/httpd.pid\n";
                print FD "ResourceConfig
/u/portal/p$ref->{'p_nr'}/conf/srm.conf\n";
                print FD "AccessConfig
/u/portal/p$ref->{'p_nr'}/conf/access.conf\n";
                print FD "UseCanonicalName off\n";
                print FD "Timeout 300\n";
                print FD "KeepAlive On\n";
                print FD "MaxKeepAliveRequests 100\n";
                print FD "KeepAliveTimeout 15\n";
                print FD "MinSpareServers 5\n";
                print FD "MaxSpareServers 10\n";
                print FD "StartServers 5\n";
                print FD "MaxClients 150\n";
                print FD "MaxRequestsPerChild 30\n";
                print FD "BindAddress $ref->{'ip'}\n";
                print FD "\n";
                print FD "NameVirtualHost $ref->{'ip'}\n";
                print FD "LoadModule      php3_module
libexec/libphp3.so\n";
                print FD "DirectoyIndex   index.html index.htm
index.php3\n";
                print FD "#next\n";

                print "Server: $ref->{'servername'} Status:
$ref->{'status'}\n";

#create Virtual-Host


                $sql="SELECT servername,item,value FROM www_apache WHERE
servername='$ref->{'servername'}'";
                #print "$sql\n";
                $sth2 = $dbh->prepare($sql);
                $sth2->execute();

                        $ref2->{'servername'}="$ref->{'servername'}";
                        
                        print FD "<VirtualHost $ref2->{'servername'}>\n";
                        
                        while ($ref2 = $sth2->fetchrow_hashref()) {
                        print FD "$ref2->{'item'} $ref2->{'value'}\n";
                        }
                        
                        $sth2->finish();
                        
                        print FD "</VirtualHost>\n";
                        print FD "#next\n";
                        }
                        close(FD);
$sth->finish();

# disconnect from DB
$dbh->disconnect();

---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive