Es posible que deba reiniciar Apache® cuando desee que los cambios que realice surtan efecto, o cuando necesite que el uso de recursos de Apache vuelva a su rango normal. Sin embargo, a veces Apache no se reinicia. Este artículo le muestra cómo verificar sus ajustes de configuración y reiniciar Apache cuando falla.
Nota :Antes de utilizar las siguientes instrucciones y realizar cualquier cambio en sus archivos de configuración, le recomendamos que haga una copia de seguridad de los archivos existentes.
Verificar la sintaxis
La causa del error podría ser simplemente una palabra mal escrita o un punto (.) fuera de lugar. Ejecute el siguiente comando para verificar la sintaxis:
[user@server ~]$ httpd –S
Debería ver el siguiente resultado:
Syntax OK
Si recibe un mensaje de error similar al que se muestra en el siguiente ejemplo, debe corregir el error antes de intentar reiniciar Apache:
Syntax error on line 51 of /etc/httpd/conf/httpd.conf:
Invalid command 'erverRoot', perhaps misspelled or defined by a module not included in the server configuration
Consulte los registros de errores de Apache
Si resuelve esos errores y Apache aún no se reinicia, verifique los registros de errores de Apache. Usar dos ventanas podría ser útil. En una ventana, use el comando tail contra el registro de errores ejecutando el siguiente comando:
tail –f /var/log/httpd/error_log
En la otra ventana, intente reiniciar Apache ejecutando el siguiente comando:
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
Mire la primera ventana mientras reinicia Apache para ver los errores que se generan en los registros.
Es posible que Apache tampoco se reinicie si hay otro servicio vinculado al puerto que Apache está tratando de usar, como se muestra en el siguiente resultado:
Stopping httpd: [FAILED]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 2001:4801:7824:103:9ed:a5a8:3301:d53a for ServerName
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Este resultado muestra que Apache no puede iniciarse porque otro servicio ya está asignado al puerto 80.
Puede cambiar el puerto al que está asignado Apache o verificar si el otro servicio que está asignado a este puerto debería estar en el puerto 80. Ejecute netstat
comando para identificar el otro servicio que está usando ese puerto, como se muestra en el siguiente ejemplo:
[user@server ~]$ sudo netstat –plnt
El resultado debe ser similar al siguiente ejemplo:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5272/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1581/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5835/mysqld
tcp 0 0 :::80 :::* LISTEN 5272/sshd
tcp 0 0 ::1:25 :::* LISTEN 1581/master
En este ejemplo, el resultado muestra que Secure Shell (SSH) está escuchando en el puerto 80, lo que no debería ser el caso. Puede rectificar esta situación modificando el archivo de configuración para que SSH escuche en un puerto diferente y luego reinicie Apache.
También puede ver el siguiente error:
httpd dead but subsys locked, but pid exists
Este error significa que Apache se estaba ejecutando, pero falló. Cuando inicia Apache, crea un archivo de bloqueo para indicar que se está ejecutando. El archivo de bloqueo ayuda a evitar que se ejecuten varias instancias. Cuando detiene Apache, este archivo de bloqueo se elimina. Sin embargo, cuando falla, el archivo de bloqueo todavía existe pero el proceso no. Si ve este error, debe eliminar el archivo de bloqueo ejecutando los siguientes comandos:
# For RHEL/CentOS based distributions
[user@server ~]$ sudo rm /var/lock/subsys/httpd
# For Ubuntu/Debian based distributions
[user@server ~]$ sudo rm /var/lock/subsys/apache2
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
La ejecución de estos comandos elimina el archivo de bloqueo no utilizado para que Apache pueda crear uno nuevo cuando se reinicie.
Use la pestaña Comentarios para hacer cualquier comentario o hacer preguntas. También puede iniciar una conversación con nosotros.