Hallo, Leute!
Ich habe ein Template für VirtualHost angefertigt, das mithilfe von Perl die Apache-Konfiguration von einer Datenbank erstellt.
Das Ding funktioniert wie gewünscht und ich wäre auch schon zufrieden.
Nun, wenn jemand einen neuen VirtualHost anlegt, muss er nicht nur in die Datenbank die Daten eintragen, sondern auch ein apache2ctl reload ausführen.
Hat jemand eine Idee, wie ich dieses reload automatisiere, so daß der Eintrag in der Datenbank reicht, um den VirtualHost in Betrieb zu haben?
Ich hatte schon die Idee gehabt, zwei Felder "last_changed" und "last_worked" in die Tabelle hinzuzufügen, kann aber nicht funktionieren, denn die Datenbank wird von mehreren Server benutzt (jede hat derselbe VirtualHost mit einer anderen Domain, also in der Datenbank ist nur das Host-Teil und nicht einen FQDN).
Ideen?
Danke euch! Luca Bertoncello (lucabert@lucabert.de)
Ideen http://de.wikipedia.org/wiki/File_Alteration_Monitor
Ich habe ein Template für VirtualHost angefertigt, das mithilfe von Perl die Apache-Konfiguration von einer Datenbank erstellt.
Das Ding funktioniert wie gewünscht und ich wäre auch schon zufrieden.
Nun, wenn jemand einen neuen VirtualHost anlegt, muss er nicht nur in die Datenbank die Daten eintragen, sondern auch ein apache2ctl reload ausführen.
Hat jemand eine Idee, wie ich dieses reload automatisiere, so daß der Eintrag in der Datenbank reicht, um den VirtualHost in Betrieb zu haben?
Ich hatte schon die Idee gehabt, zwei Felder "last_changed" und "last_worked"
wurde doch im filesystem schon implementiert
du kannst auch minutlich ein cron laufen lassen das prüft ob die dat in der letzten minute geändert wurde wenn ja reload apache
oder was mit inotify
habe folgense "beispiel" gefunde kannst wohl für deine Sache anpassen
#!/bin/sh while inotifywait -e modify /var/log/messages; do if tail -n1 /var/log/messages | grep httpd; then kdialog --msgbox "Apache needs love!" fi done Andreas
Grimnin Fridyson fridy_lugdd@yahoo.de schrieb:
oder was mit inotify
habe folgense "beispiel" gefunde kannst wohl für deine Sache anpassen
#!/bin/sh while inotifywait -e modify /var/log/messages; do if tail -n1 /var/log/messages | grep httpd; then kdialog --msgbox "Apache needs love!" fi done Andreas
Es ändert sich keine DATEI, sondern Einträge in der DB... Also, mit inotify kann ich nichts machen...
Danke trotzdem für deine Antwort Luca Bertoncello (lucabert@lucabert.de)
Es ändert sich keine DATEI, sondern Einträge in der DB... Also, mit inotify
kann ich nichts machen...
da hatte ich es anders verstanden
kann deine DB trigger? dann könnteste du ein programm aufrufen das auf den richtigen host den apachen reloaded
Andreas
Danke trotzdem für deine Antwort Luca Bertoncello (lucabert@lucabert.de)
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hallo zusammen, On 19.11.2012 21:13, Grimnin Fridyson wrote:
kann deine DB trigger? dann könnteste du ein programm aufrufen das auf den richtigen host den apachen reloaded
wenn $DB==MySQL/MariaDB, dann dürfte es zwar Trigger geben, aber aus dem DB-System heraus kannst Du IMO damit nicht arbeiten. Du kannst halt im Trigger auch "nur" SQL sprechen...
- -- Mit freundlichen Grüßen / With kind regards
Jan Leonhardt
IT-Dienstleistungen IT-Konsultant Administration Softwareentwicklung
Hej Luca!
On 16.11.2012 22:07, Luca Bertoncello wrote:
Hallo, Leute!
Ich habe ein Template für VirtualHost angefertigt, das mithilfe von Perl die Apache-Konfiguration von einer Datenbank erstellt.
Das Ding funktioniert wie gewünscht und ich wäre auch schon zufrieden.
Nun, wenn jemand einen neuen VirtualHost anlegt, muss er nicht nur in die Datenbank die Daten eintragen, sondern auch ein apache2ctl reload ausführen.
Verstehe ich das recht: es gibt 1 DB-Server und n Apachen?
Vorschlag sofern n nicht dreistellig oder größer ist: Es gibt eine Config-Tabelle mit einem Eintrag current_revision. Wann immer ein neuer Virtual Host in der DB vermerkt wird, wird current_revision atomar um eins inkrementiert.
Auf den Rechnern mit Apachen läuft ein cron-Skript, das im Minuten-Takt (oder welcher Takt bei dir sinnvoll ist) die current_revision von der DB abfragt und mit der running_revision (liegt in einer Textdatei auf dem betreffenden Server) vergleicht. Bei Unterschied schiebt das Skript die Generierung der httpd.conf an und SIGHUP't den Apachen.
Sicherstellen, dass das aktuell laufende Cron-Skript das einzige ist und sich nicht mit einem Verwandten von vor einer Minute überschreibt, der grad länger braucht.
Beste Grüße Fabian
lug-dd@mailman.schlittermann.de