El servidor Apache no se inicia automáticamente

11

Instalé Apache durante mucho tiempo como parte de la configuración del entorno de desarrollo en mi computadora portátil.

Sin embargo, desde que lo detuve hace unos meses, ya no se inicia automáticamente en el arranque. Tengo este problema en mi computadora portátil en casa Y en mi computadora portátil en el trabajo.

En ambos casos, instalé Apache en Ubuntu 10.10 hace algunos meses, lo usé durante varias semanas sin problemas, pero un día lo detuve y ahora ya no se inicia automáticamente. Intenté ejecutar la actualización rc manualmente, pero me dijeron que el script de inicio ya está en uso.

Sin embargo, comenzar / reiniciarlo manualmente con

sudo service apache2 start/restart

funciona bien. En ambos casos, lo dejé hasta después de la actualización a 11.04, porque esperaba que la nueva versión lo resolviera. ¡Pero no lo es! Estaría agradecido si alguien me puede decir cómo hacer que Apache se inicie automáticamente una vez más.

Carsten Agger
fuente

Respuestas:

10

Intenta correr

update-rc.d apache2 enable [list of run levels]

como raíz

Te puede interesar leer

man update-rc.d
encender
fuente
1
Muchas gracias, ejecuté el comando (sin una lista de niveles de ejecución, solo los valores predeterminados), y parece funcionar. ¿Sabes por qué pareció dejar de funcionar? No jugué con los guiones de inicio, creo que detuve a Apache desde la línea de comandos, pero no tenía intención de detenerlo permanentemente . :-)
Carsten Agger
No tengo ninguna opinión por qué dejó de funcionar :) Tal vez después de la actualización, algo comience a funcionar incorrectamente.
ignar
Gracias, pero no ayuda. No importa cómo llame a update-rc.d apache2 enable, apache deja de ejecutarse automáticamente. Siempre tengo que iniciarlo manualmente. Parece que no hay problemas reales, ya que siempre comienza correctamente cuando lo hago manualmente.
Carsten Agger
9

Estoy agregando esta respuesta en función de los problemas recientes que encontré con los mismos síntomas.

Primero algunos datos de fondo:

  • Ubuntu usa scripts en la /etc/init.d/carpeta para iniciar / detener servicios.
  • Ubuntu utiliza enlaces simbólicos a esos /etc/init.d/scripts, almacenados en las /etc/rc#.d/carpetas, para iniciar / detener servicios basados ​​en el "nivel de ejecución".
  • Los enlaces simbólicos que comienzan con una "S" indican que el servicio debe iniciarse.
  • Los enlaces simbólicos que comienzan con una "K" indican que el servicio debe detenerse (desactivarse).
  • El /etc/rc1.d/nivel de ejecución 1 ejecuta las secuencias de comandos enlazadas , el nivel de ejecución 2 usa /etc/rc2.d/, etc.
  • El nivel de ejecución predeterminado para Ubuntu es 2.
  • La instalación de Apache se ejecuta esencialmente, lo sudo update-rc.d apache2 defaultsque crea los enlaces simbólicos apropiados en las /etc/rc#.d/carpetas.

Entonces, parece que en mi servidor se ejecutó algo, o alguien, sudo update-rc.d apache2 disableque eliminó todos los enlaces simbólicos "S" y los reemplazó por enlaces simbólicos "K". Así matando, o simplemente no comenzando, Apache al inicializar cualquiera de los niveles de ejecución.

Mi solución fue solo volver a habilitar Apache:

sudo update-rc.d apache2 enable

Ahora Apache se inicia / detiene como se esperaba al iniciar o cambiar los niveles de ejecución.

NÓTESE BIEN:

Vale la pena señalar que simplemente ejecutar de sudo update-rc.d apache2 defaultsnuevo es insuficiente porque ve que existen enlaces simbólicos y considera que son lo que se desea. Solo responde con:

System start/stop links for /etc/init.d/apache2 already exist.
Karl Wilbur
fuente
1
¡Gracias! Esto fue muy valioso para solucionar problemas de mi configuración.
reor
1
Tengo este problema, pero esta solución sorprendentemente no funcionó. Cuando lo ejecuto sudo update-rc.d apache2 enable defaults, elimina lo que tengo y luego lo vuelve a colocar. Tengo K09apache2en rc0, 1 y 6, y tengo S91apache2en rc2, rc3, rc4, rc5. service apache2 startfunciona bien, pero tengo que hacerlo después de cada reinicio ya que no se iniciará automáticamente. mysql, por otro lado, siempre comienza bien.
Buttle Butkus
1
Esos se ven bien. Es posible que desee abrir una nueva pregunta con los detalles de su problema específico y asegúrese de incluir líneas relevantes de su /var/log/syslogy /var/log/apache2/error.log. Envíame un mensaje con el enlace a la pregunta y veré si puedo ayudarte.
Karl Wilbur
3

En este caso, descubrí por qué Apache no comenzaría. No pude encontrar un rastro de esto en los registros de inicio, solo en el resultado impreso en la pantalla en el arranque.

Pero aquí tienes: la última línea del script /etc/apache2/apache2.conffalló.

¿Por qué?

Dice:

Include sites-enabled/

Sin embargo, dos de los sitios que he configurado se encuentran en mi propio directorio de inicio, ¡que está encriptado!

Entonces, en el arranque (durante el inicio de Apache) estos sitios no existen, y Apache falla y se niega a ejecutarse.

¿Solución?

He creado un pequeño script llamado "disable_sites" y un enlace simbólico en /etc/rc0.dy /etc/rc6.d(apagado y reinicio):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

También hice un script para volver a habilitar los sitios cada vez que inicio sesión y lo agregué como un programa de inicio en la Configuración del sistema. ¡Así que ahora funciona!

Entonces, supongo que la lección aquí es que cuando Apache no se carga inexplicablemente durante el arranque y no puede encontrar ningún error en los registros o al iniciar el servidor manualmente, verifique si todos los directorios que necesita están disponibles. Esto probablemente también podría resolverse de alguna otra manera.

Carsten Agger
fuente
Me sorprende que no haya encontrado ningún error en los registros. En el pasado descubrí que algunos errores de inicio de Apache no estaban en el archivo de registro que esperaba, sino en un archivo de registro para uno de mis hosts virtuales. ¿Podría este ser el caso?
Marius Gedminas
apachectl configtestle habría notificado sobre la falta de permisos para acceder a los archivos, mientras se ejecuta como daemon.
Anuga
1

Para otros que buscan (buscar en Google) este problema, verifique que si ejecuta:

chkconfig |grep httpd

usted obtiene

httpd 0: apagado 1: apagado 2: encendido 3: encendido 4: encendido 5: encendido 6: apagado

de lo contrario hacer:

chkconfig httpd on

(lo siento en ubuntu chkconfig equivalente es update-rc.d ¿ves la alternativa Chkconfig para Ubuntu Server? )

dfliess
fuente
0

Tuve el mismo problema y estoy ejecutando Ubuntu 14 en una configuración local de Vagrant. Eliminé el /etc/apache2/sites-enableddirectorio y agregué un enlace a mi directorio de inicio, que por supuesto está montado en mi disco local de acuerdo con las configuraciones de Vagrant.

Resulta que apache no estaba viendo el directorio porque el recurso aún no estaba montado. Reescribí mi disposición en Vagrant para simplemente copiar el sites-enableddirectorio en lugar de agregar un enlace simbólico.

También hice sudo update-rc.d apache2 enablelo sugerido por Karl Wilburpara asegurarme de que apache init estaba habilitado.

usuario288900
fuente