2. Servidores WEB

Con "Servidor web" podemos referirnos a hardware o software, o a ambos trabajando juntos.

  1. En cuanto a hardware, un servidor web es una computadora que almacena el software de servidor web, y los archivos que componen un sitio web (por ejemplo, documentos HTML, imágenes, hojas de estilos CSS y archivos JavaScript). Un servidor web -hardware- se conecta a internet y mantiene el intercambio de datos con otros dispositivos conectados a la web.
  2. En cuanto a software, un servidor web tiene muchas partes que controlan cómo los usuarios de la web obtienen acceso a los archivos alojados en el servidor; es decir, mínimamente, un servidor HTTP. Un servidor HTTP es una pieza de software capaz de comprender URLs (direcciones web) y responder con el mismo protocolo HTTP al navegador para obtener las páginas web. Un servidor HTTP puede ser accedido a través de los nombres de dominio de los sitios web que aloja, y entrega el contenido de esos sitios web alojados al dispositivo del usuario final.
Al nivel más básico, cuando un navegador necesita un archivo que está almacenado en un servidor web, el navegador requerirá el archivo al servidor mediante el protocolo HTTP. Cuando la petición alcanza al servidor web correcto (hardware), el servidor HTTP (software) acepta la solicitud, encuentra el documento requerido y lo envía de regreso al navegador, también a través de HTTP. (Si el servidor no encuentra el documento requerido, devuelve una respuesta 404 en su lugar).

    Para publicar un sitio web, necesitarás un servidor web estático o dinámico.

    Un servidor web estático, o pila, consiste en una computadora (hardware) con un servidor HTTP (software). Llamamos a "estático" a este servidor porque envía los archivos que aloja "tal como se encuentran" (sin modificarlos) a tu navegador.

    Un servidor web dinámico consiste en un servidor web estático con software adicional, habitualmente una aplicación servidor y una base de datos. Llamamos "dinámico" a este servidor porque la aplicación servidor actualiza los archivos alojados, antes de enviar el contenido a tu navegador mediante el servidor HTTP.

    Por ejemplo, para producir las páginas web que finalmente ves en tu navegador, la aplicación servidor podría llenar una plantilla HTML con contenido obtenido de una base de datos. 

    Sitios como Wikipedia tienen miles de páginas web, que no son realmente archivos HTML. Típicamente, este tipo de sitios se componen de unas pocas plantillas HTML y una gigantesca base de datos, en vez de miles de documentos HTML estáticos. Esto hace mas fácil el mantenimiento y entrega del contenido.

    Recapitulando: para obtener una página web, como ya dijimos, tu navegador envía una solicitud al servidor web, que procede a buscar el archivo solicitado en su propio espacio de almacenamiento. Encontrado el archivo, el servidor lo lee, lo procesa según sea necesario y lo envía al navegador. Veamos esos pasos con más detalle.

    Alojamiento de archivos (Hosting)

    Un servidor web primero debe almacenar los archivos del sitio web, es decir, todos los documentos HTML y sus medios relacionados, incluidas las imágenes, las hojas de estilo CSS, los archivos JavaScript, las fuentes y videos.

    Técnicamente, puede alojar todos esos archivos en su propia computadora, pero es mucho más conveniente almacenarlos en un servidor web dedicado que:

    • siempre está funcionando.
    • siempre está conectado a internet.
    • tiene la misma dirección IP todo el tiempo.
    • es mantenido por un proveedor externo.

    Por todas estas razones, encontrar un buen proveedor de alojamiento es una parte clave del desarrollo de su sitio web. Investigue a través de los diversos servicios que ofrecen las compañías y elija uno que se ajuste a sus necesidades y a su presupuesto (los servicios van desde los gratuitos hasta los miles de dólares al mes).

    Observar que el acceso a Internet del Servidor Web, NO debería ser el mismo que tiene un usuario doméstico en un conexión de Internet en la casa.

    Comunicación a través de HTTP

    En segundo lugar, un servidor web brinda soporte para HTTP (Hypertext Transfer Protocol ó Protocolo de Transferencia de Hipertexto). Como su nombre lo indica, HTTP especifica cómo transferir hypertext (es decir, documentos web vinculados) entre dos computadoras.

    Un protocolo es un conjunto de reglas para la comunicación entre dos computadoras. HTTP es un protocolo textual, sin estado.

    Textual

    Todos los comandos son de texto plano y legible para ser leído por humanos.

    Sin estado

    Ni el servidor, ni el cliente recuerdan las comunicaciones anteriores. Por ejemplo, al confiar solo en HTTP, un servidor no puede recordar la contraseña que ingresó ni el paso que está realizando en una transacción. Necesita un servidor de aplicaciones para tareas como esa. Esto no es parte del tema que estamos tratando.

    HTTP proporciona reglas claras sobre cómo se comunican un cliente y un servidor:

    • Solo los clientes pueden hacer solicitudes HTTP a los servidores. 
    • Los servidores solo pueden responder a la solicitud HTTP de un cliente.
    • Al solicitar un archivo a través de HTTP, los clientes deben proporcionar la URL del archivo.
    • El servidor web debe responder a todas las solicitudes HTTP, al menos con un mensaje de error.

    En un servidor web, el servidor HTTP es responsable de procesar y responder las solicitudes entrantes.

    1. Al recibir una solicitud, un servidor HTTP primero verifica si la URL solicitada coincide con un archivo existente.
    2. Si es así, el servidor web envía el contenido del archivo de nuevo al navegador. Si no, un servidor de aplicaciones construye el archivo necesario.
    3. Si ninguno de los procesos es posible, el servidor web devuelve un mensaje de error al navegador, generalmente "404 Not Found". (Ese error es tan común que muchos diseñadores web pasan bastante tiempo diseñando páginas de error 404).

    Contenido Estático vs. Dinámico

    En términos generales, un servidor puede entregar contenido estático o dinámico. "Estático" significa "servido como está". Los sitios web estáticos son los más fáciles de configurar, por lo que le sugerimos que convierta su primer sitio en un sitio estático.

    "Dinámico" significa que el servidor procesa el contenido o incluso lo genera desde una base de datos. Esta solución proporciona más flexibilidad, pero se vuelve más difícil de manejar, lo que hace que sea mucho más complejo desarrollar el sitio web.

    Tomemos por ejemplo la página que estás leyendo en este momento. En el servidor web que lo aloja, hay un servidor de aplicaciones que toma el contenido del artículo de una base de datos, lo formatea, lo coloca dentro de algunas plantillas HTML y le envía los resultados.

    Hay tantos servidores de aplicaciones que es resulta difícil sugerir uno en particular. Algunos servidores de aplicaciones se adaptan a categorías específicas de sitios web como blogs, wikis o tiendas electrónicas; otros, llamados CMS (Content Management Systems ó Sistemas de Gestión de Contenidos), son más genéricos.

    Si está desarrollando un sitio web dinámico, tómese el tiempo para elegir una herramienta que se adapte a sus necesidades. A menos que desee aprender algo de programación de servidores web (¡es un área emocionante!), no necesita crear su propio servidor de aplicaciones.