Inicio y reinicio de Apache en Linux

Actualizado el 3 de octubre, 2016. Por BlueHosting.

Este tutorial pretende abordar conceptos teóricos sobre el arranque de Apache en sistemas Linux para luego abordar la parte práctica que puede seguir si posee un entorno web real. Se incluyen fragmentos conceptuales y prácticos sobre el inicio del demonio que controla Apache, errores comunes de arranque, cómo detener la ejecución del demonio de apache y cómo iniciar Apache automáticamente tras un reinicio del servidor.

Introducción

En las instalaciones de Apache en Linux, existe un demonio que se ejecuta continuamente en segundo plano esperando para atender las solicitudes que se le asignen. En sistemas como CentOS, RHEL o Fedora este demonio se llama httpd. En otros sistemas como Debian o Ubuntu el demonio es simplemente apache2.

Tal como lo especifica la propia documentación de Apache, si el valor Listen especificado en el archivo de configuración es el 80 predeterminado (o cualquier otro puerto por debajo de 1024), entonces es un requisito tener privilegios root para iniciar Apache, por la propia naturaleza de estos puertos. Una vez que el servidor se inicie lleve a cabo algunas actividades preliminares, se ejecutarán procesos hijos que hacen el trabajo de escuchar y contestar peticiones de los clientes. El demonio principal continúa ejecutándose bajo el usuario root, pero los procesos hijos mencionados se ejecutan con un usuario de menores privilegios. Esto es controlado por el módulo de multiprocesamiento o MPM.

Inicio, parada y reinicio de Apache

Existen varias formas de arrancar, detener y reiniciar Apache. Siga las instrucciones a continuación.

Método recomendado para cualquier distribución de Linux

Al momento de instalar Apache en su servidor, se instala un script de control que le ayudará a facilitar su gestión de Apache. Este script se llama apachectl y está hecho para que el administrador pueda controlar el funcionamiento de Apache a través de la asignación de las variables necesarias para el funcionamiento del demonio e invocando el binario del demonio de Apache. Este es el método recomendado para iniciar, reiniciar y detener la ejecución del demonio detrás de Apache.

  • Para iniciar Apache usando el script de control apachectl use:

    sudo apachectl start
    

    Lo primero que hace el demonio cuando es invocado es ubicar y leer el archivo de configuración httpd.conf. La ubicación de este archivo se establece en tiempo de compilación, pero puede especificarla en tiempo de ejecución usando el parámetro -f en la línea de comandos, por ejemplo:

    /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf
    

    Si todo resulta bien durante el inicio, podrá ver el prompt de su shell casi inmediatamente. Esto indica que el Apache se inició correctamente y se está ejecutando.

  • Para detener Apache:

    sudo apachectl stop
    
  • Para reiniciar Apache ejecute el siguiente comando:

    sudo apachectl restart
    
  • Recuerde que la necesidad de usar el prefijo sudo o ejecutar los comandos como root dependerá del puerto de escucha que utilice Apache.

Alternativa para CentOS/RHEL/Fedora

Otra opción es utilizar directamente el demonio que maneja el servicio de Apache. En el caso de estos sistemas, el demonio se llama httpd, de este modo:

  • Si desea iniciar o arrancar el demonio que controla su servidor Apache utilice:

    sudo service httpd start
    
  • Para detener la ejecución de este demonio (no tendrá acceso a su sitio web mientras el demonio esté detenido):

    sudo service httpd stop
    
  • Para reiniciar el demonio httpd:

    sudo service httpd restart
    
  • Tenga en cuenta que estos comandos alternativos inician/reinician el demonio httpd, pero no establecen las variables de entorno en /etc/sysconfig/httpd.

Alternativa para Ubuntu/Debian

En contraste, los sistemas Ubuntu/Debian llaman al demonio de apache apache2 (para versiones de Apache de 2.0 en adelante —otras versiones son ya obsoletas):

  • Si desea iniciar o arrancar Apache ejecute el siguiente comando:

    sudo service apache2 start
    
  • Para detener la ejecución de este demonio (no tendrá acceso a su sitio web mientras el demonio esté detenido):

    sudo service apache2 stop
    
  • Para reiniciar el demonio apache2:

    sudo service apache2 restart
    

Errores al iniciar Apache

En algunas ocasiones, puede que Apache no pueda iniciarse. Esto se debe generalmente a cambios incorrectos en los archivos de configuración. En muchos casos estos son simples errores sintácticos. Apache proporciona una herramienta muy útil que detecta si hay errores de este tipo y muestra el resultado dentro de la línea de comandos. El primer paso antes de revisar los registros de errores bajo el archivo error.log es descartar los errores de sintaxis en la configuración:

  1. Utilice el siguiente comando

    apache2ctl configtest
    

    También puede usar:

    apachectl -t
    

    Otra opción para sistemas CentOS/Fedora es usar:

    httpd -t
    
  2. Si la sintaxis del archivo de configuración es correcta se imprimirá un mensaje similar a:

    Syntax OK
    

Si su sintaxis es correcta, entonces puede que haya un error de conflicto en su configuración, un error de red o de otra naturaleza —es muy difícil determinarlo de antemano. Estos errores se registrarán en el log error_log y en muchos casos se mostrarán directamente en la línea de comandos. Uno de los errores más comunes es Unable to bind to Port .... Las causas asociadas a este error suelen ser:

  • Intentar iniciar el servidor en un puerto que requiere privilegios elevados sin usar el prefijo sudo o sin ser usuario root.
  • Intentar iniciar el servidor cuando otra instancia de Apache —o de otro servidor web como nginx— está en ejecución y se encuentra enlazada al mismo puerto.

Si su error es de otro tipo debe revisar su registro de errores en el archivo error.log. En general, estos archivos estarán ubicados en la ruta /var/log/apache2 (Debian/Ubuntu) o /var/log/httpd (RHEL, CentOS, Fedora). Una vez comprobado el error, consulte la documentación oficial de Apache para más información sobre las soluciones pertinentes.

Arrancar Apache de forma predeterminada al iniciar su servidor

Si desea que el servicio Apache se siga ejecutando incluso después de un reinicio de su servidor debe agregar un llamado a los archivos de inicio en su sistema, en general rc.local o un archivo en el directorio rc.N. Antes de ejecutar el comando correspondiente a su sistema asegúrese de que servidor está configurado correctamente y provee las restricciones adecuadas de acceso y seguridad.

Si su sistema es CentOS/Fedora/RHEL ejecute:

sudo chkconfig httpd on

Si utiliza Ubuntu o Debian puede usar:

update-rc.d apache2 enable

Recursos adicionales

Puede consultar los siguientes recursos en busca de información adicional con respecto a este tema. Aunque este material es provisto esperando que sea útil, tenga en cuenta que no podemos certificar la actualidad o precisión de los contenidos externos.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...