Quiero ejecutar apache en Ubuntu 10.04, y usar las buenas funciones de supervisión en el inicio (no solo estoy hablando del script de inicio de apache, sino de la supervisión de servicio adecuada a la daemontools, es decir, reiniciar apache cuando muere, cosas como eso).
¿Alguien tiene una configuración de arranque para supervisar apache en ubuntu 10.04?
Los Google no me han ayudado, pero podría ser que mi google-fu es débil.
Respuestas:
Woooo!
He escrito mi propia versión que está funcionando bastante bien, con algo de pirateo y uso de archivos conf
-D NO_DETACH
.En primer lugar, tuve que conjunto
User
,Group
yPidFile
en/etc/apache2/apache2.conf
forma manual, en lugar de tenerlas que viene de/etc/apache2/envvars
. No pude encontrar una manera de exportar esos vars correctamente (probé ambosenv
yexport
según http://manpages.ubuntu.com/manpages/lucid/man5/init.5.html , pero no es bueno).Entonces, este es mi trabajo
/etc/init/apache2.conf
:Puedo hacer
start|stop|status|reload apache2
y obtener resultados significativos; Sikill -9
el proceso de Apache maestro, se reaparece casi inmediatamente, y comienza y se detiene en el arranque como se esperaba. Así que creo que funciona bastante bien.Intenté cosas que no pude conseguir trabajando.
-D NO_DETACH
, junto con:Eso no pudo iniciar el servicio.
/etc/apache2/envvars
para poblar las${APACHE_*}
variables:Eso no pudo comenzar y produjo un error al respecto
apache2: bad user name ${APACHE_RUN_USER}
.Probado salida de consola y opciones predeterminadas de consola; en este punto, realmente estaba fallando sobre tratar de obtener mensajes de error significativos. Parecía no hacer la diferencia.
console output
Esto fue útil para depurar mensajes de apache:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
Este fue otro intento de no modificar
/etc/apache2/apache2.conf
que falló: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
fuente
Bueno, este script funcionó para mí:
fuente
También me encontré con este problema, sin embargo, utilicé otro enfoque. La forma más fácil de obtener las variables env es usar el comando fuente y apuntarlo al archivo apache envvars, luego puede ejecutar apache con las opciones -D FOREGROUND
así que básicamente necesitas un script que se vea así (el mío está en /etc/apache2/apache2_foreground.sh):
Luego lo hace ejecutable y señala al supervisor a su ubicación, también debe usar la señal de detención 6
Las dos primeras líneas del script capturan el ID del grupo de procesos del script y establecen una trampa que se ejecuta en las señales que se transmiten al proceso; esta trampa ejecuta un kill con un ID de proceso negativo del padre que ejecuta todos los procesos apache2 (el script en sí): matar con un PID negativo significa matar a todos los hijos de dicho proceso también (por lo que en este caso todos los procesos apache2), sin eso no pude hacer que el supervisor matara los procesos apache2
La señal de stop 6 se usa porque no pude encontrar ninguna otra señal que pudiera invocar la trampa, el 9 no se puede atrapar y 2 y 3 no hacen nada (el guión no se elimina)
después de eso debería funcionar sin problemas, sin modificaciones en la configuración de apache2
fuente
Un par de publicaciones de Scott James Remnant sobre el tema que espero puedan ayudarte:
fuente
Ah, sí, por lo general, la respuesta será "escriba la suya", por lo que mi sugerencia, en consecuencia, sería consultar la página de inicio - inicio y ... escribir.
Espero que alguien con más conocimientos sobre el tema que yo presente un script de arranque.
fuente
Usaría un enfoque muy parecido al de Ben Williams pero con en
-D FOREGROUND
lugar de-D NO_DETACH
.fuente