# VHosts_ispconfig.conf wird nicht mehr geschrieben



## concept (15. Sep. 2008)

Hallo Forum,

ich hoffe ich bin hier richtig. ich habe auf einem neuen Server ISP 2.2.25 installiert. dies lief bisher (ca 2 wochen) auch problemlos, es wurden ca 300 Domains und 12 e-mail-postfächer angelegt.

seid 2 (arbeits)-tagen kommt es nun zu dem effekt, das die vhosts_ispconfig.conf nicht mehr aktualisiert/geschrieben wird. dadurch kann auch der apache2 nicht mehr starten.

sobald im ISP eine änderung durchgeführt wird, startet die "writeconf.php". diese wird allerdings wie in der php.ini festgelegt, nach 5 minuten laufzeit abgebochen.

ein erhöhen des limits auf 10 minuten brachte auch keinen erfolg.

konfigurationsänderungen wurden von mir keine durchgeführt, zumindest nicht bewußt.

hat vieleicht jemand von euch einen tipp, wo ich zwecks fehlersuche ansetzen könnte?

danke!

concept


----------



## concept (16. Sep. 2008)

Update:

Habe den Fehler lokalisieren können. ISP erstellt die Vhost-Datei, kopiert dann aber eine leere Datei an deren Stelle, weil der Apache nicht startet. Dieser wiederrum startet nicht, weil er ein Problem mit einem meiner Webs hat. genauer gesagt ist ihm die "ServerAlias" Zeile zu lang, die ISP erzeugt. Zur Zeit werden dort Co-Domains mit in der Summe ca. 18.000 Zeichen (ja, achtzehntausend) erstellt.

Ich habe nun mal Testweise die ServerAlias-Zeile in 1000er-Häppchen aufgeteilt. Und nun kann auch Apache starten.

Nun meine Frage in die Runde, hat keiner hier so ein Problem?  Bzw. Frage an die Entwickler (Till?), gibt es dazu einen Patch oder eine Konfigurationseinstellung? 

Danke für jede Info!


----------



## JeGr (16. Sep. 2008)

acht..acht..achtze..achtzehntausend??   

Ach du liebe Güte.. Sind das alles Aliasdomains? Lassen die sich nicht anders anlegen?


----------



## concept (16. Sep. 2008)

hallo grey,

nicht 18.000 domains... 18.000 zeichen.. domains sind es knapp 500...

denke das ich da vieleicht mit "sternchen" noch was tricksen kann, aber unter 300 komme ich bestimmt nicht

auf der anderen seite sollte das aber doch auch so funktionieren, oder?

grüße

concept


----------



## Till (16. Sep. 2008)

> Nun meine Frage in die Runde, hat keiner hier so ein Problem?


Ich denke nicht. Ich kenne aber auch keine Installation, in der so viele co-domains verwendet werden.



> Bzw. Frage an die Entwickler (Till?), gibt es dazu einen Patch oder eine Konfigurationseinstellung?


Nein. Vermutlich müsstest Du ggf. die Funktion make_vhost in der Datei /root/ispconfig/scripts/lib/config.lib.php ändern, so dass die Domains gesplittet werden.


----------



## concept (16. Sep. 2008)

hallo,

hm, dann werde ich das wohl mal versuchen mit dem "selbst-patchen".

ist das denn so ungewöhlich mit so vielen domains? *wunder*

lg

concept


----------



## Till (16. Sep. 2008)

> ist das denn so ungewöhlich mit so vielen domains? *wunder*


Vermutlich schon. Also wir haben ca. 350 - 500 ISPConfig Downloads (Installationen + Updates) pro Tag und bis jetzt wurde weder im DE noch im EN Forum sowas mal gepostet


----------



## concept (16. Sep. 2008)

so... Problem gelöst.. sieht zumindest gut aus...

@Till: Hier meine Änderungen (rot markiert), zur freien Verfügung:

Begrenzen der ServerAlias-Zeile auf ca 1000 Zeichen, dann einfach neue Zeile beginnen:

/root/ispconfig/scripts/lib/config.lib.php, ab Zeile *1387*

```
//Serveralias bestimmen
    $sql = "SELECT isp_dep.*, isp_isp_domain.* from isp_dep,isp_isp_domain,isp_nodes where isp_dep.child_doc_id = isp_isp_domain.doc_id and isp_$
    $domains = $mod->db->queryAllRecords($sql);

    [COLOR=Red][B]$current_alias_length = 0;[/B][/COLOR]
    $serveralias = "ServerAlias ";
    $rewrite_rule = "RewriteEngine on";
    foreach($domains as $domain){
        if($domain["domain_host"] == "") {
          $serveralias .= $domain["domain_domain"].' ';
          [B][COLOR=Red]$current_alias_length += strlen($domain["domain_domain"]);[/COLOR][/B]
        } else {
          $serveralias .= $domain["domain_host"] . "." . $domain["domain_domain"].' ';
          [COLOR=Red][B]$current_alias_length += strlen($domain["domain_host"] . "." . $domain["domain_domain"]);[/B][/COLOR]
        }

[COLOR=Red][B]         if ($current_alias_length > 1000) {
           $serveralias .= "\nServerAlias ";
           $current_alias_length = 0;
        }
[/B][/COLOR] 
        if(!empty($domain["domain_weiterleitung"])){
          if($domain["domain_host"] == "") {
            $rewrite_cond_url = str_replace(".", "\\.", $domain["domain_domain"]);
                  } elseif ($domain["domain_host"] == "*") {
                          $rewrite_cond_url = "(.*)\.".str_replace(".", "\\.", $domain["domain_domain"]);
          } else {
            $rewrite_cond_url = str_replace(".", "\\.", $domain["domain_host"].".".$domain["domain_domain"]);
          }
```
Kleiner Performance-Schub durch geänderte Abfrage ob Lokaler/Externer Mailserver, wenn viele Codomains und User-Email-Aliasse vorhanden (Es werden nur noch die Domains behandelt die auf Lokaler-Mailserver gestellt sind):

/root/ispconfig/scripts/lib/classes/ispconfig_postfix.lib.php, ab Zeile *224*


```
if(!empty($codomains)){
          foreach($codomains as $codomain){
            [B][COLOR=Red]if ($codomain["domain_local_mailserver"]) [/COLOR][/B]{
               foreach($emails as $email){
                 if(!empty($email)){

                   if(!empty($codomain["domain_host"])){
                     $mod->tpl->assign( array(  EMAILALIAS => str_replace("####----||||----####", "", $email)."@".$codomain["domain_host"].".".$$
                                                USER => $user_username));
                     $mod->tpl->parse(VIRTUSERTABLE,".virtusertable");
                     //if($user["user_catchallemail"] && isset($nousers[$codomain["domain_host"].".".$codomain["domain_domain"]])) unset($nouser$
                   } else {
                     $mod->tpl->assign( array(  EMAILALIAS => str_replace("####----||||----####", "", $email)."@".$codomain["domain_domain"],
                                                USER => $user_username));
                     $mod->tpl->parse(VIRTUSERTABLE,".virtusertable");
                     //if($user["user_catchallemail"] && isset($nousers[$codomain["domain_domain"]])) unset($nousers[$codomain["domain_domain"]]$
                   }
                 }
               }
[B][COLOR=Red]             } else {
               $mod->tpl->assign( array(    EMAILALIAS => "",
                                            USER => ""));
               $mod->tpl->parse(VIRTUSERTABLE,".virtusertable");
            }
[/COLOR][/B]           }
        }
```


----------



## JeGr (17. Sep. 2008)

> Kleiner Performance-Schub durch geänderte Abfrage ob Lokaler/Externer Mailserver, wenn viele Codomains und User-Email-Aliasse vorhanden (Es werden nur noch die Domains behandelt die auf Lokaler-Mailserver gestellt sind):


Was ist damit gemeint? Ist doch jetzt meines Wissens auch schon so, dass nur Domains mit Aliasen behandelt werden, die auf lokal gestellt sind?

Zur anderen Frage: Ich hatte schon viele Kunden (kleine wie große) aber so viele Co-Domains zu einer Domains sind mir noch nicht begegnet. Nicht mal bei Großkunden (Pharma oder Chemiebranche), wo das sein könnte. Meistens waren es dann doch Domains, die auf einen Unterbereich o.ä. zeigen sollten und somit dann Redirected worden sind - und damit dann einen eigenen VHost bekommen haben.


----------



## concept (17. Sep. 2008)

Zitat von Grey:


> Was ist damit gemeint? Ist doch jetzt meines Wissens auch schon so, dass nur Domains mit Aliasen behandelt werden, die auf lokal gestellt sind?


Ja stimmt, allerdings wird durch die verschachtelte schleife JEDE domain mit JEDEM E-Mail-Alias durchgeprüft. Also bei 500 Domains und 20 Aliassen ca. 10000 tests. Durch die if-Bedingung prüft er nun nur noch die Domains, die "lokal" eingestellt sind. und das sind bei mir gerade noch 10, also nur noch 10*20=200 tests...



Zitat von Grey:


> Zur anderen Frage: Ich hatte schon viele Kunden (kleine wie große) aber so viele Co-Domains zu einer Domains sind mir noch nicht begegnet. Nicht mal bei Großkunden (Pharma oder Chemiebranche), wo das sein könnte. Meistens waren es dann doch Domains, die auf einen Unterbereich o.ä. zeigen sollten und somit dann Redirected worden sind - und damit dann einen eigenen VHost bekommen haben.


Der besagte Internetauftritt besteht aus insgesamt ca 1500 Inhaltsseiten verteilt auf 9 Sprachen und den dazugehörigen Domains, insgesamt knapp 500 Stück. Bei den Domains sind aber auch viele "Falschschreibweisen" drin, und "Mit-und-Ohne-Bindestrich" Domains...

gruß

concept


----------



## JeGr (17. Sep. 2008)

> Der besagte Internetauftritt besteht aus insgesamt ca 1500 Inhaltsseiten verteilt auf 9 Sprachen und den dazugehörigen Domains, insgesamt knapp 500 Stück. Bei den Domains sind aber auch viele "Falschschreibweisen" drin, und "Mit-und-Ohne-Bindestrich" Domains...


OK, die Masse ist mir bekannt (sogar noch mehr - leider), die Anzahl der Domains die direkt drauf zeigen allerdings weniger. Mag daher kommen, dass der Konzern eine zu einfache Domain hat, als dass man die falsch schreiben würde  - die meisten sind eigene VHosts mit Redirects auf direkte Unter(portal)seiten


----------

