GNU/Linux >> Tutoriales Linux >  >> Linux

Problemas comunes del servidor y soluciones

Uno de los usos más comunes del servidor en línea es alojar sitios web. Esto es posible gracias al software que sirve contenido http, entre otras cosas. En este post voy a explicar algunos trucos para detectar y reparar problemas en los sistemas de servicios web son GNU/Linux. Para simplificar, nos centraremos en Apache, que es el más utilizado.

Normalmente la primera noticia que tenemos cuando hay problemas en el servidor web es que los navegadores no son capaces de visualizar los contenidos. Antes de entrar en el servidor conviene comprobar si el problema es de DNS y porque el nombre de dominio no resuelve a la IP de nuestro servidor web. Esto se puede ver usando aplicaciones como ping, host, nslookup dig, etc. según la que tengamos a mano.
Si estamos seguros de que el dominio DNS funciona y apunta al servicio web ip, nosotros como administradores a acceda a esto e intente descubrir y resolver cualquier problema.

Antes de entrar al trapo, como primer dato decimos que el protocolo http funciona en el puerto 80 de nuestro servidor. Este es un dato importante porque sabiendo que podemos obtener fácilmente datos sobre los procesos que se están ejecutando.
Una vez dentro, lo primero que hacemos es usar el comando “netstat” que muestra una lista de puertos y conexiones establecidas en nuestro servidor:

Como se muestra, usando junto con el comando “grep”, para filtrar por “LISTEN” y “80” nos muestra si hay un proceso escuchando en el puerto 80, y usa el servicio “httpd”. Si tuviera que eliminar el “| grep LISTEN” también mostramos las conexiones que aún están activas en ese puerto, entre ellas podemos encontrar conexiones establecidas, pendientes pendientes o cerradas.

Además, también tenemos un comando llamado “lsof” que puede mostrarnos aún más información sobre los usuarios y la cantidad de procesos en ejecución. Este comando muestra información sobre los archivos abiertos en el sistema Linux Linux ya que todo funciona a través de archivos para nosotros es muy útil. En este caso necesitamos indicarle que busque archivos abiertos relacionados con el puerto 80 y esto lo haremos especificando “-i 80” dentro del sistema estando como usuarios administradores:

Esto de arriba es una salida normal de un servidor donde nadie está viendo páginas alojadas. Aquí podemos ver como el usuario que ejecuta el proceso es “apache” que hay un padre y 6 hijos procesando procesos esperando que lleguen solicitudes para servir el contenido. Si alguien busca una página donde aparecen más “ESCUCHAR” ahora aparece, indicando la fuente de la conexión entre otras cosas.

Si en nuestro servidor no vemos ningún proceso ejecutándose en el puerto 80 con alguno de los comandos anteriores, es indicativo de que el servicio web no está funcionando como debería y por tanto tendremos que iniciarlo de nuevo. Esto es dependiendo de qué distribución de Linux usaremos usando un nombre u otras distribuciones basadas en Redhat y Centos se hacen con “httpd” y las basadas en Debian como Ubuntu, con “apache2”

En nuestro caso, usamos httpd porque es un Centos, y como el servidor web arranca correctamente, solo verificaríamos ahora si hay procesos en ejecución e intentaremos visualizar los sitios nuevamente en el navegador.

En el caso de que no arranque puede mostrarnos un mensaje de error que sería analizado en detalle para determinar exactamente qué sucede, ya que hay muchas posibilidades. También deberíamos mirar el registro de errores para ver si ha dejado algún mensaje de indicación. Esto se puede hacer con el comando cat o tail o cualquier editor de texto de la consola, como vim, nano o emacs.

Una aplicación muy útil de lo anterior es “tail” ya que con la “-f” detrás nos permite ver los logs en tiempo real, por ejemplo:

cola -f /var/log/httpd/error_log

Si lo dejamos funcionando en una consola y la otra intenta iniciar el servicio, o accede al navegador podremos ver errores en tiempo real, lo cual será de mucha utilidad.
A veces el servidor web parece estar arrancado y funcionando con normalidad con sus procesos para escuchar, pero aún así los sitios web no funcionan correctamente y no muestran ningún contenido en el navegador.
En estos casos, para ver qué sucede, la prioridad, como se indicó anteriormente, es mirar el registro de errores, que normalmente muestra información detallada sobre los problemas que impiden el funcionamiento. Después de mostrar el error, a menos que sepamos que lo es, es normal utilizar un motor de búsqueda como Google para obtener información sobre este error y alguna forma de solucionarlo. Si aún no aparece ningún mensaje, lo que se debe hacer es detener todas las instancias del servidor web y ejecutarlo en modo de depuración:

httpd -e DEPURAR

Con esto si deberíamos poder ver cualquier error interno para ayudar en su resolución. En cualquier caso si después de seguir todos estos pasos no consigues hacer funcionar tu servidor web te recomendamos que te pongas en manos de profesionales que puedan solucionar el problema de forma rápida y eficaz.
Por último pondremos una lista de los más habituales Errores que podemos encontrar a la hora de levantar un servicio web caído y algunas ideas de cómo solucionarlos. Errores que pueden ir en el log cuando el problema es la configuración web o el código lo dejamos para otra entrada trasera.

1. “make_sock:no se pudo enlazar a la dirección 0.0.0.0:80 no hay sockets de escucha disponibles”
Si aparece este error al iniciar el servicio web probablemente ya esté funcionando ya que hay algo escuchando en el puerto 80. Si tenemos problemas intente detenerlo primero con un "servicio httpd/apache2 stop", pero aún saliendo con el mismo error debería matar el proceso que está ocupando el puerto 80, trayendo el número pid descrito anteriormente con el comando lsof o netstat y usando el "kill - s 9” comando pid “para obligarlo a detenerse.

2. “No such file or directory:apache2:Could not open error log file /var/log/apache2/error.log”
Con este error el servidor web indica que el inicio no pudo escribir en el registro que está asignado en su configuración, ya sea porque la carpeta no existe, porque no puede crear el archivo o porque el archivo existe pero los permisos/usuarios no son correctos. Para solucionarlo debemos analizar todos estos factores y permitir que el usuario del servidor web pueda escribir en ese archivo y reiniciar el proceso.

3. “Iniciando httpd:error de sintaxis en la línea xxx de /etc/httpd/conf/httpd.conf:DocumentRoot debe ser un directorio”
A veces el error nos redirige a un punto exacto del servicio web de configuración. En ese caso revisaremos el archivo de configuración en cuestión, y analizaremos que puede fallar exactamente en la línea indicada. En este caso, no se podía acceder a "DocumentRoot", que es la raíz del servidor web, siendo similar a la solución del punto 2.


Linux
  1. Escenarios en tiempo real de Linux y problemas con sus soluciones

  2. Estado del sistema y del servidor

  3. Lista de errores comunes (y soluciones) durante la instalación y configuración del servicio OpenStack Nova

  4. Lista de los errores (y soluciones) más comunes al instalar OpenStack Image Service VISTAZO

  5. ¿Qué es un error interno del servidor 500?

Tunelización y proxy SSH

Cliente y servidor NIS

Problemas comunes de Windows:activación del servidor de administración de claves

Fundamentos de virtualización de VMware:VMware Server y VMware ESXi

Los 20 mejores software y soluciones de servidor de correo Linux

¿Depuración de iptables y trampas comunes de firewall?