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:
-
Utilice el siguiente comando
apache2ctl configtest
También puede usar:
apachectl -t
Otra opción para sistemas CentOS/Fedora es usar:
httpd -t
-
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.
- Documentación oficial de Apache.
- Iniciar Apache (tutorial oficial de Apache usado como referencia para el desarrollo de esta guía).
- Consulte nuestras guías: Guía de solución de problemas comunes de Apache y Estructura de configuración de Apache.