# Dynamische VHOSTS mit Apache2 und mod_perl



## Shogoki92 (12. August 2011)

Hallo Leute,

Ich bin jetzt schon seit einigen Tagen an folgender Sache dran.
Ich habe ein ein TSV-File in dem steht die Domain, der Pfad und der User des Vhosts.
Nun will Ich diese mithilfe von mod_perl in eine recht spezielle Standart-Konfiguraton pumpen.
Dazu habe Ich schonmal folgende Perl-Section geschrieben:


```
open(VHOSTS,"<","./scripts/vhosts_file");

my @lines =  <VHOSTS>;
close(VHOSTS);

foreach(@lines)
{
 my ($vhost_name, $vhost_path, $suexec_user) = split(/\t/);

# get the username (groupname = username)
$suexec_user = getpwuid($suexec_user);
#remove trailing / from path
$vhost_path =~ s/\/$//;

$VirtualHost{"$vhost_name:80"} = {
     ServerAlias => "$vhost_name:80",
        ServerName => "www.$vhost_name:80",
     DocumentRoot => $vhost_path,
        SuexecUserGroup => "$suexec_user $suexec_user",
     Directory => {
       $vhost_path => {
         FCGIWrapper => "/srv/www/$suexec_user/conf_$suexec_user .php",
         FilesMatch => {'\.php$' => {
                SetHandler => 'fcgid-script',
                },
},
        Options => '+ExecCGI Indexes FollowSymLinks',
        AllowOverride =>  'AuthConfig Fileinfo',
        DirectoryIndex => 'index.php',
        order => 'deny,allow',
        Allow => 'from all',
       },
     },
  };

}
```
Ein Restart bringt bei mir dann auch keine Fehler.
Und ein

```
apache2 -S
```

liefert folgendes( hab die IP und die Domains verändert):

DomainA ist eine Domain, welche normal durch ein statisches Config-File konfiguriert wurde.
DomainB ist die Domain, welche in dem TSV-File steht (vorerst nur eine zum testen)
Code:


```
1.2.3.4:80      is a NameVirtualHost
         default server DomainA.tld (/etc/apache2/sites-enabled/000-default.conf:149)
         port 80 namevhost DomainA.tld (/etc/apache2/sites-enabled/000-default.conf:149)
         port 80 namevhost www.DomainB.de (mod_perl:1)
         port 80 namevhost www.DomainB.de (mod_perl:1)
         port 80 namevhost dev.DomainA.tld (/etc/apache2/sites-enabled/evo_dev.conf:3)
...
```

Wenn Ich nun aber auf die DomainB zugreife, komme Ich immer nur auf den Standart-Vhost (DomainA) alle anderen(statisch konfigurierten) VHosts funktionieren einwandfrei.

Es scheint als würde er die Config der Perl Section nicht richtig ziehen...
Aber Ich komme einfach nicht dahinter woran es liegt...
Ich hänge etzt schon seit 3 Tagen an diesem Problem. nd hab mich dazu auch schon halb tot gegooglet.

Ich hoffe Ihr könnt mir vieleicht weiterhelfen und dass Ich das Problem genug beschrieben habe.
Schonmal Danke im vorraus.
Grüße Shogoki92


----------

