Aquariophile: Apache VHOST via DB handlen

Hallo!

Browser bekommt input www.foo.com
Root-DNS-Server wird angewählt
foo.com leitet auf 213.221.43.15
IP 213.221.43.15 wird angewählt
DNS sagt dass die Seiten also die Daten auf IP 132.245.13.35 sind
IP 132.245.13.35 wird angewählt

Nun wirds interessant:

Der APACHE muss nun wissen, in welchem Verzeichnis die Daten für
die Domain foo.com liegen, in dem Fall /var/www/html/foo.com/

Das ganze ist in der Text-File (ich glauuuuube httpd.conf, aber keien Garantie)
eingetragen als VHOST

So weit so gut

Nun fängt das Problem aber erst an:
Jede änderung der Domaindaten, jeder Neukunde, usw....
das muss ja in diese httpd.conf rein.

Nun hab ich aber ein extremes File-Locking Problem.

Auf File-Locking selbst verlasse ich mich exakt Null und Niente.

Das heißt ich würde das gerne anders lösen.

Ein Kollege sagte mir bereits ich sollte von der httpd.conf eine Kopie machen.

Diese Kopie editieren,
und alle 30 minuten die Kopie einspielen und Apache neu starten.

Finde ich aber nicht gut, weil ich ja die Kopie genauso zerschiessen kann (Filelocking) und dann spielt es automatisch nach 30 minuten die kaputte httpd.conf ein.

Ist alles mies.

FRAGE:

Wie kann ich diesen ganzen VHOST Käse über eine MySQL Datenbank regeln?

Oder gibt es da eine andere Möglichkeit die ich übersah??
Im Endeffekt muss es ganz glatt über ein Script laufen können ohne irgendeine Gefahr.

Danke! ;o)
Aquariophile

  1. rehi,

    Browser bekommt input www.foo.com
    Root-DNS-Server wird angewählt

    falsche Reihenfolge

    foo.com leitet auf 213.221.43.15

    wie?

    IP 213.221.43.15 wird angewählt

    von wem?

    DNS sagt dass die Seiten also die Daten auf IP 132.245.13.35 sind

    welcher DNS?

    IP 132.245.13.35 wird angewählt

    wer wählt diese IP an?

    Nun wirds interessant:

    nö, jetzt wirds langweilig, weil alles, was folgt, Ergebnis der vorher wahrscheinlich falsch oder gar nicht beantworteten Fragen ist.

    Der APACHE muss nun wissen, in welchem Verzeichnis die Daten für
    die Domain foo.com liegen

    nein, muß er nicht und kann er nicht, niemand hats ihm ja gesagt  -  nach deiner Beschreibung.

    Das ganze ist in der Text-File (ich glauuuuube httpd.conf, aber keien Garantie)
    eingetragen als VHOST

    upsa  -  du glaubst das? nach virtuellen hosts wird relativ häufig hier nachgefragt, und du bist kein Forums-Neuling mehr  -  also schau mal ins Archiv ;-) zum thema "virtuelle Hosts" gibts (bei etwas anderem Thread-Titel) auch noch mindestens zwei Threads in der aktuellen Forumshauptdatei

    So weit so gut

    so weit, so voreilig gepostet

    Nun fängt das Problem aber erst an:
    Jede änderung der Domaindaten, jeder Neukunde, usw....
    das muss ja in diese httpd.conf rein.

    nicht unbedingt, falls das tatsächlich über einen ordentlich konfigurierten virtuellen Host geht.

    Nun hab ich aber ein extremes File-Locking Problem.
    Auf File-Locking selbst verlasse ich mich exakt Null und Niente.
    Das heißt ich würde das gerne anders lösen.

    Großes Fragezeichen: _WAS_ meinst du damit?

    Ein Kollege sagte mir bereits ich sollte von der httpd.conf eine Kopie machen. Diese Kopie editieren, und alle 30 minuten die Kopie einspielen und Apache neu starten.

    Gib dem Kollegen nen Kaffee aus und schick ihn in die Ferien  - oder besser in Aktiv-Urlaub zum Spezialthema "Apache".

    wo kommt jetzt die Frage zum File-Locking überhaupt her und in welche Richtung, mit welcher Erwartung soll sie beantworttet werden?

    Und insgesamt: Was willst du eigentlich wissen?

    Grüße aus Berlin

    Christoph S.

  2. Hallo Aqua,

    wenn ich dich richtig verstehe, rechnest du mit einem immensen Aufkommen von Neueinträgen im Virtual Hosts Bereich deiner httpd.conf?

    Nun, wenn dem so sein sollte würde ich zu allererst mal die Virtual Hosts Einträge auslagern in z.B. vhosts.conf und die dann in der httpd.conf aufrufen. Dann nur noch bei Bedarf die vhosts.conf editieren. Damit gehst du schon mal sicher, daß du an der restlichen httpd.conf nicht ausversehen irgendwas versemmelst.

    Evtl. läßt sich da auch was drehen - !Achtung - nur so ne vor mich hingesponnene Idee! daß du die vhosts.conf durchnummerierst und jeweils die nächste ansprichst - also die httpd.conf holt die vhosts_1.conf, die wiederum holt die vhosts_2.conf usw. so müßtest du eigentlich immer nur eine neue Datei für den neuen vhost hochladen ... wie gesagt, nur so vor mich hingedacht - wie sich das auf die Serverlast auswirkt oder ob das überhaupt praktikabel ist: keine Ahnung :-(

    Deine file-locking-Phobie, kann ich grade nicht nachvollziehen. File-locking wäre doch nur relevant wenn mehrere Menschen gleichzeitig die Datei(en) ändern könnten, oder mache ich da grade einen grundlegenden Denkfehler?

    Und was den Neustart des kleinen Indianer anbelangt, naja zumindest bei uns unter FreeBSD funktioniert auch das "touch httpd.conf" ganz gut.

    Gruß
    der_bernd

    1. hi bernd,

      Aqua hast du gefragt:

      wenn ich dich richtig verstehe, rechnest du mit einem immensen Aufkommen von Neueinträgen im Virtual Hosts Bereich deiner httpd.conf?

      und ich behaupte, daß das erstens nicht gefragt und zweitens nicht möglich ist. Wie soll ein "user" denn auf dem Server was in die httpd.conf eintragen können?

      würde ich zu allererst mal die Virtual Hosts Einträge auslagern in z.B. vhosts.conf und die dann in der httpd.conf aufrufen

      das ist prinzipiell möglich, aber dann hättest du Aquario sagen sollen, _wie_ das geht  -  siehe http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf08.htm#a1

      Dann nur noch bei Bedarf die vhosts.conf editieren. Damit gehst du schon mal sicher, daß du an der restlichen httpd.conf nicht ausversehen irgendwas versemmelst.

      Nicht zwingend korrekte Aussage. Wenn du eine externe Textdatei  -  egal, ob sie nun vhosts.conf oder mister_president.all heißt  -  in der httpd.conf per "include" einbindest, ist das Teil fortan Bestandteil der httpd.conf, und wenn darin was steht, was einen "Error" hervorruft", sagt der Apache insgesamt, daß er dich nicht leiden kann und startet erst gar nicht.

      Evtl. läßt sich da auch was drehen - !Achtung - nur so ne vor mich hingesponnene Idee! daß du die vhosts.conf durchnummerierst und jeweils die nächste ansprichst - also die httpd.conf holt die vhosts_1.conf, die wiederum holt die vhosts_2.conf usw.

      oh, ganz ausgezeichnete Spinnerei! Das funktioniert tasächlich

      wie sich das auf die Serverlast auswirkt oder ob das überhaupt praktikabel ist: keine Ahnung :-(

      die Auswirkung auf die "Serverlast" ist von weit mehr Faktoren abhängig. Es kann bei einem solchen Weg enorme Steigerungen geben, es kann aber auch  -  gar nix passieren

      Deine file-locking-Phobie, kann ich grade nicht nachvollziehen.

      Ja, ud das ist wohl das Problem bei Aquario, daß das "Core"-Problem selten ohne Nachfrage evaluiert werden kann

      File-locking wäre doch nur relevant wenn mehrere Menschen gleichzeitig die Datei(en) ändern könnten, oder mache ich da grade einen grundlegenden Denkfehler?

      nein, machst du nicht. Es hat allerdings nur relativ wenig mit der Serverkonfiguration zu tun, sonfern mehr mit dem Grad der Beherrschung von PERL

      Und was den Neustart des kleinen Indianer anbelangt, naja zumindest bei uns unter FreeBSD funktioniert auch das "touch httpd.conf" ganz gut.

      wow, Brüderle, du fährst FreeBSD???????????????????????????????

      ('tschuldigung, wenn ich FreeBSD schreibe, fängt unter WinXP immer meine Fragezeichentaste an zu klemmen)

      Grüße aus (ach, ist doch egal, aber ich glaube ich bin gradein userland)

      Christoph S.

      1. Hallo Christoph,

        nana sind wir grade etwas unterschwellig gereizt ;-) (Nicht übel nehmen - bis zum Ende lesen *g*)

        und ich behaupte, daß das erstens nicht gefragt und zweitens nicht möglich ist. Wie soll ein "user" denn auf dem Server was in die httpd.conf eintragen können?

        Von user war ja nicht die Rede, aber "Jede Änderung der Domaindaten, jeder Neukunde, usw.... das muss ja in diese httpd.conf rein."

        Klingt mir arg danach, daß er alle paar Minuten Neueinträge vornehmen möchte/muß/soll - warum auch immer.

        http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf08.htm#a1

        Zugegeben, war ich zu faul rauszusuchen ...

        Nicht zwingend korrekte Aussage. Wenn du eine externe Textdatei  -  egal, ob sie nun vhosts.conf oder mister_president.all heißt  -  in der httpd.conf per "include" einbindest, ist das Teil fortan Bestandteil der httpd.conf, und wenn darin was steht, was einen "Error" hervorruft", sagt der Apache insgesamt, daß er dich nicht leiden kann und startet erst gar nicht.

        Meine Aussage lautete ja, daß er dann schon mal an der _eigentlichen_ httpd.conf nix versauen kann, klar wenn er in der vhosts.conf Mist schreibt ... Pech

        oh, ganz ausgezeichnete Spinnerei! Das funktioniert tasächlich

        die Auswirkung auf die "Serverlast" ist von weit mehr Faktoren abhängig. Es kann bei einem solchen Weg enorme Steigerungen geben, es kann aber auch  -  gar nix passieren

        Das wäre tatsächlich eine praktikable Möglichkeit (vorausgesetzt alles ist syntaktisch korrekt)?

        nein, machst du nicht. Es hat allerdings nur relativ wenig mit der Serverkonfiguration zu tun, sonfern mehr mit dem Grad der Beherrschung von PERL

        danke ;-)

        wow, Brüderle, du fährst FreeBSD???????????????????????????????

        Nana, die schwäbische Verniedlichungsform von einem Berliner? Ja wir fahren FreeBSD, allerdings nur auf dem Server und in der Administration stecke ich noch arg in den Kinderschuhen.

        Grüße aus (ach, ist doch egal, aber ich glaube ich bin gradein userland)

        Na dann grüße ich auch mal aus dem userland ;-) - userland ist überall - Sektion Neckartal

        der_bernd

  3. use Mosche;

    Wenn ich deine Frage richtig verstehe, hast du das Problem,  dass deine Virtual Host Einträge oft geändert werden und du Probleme mit der Aktualisierung der httpd.conf hast.

    Wie kann ich diesen ganzen VHOST Käse über eine MySQL Datenbank regeln?

    Oder gibt es da eine andere Möglichkeit die ich übersah??
    Im Endeffekt muss es ganz glatt über ein Script laufen können ohne irgendeine Gefahr.

    1. Du solltest deine Virtual Host Einträge, wie bereits vorgeschlagen, in eine extra Datei auslagern.

    2. Du kannst über ein Script, welches die Neueinträge in die httpd.conf (bzw. die neue Datei) eintragen soll, die enstprechenden Daten ruhig in eine MySQL Datenbank schreiben.

    3. Du kannst per Cron durchaus alle halbe Stunde oder so die Einträge in der DB abrufen, die vhosts.conf (oder so) entsprechend editieren, die Neueinträge in der DB löschen und dann den Apache neu starten. Das ist alles ein geringer Aufwand.

    Was allerdings auch möglich ist, ein Apache Modul zu schreiben, welches statt der VirtualHost Sektion in der Datenbank nachschaut - ist allerdings komplizierter einzurichten und quasi kompletter Overkill...

    use Tschoe qw(Matti);

  4. Hallo,

    Wie kann ich diesen ganzen VHOST Käse über eine MySQL Datenbank regeln?

    Oder gibt es da eine andere Möglichkeit die ich übersah??
    Im Endeffekt muss es ganz glatt über ein Script laufen können ohne irgendeine Gefahr.

    In eine MySQL-Datenbank kann man es nicht auslagern (außer wenn man ein eigenes Modul schreibt), aber vielleicht hilft http://httpd.apache.org/docs/vhosts/mass.html weiter? (geht für Apache 2.0 genauso wie für 1.3) Dann müsste ein Script nur noch den DNS-Eintrag und das entsprechende Verzeichnis erstellen ...

    Grüße,

    Christian

  5. Hi Aqua,

    also zunächst einmal glaube auch ich Dein Problem nicht wirklich verstanden zu haben.

    Was ist denn so schlimm daran, daß die httpd.conf "ständig" geändert werden muß? Das macht doch eh nur ein einziger Administrator (nicht etwa ein Benutzer!), und der wird sich schon mit sich selbst synchronisieren können.

    eingetragen als VHOST
    Jede änderung der Domaindaten, jeder Neukunde, usw....
    das muss ja in diese httpd.conf rein.

    Es gibt in der Apache-Konfiguration "include"-Anweisungen.

    Und wie wir in
      http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf08.htm

    gelernt haben, kann eine solche Include-Anweisung nicht nur auf eine Datei, sondern sogar auf ein Verzeichnis zeigen.
    Du kannst also jedem Virtual Host eine eigene Datei geben und sämtliche Dateien mit einer einzigen Include-Anweisung einbinden. (Wundere Dich allerdings nicht, falls dann das Starten des Apache ein bißchen länger dauert ...)

    Finde ich aber nicht gut, weil ich ja die Kopie
    genauso zerschiessen kann (Filelocking)

    Kannst Du bitte erklären, wie Du Dir eine solche Datei "zerschießen" kannst?

    Und daß für eine solche lebenswichtiger Datei natürlich ein Stapel Sicherungsversionen (sowohl auf Festplatte als auch auf peripheren Medien) erforderlich ist, sollte Dir ja wohl klar sein.
    Wahrscheinlich würde ich eine solche Datei gleich mit CVS behandeln.

    Wie kann ich diesen ganzen VHOST Käse über eine
    MySQL Datenbank regeln?

    Gar nicht - wozu auch?

    Oder gibt es da eine andere Möglichkeit die ich
    übersah??

    Beschreibe Dein Problem so, daß irgendjemand es verstehen kann ...

    Im Endeffekt muss es ganz glatt über ein Script
    laufen können ohne irgendeine Gefahr.

    Wieso das? Wer braucht denn einen Zugang über ein Skript, und wozu? Willst Du Deinen Kundenserver etwa via CGI übers Netz administrieren? Und was machst Du, wenn Du einen Syntaxfehler rein gemacht hast und der Apache sich nicht mehr starten läßt? Dann aber gute Nacht ...

    Viele Grüße
          Michael