¿Cómo hago para que Apache se inicie en el arranque en Linux?

32

He instalado Apache 2 desde la fuente en mi caja de Linux. apachectl -k startfunciona bien, pero ¿cómo hago para que Apache se inicie en el momento del arranque?

Esto está en una distribución de Red Hat Linux:

Linux <nombre de host> 2.6.9-55.ELsmp # 1 SMP vie 20 abr 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux

afligirse
fuente
1
Cual distribucion
ayaz 01 de

Respuestas:

46

Desea agregar su script de inicio al nivel de ejecución apropiado. El script de inicio es típicamente /etc/init.d/apache2donde puede ejecutarlo manualmente /etc/init.d/apache2 startpara iniciarlo.

En Gentoo escribirías:

rc-update add apache2 default

En Ubuntu / Debian esto funciona:

sudo update-rc.d apache2 defaults

En Red Hat Linux / Fedora / CentOS, un pequeño google muestra esto:

chkconfig --add httpd

Varía un poco de una distribución a otra, pero la idea suele ser la misma. Básicamente, todos estos comandos hacen un enlace simbólico desde /etc/init.d/la carpeta de nivel de ejecución apropiada en /etc/.

Evan Teran
fuente
1
Gracias por la respuesta me hizo apuntar en la dirección correcta. Resumí lo que hice a continuación.
llore
Si ha creado Apache desde la fuente, no habrá ningún script de inicio, la parte que cubrió es solo la configuración como servicio una vez que tiene un script de inicio configurado correctamente en /etc/init.d/ y eso es precisamente lo que no es t muy bien documentado para apache 2
Jaime Hablutzel
26

Esto es lo que finalmente funcionó para mí. Esto supone que usted es el usuario root.

  1. vi /etc/init.d/apache2 (edítelo como se muestra a continuación)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig --add apache2
  4. chkconfig --list apache2 (para verificar que funcionó)

Contenido de /etc/init.d/apache2:

#! / bin / bash
# #
# apache2 Script de inicio para el servidor HTTP Apache
# #
# chkconfig: 3 85 15
# descripción: Apache es un servidor de la World Wide Web. Se usa para servir
# Archivos HTML y CGI.

/ usr / local / apache2 / bin / apachectl $ @

Puede obtener el nivel de ejecución ejecutando / sbin / runlevel, que en mi caso era 3. Y, por supuesto, debe llamar a su versión de apachectl, que en mi caso era / usr / local / apache2 / bin / apachectl

Gracias a lo siguiente:

afligirse
fuente
Realmente odio aceptar mi propia respuesta, pero es la que funcionó.
llore
¡Esto era exactamente lo que necesitaba! (tuvo que recompilar e instalar un Apache 2.2.27 en / usr / local / apache2). Muchas gracias.
Christophe Muller
¿Esta línea "/ usr / local / apache2 / bin / apachectl $ @" realmente inicia httpd? ¿necesita emitir: sudo chkconfig apache2 start o sudo chkconfig apache2 on?
olala
8

Compruebe si tiene el httpdscript de inicio en el /etc/rc.ddirectorio. En caso afirmativo, puede ejecutar el siguiente comando que permite que el servicio httpd se inicie en el momento del arranque.

chkconfig --level 345 httpd on

Si no tiene el script de inicio, simplemente agregue el /etc/rc.localarchivo con apachectl -k start(el comando para iniciar Apache).

Viky
fuente
4

Como ha instalado por fuente, no habrá una secuencia de comandos de inicio instalada en el directorio /etc/init.d/. El binario apachectl está diseñado para ser compatible con las opciones estándar de script de inicio, por lo que es posible que pueda simplemente vincularlo en lugar de crear un script de envoltura (por ejemplo, ln -s / usr / local / sbin / apachectl /etc/init.d/ apache)

Luego puede seguir los procedimientos descritos en las otras publicaciones para agregar enlaces para invocar el guión de inicio en los niveles de ejecución correctos.

Cita: Documentación de Apache http://httpd.apache.org/docs/2.2/invoking.html

Comenzando en el tiempo de arranque

Si desea que su servidor continúe ejecutándose después de reiniciar el sistema, debe agregar una llamada a apachectl a los archivos de inicio de su sistema (generalmente rc.local o un archivo en un directorio rc.N). Esto iniciará Apache como root. Antes de hacer esto, asegúrese de que su servidor esté configurado correctamente para las restricciones de seguridad y acceso.

El script apachectl está diseñado para actuar como un script de inicio SysV estándar; Puede tomar los argumentos iniciar, reiniciar y detener y traducirlos en las señales apropiadas para httpd. Por lo tanto, a menudo puede simplemente vincular apachectl en el directorio init apropiado. Pero asegúrese de verificar los requisitos exactos de su sistema.

Russell Heilling
fuente
Gracias por la respuesta me hizo apuntar en la dirección correcta. Resumí lo que hice a continuación.
llore
1

chkconfig --levels 345 httpd

iniciará httpd en runlevels 3,4,5.

chkconfig --list mostrará todos los servicios y sus niveles de ejecución de inicio actuales. 345 es típico para un servicio de red.

elint
fuente
1
Esto genera el siguiente error conmigo en CentOS 6: "solo se puede especificar un nivel de ejecución para una consulta chkconfig". Sin embargo, agregar "on" al final del comando ("chkconfig --levels 345 httpd on") funcionó de maravilla.
akame
1

En Red Hat Linux hay una utilidad útil llamada ntsysv que le permite seleccionar qué servicios desea iniciar en su nivel de ejecución actual. También debe especificar qué nivel de ejecución desea editar cuando inicie la utilidad --level.

Desplácese hacia abajo hasta httpd y presione Spacepara que aparezca una estrella en el cuadro de la izquierda. Entonces Taba OK. Presione Returnpara guardar y regresar al shell.

Descubrí que se instala casi por defecto. Nunca he estado en una posición donde no estaba instalado.

Sin embargo, primero deberá instalar el servicio copiando el script del servicio en /etc/init.d y luego ejecutando:

chkconfig --add <script name>
Garry Harthill
fuente
1

Depende de tu sabor de Linux. Suponiendo que se haya creado el archivo /etc/init.d/apache2, intente:

chkconfig -a apache2

o

update-rc.d apache2 defaults

Uno de ellos debería funcionar.

Neobyte
fuente
1
La respuesta chkconfig es para sistemas similares a Red-Hat (es decir, CentOS) y update-rc.d es para sistemas similares a Debian (es decir, Ubuntu)
Kyle Brandt