Ich möchte Apache unter Ubuntu 10.04 ausführen und das nette Supervision-Zeug in Upstart verwenden (ich spreche nicht nur über das Apache-Init-Skript, sondern über die ordnungsgemäße Service-Supervision a la Daemontools - das heißt, Apache neu starten, wenn es abstirbt, Dinge so wie das).
Hat jemand eine laufende Upstart-Konfiguration für die Überwachung von Apache auf Ubuntu 10.04?
Die Googles haben mir nicht geholfen, aber es könnte sein, dass mein google-fu schwach ist.
Antworten:
Woooo!
Ich habe meine eigene Version geschrieben, die ziemlich gut funktioniert - mit einigem Hacken und Verwenden von conf-Dateien
-D NO_DETACH
.Als erstes musste ich Satz
User
,Group
undPidFile
in/etc/apache2/apache2.conf
manuell, statt sie kommen aus/etc/apache2/envvars
. Ich konnte keine Möglichkeit finden, diese Vars ordnungsgemäß zu exportieren (ich habe beides versuchtenv
und esexport
gemäß http://manpages.ubuntu.com/manpages/lucid/man5/init.5.html versucht , aber nichts Gutes).Dann ist das meine Arbeit
/etc/init/apache2.conf
:Ich kann
start|stop|status|reload apache2
bedeutungsvolle Ergebnisse erzielen; Wenn ichkill -9
den Master-Apache-Prozess durchführe, wird er ziemlich sofort neu erzeugt und startet und stoppt beim Booten wie erwartet. Es funktioniert also ziemlich gut, denke ich.Es gab Dinge, die ich versucht habe und die ich nicht zum Arbeiten bringen konnte.
-D NO_DETACH
, in Verbindung mit:Der Dienst konnte nicht gestartet werden.
/etc/apache2/envvars
zum Auffüllen der${APACHE_*}
Variablen zu verwenden:Das konnte nicht gestartet werden und verursachte einen Fehler
apache2: bad user name ${APACHE_RUN_USER}
.Versuchte Konsolenausgabe und Konsolenstandardoptionen; Zu diesem Zeitpunkt habe ich wirklich nur versucht, aussagekräftige Fehlermeldungen zu erhalten. Es schien keinen Unterschied zu machen.
console output
Dies war nützlich zum Debuggen von Apache-Nachrichten:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
Dies war ein weiterer Versuch, dies nicht zu ändern
/etc/apache2/apache2.conf
:exec APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data APACHE_PID_FILE=/var/run/apache2.pid /usr/sbin/apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
quelle
Nun, dieses Skript hat bei mir funktioniert:
quelle
Ich bin auch auf dieses Problem gestoßen, habe jedoch einen anderen Ansatz gewählt. Am einfachsten erhalten Sie die env-Variablen, indem Sie den Befehl source verwenden und auf die Datei apache envvars verweisen. Anschließend können Sie apache mit den Optionen -D FOREGROUND ausführen
Im Grunde brauchen Sie ein Skript, das so aussieht (meins befindet sich in /etc/apache2/apache2_foreground.sh):
Dann machen Sie es ausführbar und weisen den Supervisor auf seinen Standort. Sie müssen auch das Stoppsignal 6 verwenden
In den beiden ersten Zeilen des Skripts wird die Prozessgruppen-ID des Skripts abgefangen und ein Trap festgelegt, der auf Signalen ausgeführt wird, die an den Prozess übergeben werden. Dieser Trap führt einen Kill mit einer negativen Prozess-ID des übergeordneten Elements aus, das alle Apache2-Prozesse (das Skript) ausführt selbst) - Töten mit einer negativen PID bedeutet, alle Kinder eines solchen Prozesses zu töten (also in diesem Fall alle Apache2-Prozesse), ohne dass ich den Supervisor nicht dazu bringen könnte, die Apache2-Prozesse zu töten
Das Stoppsignal 6 wird verwendet, da ich kein anderes Signal finden konnte, das die Falle auslösen könnte, die 9 nicht abgefangen werden kann und 2 und 3 nichts tun (das Skript wird nicht getötet).
Danach sollte es reibungslos funktionieren, ohne Änderungen an der Apache2-Konfiguration
quelle
Einige Posts von Scott James Remnant zum Thema, von denen ich hoffe, dass sie Ihnen helfen können:
quelle
Oh ja, in der Regel lautet die Antwort "Schreiben Sie Ihre eigenen". Mein entsprechend typischer Vorschlag wäre, die Seite " Erste Schritte - Upstart" zu konsultieren und ... abzutippen.
Ich hoffe, dass jemand, der sich mit dem Thema besser auskennt als ich, ein funktionierendes Upstart-Skript entwickelt.
quelle
Ich würde einen Ansatz verwenden, der dem von Ben Williams sehr ähnlich ist, aber
-D FOREGROUND
stattdessen-D NO_DETACH
.quelle