Je veux exécuter apache sur Ubuntu 10.04, et utiliser les trucs sympas de supervision dans upstart (je ne parle pas seulement du script d'initialisation apache, mais d'une supervision de service appropriée à la daemontools - c'est-à-dire, redémarrer apache quand il meurt, des choses comme ça).
Quelqu'un a-t-il une configuration en cours d'exécution pour superviser Apache sur Ubuntu 10.04?
Les googles ne m'ont pas aidé, mais il se peut que mon google-fu soit faible.
Réponses:
Woooo!
J'ai écrit ma propre version qui fonctionne à peu près - avec un piratage de fichiers conf et une utilisation
-D NO_DETACH
.Tout d' abord, je dû mettre
User
,Group
etPidFile
à la/etc/apache2/apache2.conf
main, plutôt que de les venir à partir/etc/apache2/envvars
. Je n'ai pas pu trouver un moyen d'exporter correctement ces vars (j'ai essayé les deuxenv
etexport
selon http://manpages.ubuntu.com/manpages/lucid/man5/init.5.html , mais pas bon).Ensuite, voici mon travail
/etc/init/apache2.conf
:Je peux faire
start|stop|status|reload apache2
et obtenir des résultats significatifs; si je suiskill -9
le processus maître apache, il est réapparu à peu près immédiatement, et il démarre et s'arrête au démarrage comme prévu. Donc ça marche assez bien, je pense.Il y a des choses que j'ai essayées et que je n'ai pas pu obtenir.
-D NO_DETACH
, conjointement avec:Cela n'a pas pu démarrer le service.
/etc/apache2/envvars
pour remplir les${APACHE_*}
variables:Cela n'a pas pu démarrer et a généré une erreur
apache2: bad user name ${APACHE_RUN_USER}
.Sortie de console éprouvée et options par défaut de la console; à ce stade, j'étais vraiment en train d'essayer d'obtenir des messages d'erreur significatifs. Semblait ne faire aucune différence.
console output
Cela a été utile pour déboguer les messages Apache:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
C'était une autre tentative de ne pas modifier
/etc/apache2/apache2.conf
qui a échoué: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
la source
Eh bien, ce script a fonctionné pour moi:
la source
J'ai également rencontré ce problème, mais j'ai utilisé une autre approche. La façon la plus simple d'obtenir les variables env est d'utiliser la commande source et de la pointer vers le fichier envvars apache, puis vous pouvez exécuter apache avec les options -D FOREGROUND
Donc, fondamentalement, vous avez besoin d'un script qui ressemble à ceci (le mien est dans /etc/apache2/apache2_foreground.sh):
Ensuite, vous le rendez exécutable et pointez le superviseur vers son emplacement, vous devez également utiliser le signal d'arrêt 6
Les deux premières lignes du script interceptent l'ID de groupe de processus du script et définissent une interruption qui s'exécute sur les signaux transmis au processus - cette interruption exécute un kill avec un ID de processus négatif du parent qui exécute tous les processus apache2 (le script lui-même) - tuer avec un PID négatif signifie également tuer tous les enfants d'un tel processus (donc dans ce cas tous les processus apache2), sans cela je ne pouvais pas faire superviser par le superviseur les processus apache2
Le signal d'arrêt 6 est utilisé car je n'ai pas pu trouver d'autre signal qui pourrait invoquer le piège, le 9 ne peut pas être attrapé et 2 et 3 ne font rien (le script n'est pas tué)
après cela, il devrait fonctionner correctement, sans aucune modification de la configuration d'apache2.
la source
Quelques articles de Scott James Remnant sur le sujet qui, je l'espère, peuvent vous aider:
la source
Oh, oui, en général, la réponse sera «écrivez la vôtre», donc ma suggestion typique serait de consulter la page Mise en route - upstart et… de taper.
J'espère que quelqu'un de mieux informé sur la question que moi trouvera un script de démarrage efficace.
la source
J'utiliserais une approche similaire à celle de Ben Williams mais avec
-D FOREGROUND
au lieu de-D NO_DETACH
.la source