Når jeg selv har testet det af ryger min egen version online:
http://guides.printf.dk/perl-dbi.htm
Apache med virtualhosts fra en MySQL DB
Af: Jesper Noehr <spike@printf.dk> 21/01/03
Smid dette perl-kode i bunden af din httpd.conf:
<Perl>
use DBI;
my ($sth, $dbh, $sname, $sadmin, $droot, $id, $soptions);
$dbh = DBI->connect("DBI:mysql:apache","USERNAME","PASSWORD");
$sth = $dbh->prepare("SELECT * FROM vhosts");
$sth->execute();
while (($id,$sname,$droot,$sadmin,$sdomain,$soptions) = $sth->fetchrow_array()) {
#warn "+PERL DEBUG+ Addded name: $sname.$sdomain root: $droot admin: $sadmin\n";
push @{$VirtualHost{'*'}}, {
ServerName => "$sname.$sdomain",
ServerAdmin => $sadmin,
DocumentRoot => "/home/customers/$sdomain/$droot",
ErrorLog => "/home/customers/$sdomain/log/httpd-error.log",
TransferLog => "/home/customers/$sdomain/log/httpd-access.log",
Directory => {
"/home/customers/$sdomain/$droot" => {
Options => $soptions,
},
},
};
}
$sth->finish();
$dbh->disconnect();
</Perl>
Yderlige opsaetning:
Du skal lave en database i din MySQL med navnet 'apache', og tabellen 'vhosts', ellers kan du vel selv rette det til.
Felterne skal vaere 5 varchars paa 255, hhv. 'sname','droot','sadmin','sdomain','soptions'.
Navnene giver vel sig selv. 'sdomain' dog er det felt som virtualhostet hoerer til. Jeg bruger det i mit PHP frontend, og der hvor den placerer logfilerne.
Min opsaetning placerer logfilerne i ``/home/customers/<sdomain>/log/'', saa jeg kan lave webalizer stats paa dem.
BEMAERK: Dette kode kraever at du har mod_perl compilet til din apache. En let maade at goere det paa en FreeBSD er `pkg_add -r mod_perl`.
Den vil oven i koebet saette din apache op til at bruge det. :-)
Held og lykke med det.
$Id: perl-dbi.htm,v 1.3 2003/02/22 21:55:35 spike Exp $
Dette indlæg blev udgivet i
Apache,
Knowledge Base,
Old Base. Bogmærk
permalinket.