• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Apache Config-Reload während der Laufzeit?

A

Anonymous

Gast
Hi,
ich möchte mir nen kleinen webserverdienst basteln der z.b. Webdav oder SVN-Repositorys anlegt. Dazu muss die Config von Apache erweitert werden.
Das ist nicht das Problem. Ich erstelle einfach für jeden Webdav oder SVN-Zugang einen neue Config-Datei.

Mein Problem ist jetzt: Wie stell ich's an dass Apache die neuen Configs sofort übernimmt ohne auszusetzen.

Das ganze sollte möglichst "on-the-fly" funktionieren. Quasi wenn das einrichten des Zugangs per Webinterface fertig ist sollte das ganze schon funktionieren..

Mein erster Ansatz wäre ein "force-reload" gewesen der durch php/cgi oder so getriggert wird. Alternativ ließe sich auch eine Art Serverprogramm schreiben das auf eine Socketverbindung mit passnder authentifizierung wartet und dann ein "force-reload" auslöst. Dazu müsste ich halt mit php/cgi ne Socketverbindung aufbauen...

Gibts nicht was total simples auf das ich nur noch nicht gekommen bin?

Any ideas?

Gruß
Alex
 
OP
A

Anonymous

Gast
Okay, ich hab etwas geforscht...

Tools die im inneren ähnliches machen sind unter anderem:


  • * SysCP
    * VHCS2

Diese Tools sind quasi die billigere Variante von Plesk.

Nun ja. SysCP macht den Config-Reload mittels:
Code:
/etc/init.d/apache2 reload

VHCS2 macht:

Code:
/etc/init.d/apache2 stop
sleep 5
/etc/init.d/apache2 start
sleep 5

Das mit dem Start&Stop hat jedoch den Nachteil dass der Server da komplett beendet wir dund alle gerade offenen Verbindungen gekappt werden...Also eher schlecht :-(

Das Kommando "reload" im Script /etc/init.d/apache2 macht folgendes:
Code:
apache2ctl graceful

"man apache2ctl" ergibt da folgendes:

graceful -> Gracefully restarts the Apache daemon by sending it a SIGUSR1. If the daemon is not run-
ning, it is started. This differs from a normal restart in that currently open connec-
tions are not aborted. A side effect is that old log files will not be closed immedi-
ately. This means that if used in a log rotation script, a substantial delay may be nec-
essary to ensure that the old log files are closed before processing them. This command
automatically checks the configuration files via configtest before initiating the restart
to make sure Apache doesn't die. On certain platforms that do not allow SIGUSR1 to be
used for a graceful restart, an alternative signal may be used (such as SIGWINCH).
graceful will send the right signal for your platform.

Das scheint wirklich die beste Lösung zu sein. So werden keine gerade offenen Verbindungen gekappt und der Server schmiert nicht ab falls in der Config etwas nicht stimmt.

Jetzt muss ich nur noch schauen ob ich das ganze mittels PHP oder CGI starte. Die Idee mit ner kleinen Serveranwendung ist auch nicht schlecht, aber etas zu aufwendig wenn es auch mit PHP und Co. geht.

Ist nur die Frage welches verfahren am sichersten ist ?!

Gruß
Alex
 
Oben