Apache-Neustart absichern gegen Fehler
Posted: 2007-01-25 13:06
Hallo,
ich hab folgendes Problem und hoffe, dass von euch jemand eine Idee hierzu hat.
Die Umgebung sieht wie folgt aus:
Apache 2.0, PHP 5 mittels Suphp eingebunden, Verzeichnisstruktur: /www/$benutzername/$domain/htdocs bzw. /www/$benutzername/$domain/tmp/
Für die beiden Ordner htdocs und tmp hat jeweils der Benutzer ein Schreib- und Leserecht.
Das Problem ist relativ einfach:
Nachts werden mittels Logrotate die Webserver-Logfiles "bearbeitet" und mittels Script vorher statistisch ausgewertet. Nach dem rotieren und packen der Logfiles wird der Apache mittels "/etc/init.d/apache2 graceful" neu gestartet.
Dies geht natürlich jetzt solange gut, solange wie jeweils der htdocs und logs-Ordner für die Vhosts existierten. Kommt jemand der Nutzer auf die Idee einer der beiden Ordner zu löschen, dann wird es tödlich.
Daher die Frage:
Hat jemand eine Idee, wie ich sicherstellen kann, dass der Apache dennoch weiter läuft?
Meine erste Idee war vorher ein apachectl -t auszuführen und zu schauen, ob es zu einer Fehlermeldung kommt. Das ganze erkennt aber nur, wenn ein htdocs-Verzeichnis fehlt. Fehlt das Logs-Verzeichnis, dann fährt der Apache hoch und beendet sich sobald etwas in das Logs-Verzeichnis geschrieben werden soll.
Eine andere Idee wäre natürlich, vor dem "graceful" einfach "blind" per mkdir die Logfiles-Verzeichnisse neu zu erzeugen. Existiert bereits das Verzeichnis -> gut, wenn nein, dann existiert es danach. Im Anschluss könnte man noch den oben genannten Test starten und man wäre sicher. Aber irgendwie wäre das doch recht unpraktikabel vom Verwaltungsaufwand her. Vielleicht aber wäre das von der Logik her am besten.
Die optimalen Lösung wäre irgendwie zu verhindern, dass entweder die beiden Ordner gelöscht werden oder den Apache zum Neustart zwingen.
Danke an alle, die sich darüber Gedanken machen. Vielleicht hat von euch einer zufällig eine Idee. :-)
ich hab folgendes Problem und hoffe, dass von euch jemand eine Idee hierzu hat.
Die Umgebung sieht wie folgt aus:
Apache 2.0, PHP 5 mittels Suphp eingebunden, Verzeichnisstruktur: /www/$benutzername/$domain/htdocs bzw. /www/$benutzername/$domain/tmp/
Für die beiden Ordner htdocs und tmp hat jeweils der Benutzer ein Schreib- und Leserecht.
Das Problem ist relativ einfach:
Nachts werden mittels Logrotate die Webserver-Logfiles "bearbeitet" und mittels Script vorher statistisch ausgewertet. Nach dem rotieren und packen der Logfiles wird der Apache mittels "/etc/init.d/apache2 graceful" neu gestartet.
Dies geht natürlich jetzt solange gut, solange wie jeweils der htdocs und logs-Ordner für die Vhosts existierten. Kommt jemand der Nutzer auf die Idee einer der beiden Ordner zu löschen, dann wird es tödlich.
Daher die Frage:
Hat jemand eine Idee, wie ich sicherstellen kann, dass der Apache dennoch weiter läuft?
Meine erste Idee war vorher ein apachectl -t auszuführen und zu schauen, ob es zu einer Fehlermeldung kommt. Das ganze erkennt aber nur, wenn ein htdocs-Verzeichnis fehlt. Fehlt das Logs-Verzeichnis, dann fährt der Apache hoch und beendet sich sobald etwas in das Logs-Verzeichnis geschrieben werden soll.
Eine andere Idee wäre natürlich, vor dem "graceful" einfach "blind" per mkdir die Logfiles-Verzeichnisse neu zu erzeugen. Existiert bereits das Verzeichnis -> gut, wenn nein, dann existiert es danach. Im Anschluss könnte man noch den oben genannten Test starten und man wäre sicher. Aber irgendwie wäre das doch recht unpraktikabel vom Verwaltungsaufwand her. Vielleicht aber wäre das von der Logik her am besten.
Die optimalen Lösung wäre irgendwie zu verhindern, dass entweder die beiden Ordner gelöscht werden oder den Apache zum Neustart zwingen.
Danke an alle, die sich darüber Gedanken machen. Vielleicht hat von euch einer zufällig eine Idee. :-)