Schrift
[thread]9957[/thread]

Erneutes Laden eines Moduls erzwingen (Seite 2)

Leser: 1


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
pktm
 2007-08-05 18:03
#97558 #97558
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
ups. falscher Beitrag...
http://www.intergastro-service.de (mein erstes CMS :) )
ptk
 2007-08-05 18:40
#97564 #97564
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Der Originalposter schreibt zwar, dass die Module in einem Perlskript (Apache::Registry?) eingebunden sind, aber er schreibt nicht, ob die Module schon im httpd.conf referenziert wurden. Wenn sie schon bereits in httpd.conf referenziert wurden (was sinnvoll ist, wenn man beispielsweise frühzeitig Kompilierfehler erkennen will oder davon profitieren kann, dass Module nur im Haupt-Apache-Prozess geladen und kompiliert werden müssen und nicht auch noch bei jedem Child), dann wird eben bei einer Moduländerung nichts mehr nachgeladen, weil ein "apachectl graceful" sich nur auf die Childs auswirkt und nicht auf den Haupt-Apache-Prozess. Naja, nicht ganz, auch bei einem "apachectl graceful" wird auch das httpd.conf neu eingelesen. Aber bereits geladene Module werden nicht noch einmal geladen.

Eine "apachectl graceful" schickt übrigens gar keine Signale an die Apache-Childs, sondern der Haupt-Apache-Prozess wartet so lange, bis ein Child mit einem Request fertig ist, beendet diesen und startet ggfs. einen neuen Child-Prozess. Bei "apachectl restart" wird dagegen ein SIGTERM an die Apache-Childs geschickt. Der Standard-Signalhandler sorgt dafür, dass diese Childs sofort beendet werden und die Benutzer wahrscheinlich einen 500er oder ähnliches sehen.
brela
 2007-08-06 20:28
#97667 #97667
User since
2007-08-03
3 Artikel
BenutzerIn
[default_avatar]
Danke für die ganzen Antworten und das Interesse an meiner Frage.
Ich werde versuchen noch genauer zu beschreiben wie die Serverconfig ist. Aber ich habe sie nicht 100% verstanden. Hätte ich das, würde ich mir meine Frage sicherlich selbst beantworten können ;)

Auf dem Server ist ein Live-System auf Port 80 und ein Test-System auf Port 8000 konfiguriert (gleiche IP). Alle Scripte/Module habe ich doppelt für beide Systeme, so dass der Live-Betrieb nicht gestört wird, wenn im Test-System rumprobiert wird.

Theoretisch. Der Reload des Apache (/usr/sbin/apache2ctl restart) wirkt sich auf beide Syteme aus. Deswegen möchte ich den Reload verhindern und erreichen, dass meine Moduländerungen ohne diese Reload wirksam werden.

Die /etc/apache2/httpd.conf ist leer. Aber ich habe zwei Files im /etc/apache2/sites-available, die jeweils für beide VirtualHosts Informationen enthalten, wo zb. die Perlmodule abgelegt sind und welche geladen werden sollen , z.B. PerlSetVar ReloadModules Abc:Def.
So wie es aussieht ist dort konfiguriert, dass die Module neu geladen werden. Aber es funktioniert halt nicht richtig.

So wie ich es aus Euren Antworten herauslese ist es nicht möglich ein Modul neu einzulesen, wenn es woanders referenziert ist.

Kann ich dann /etc/apache2/sites-available/virtualhost_auf_port8000 neu einlesen ohne Reload des Apache?
ptk
 2007-08-06 23:04
#97677 #97677
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Handelt es sich um einen Apache, der auf beiden Ports lauscht? Dann solltest du lieber zwei getrennte Apaches verwenden.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2007-08-03 20:49.