Tuesday, December 12, 2006

Servidores Web

SERVIDORES WEB
¿Qué es un servidor?
En informática, un servidor es un tipo de software que realiza ciertas tareas en nombre de los usuarios. Servicios habituales son los servicios de archivos, que permiten a los usuarios almacenar y acceder a los archivos de un ordenador y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Este es el significado original del término. Es posible que un ordenador cumpla simultáneamente las funciones de cliente y de servidor. El término servidor ahora también se utiliza para referirse al ordenador físico en el cual funciona ese software, una máquina cuyo propósito es proveer datos de modo que otras máquinas puedan utilizar esos datos.
Este uso dual puede llevar a confusión. Por ejemplo, en el caso de un servidor Web, este término podría referirse a la máquina que almacena y maneja los sitios Web, y en este sentido es utilizada por las compañías que ofrecen hosting o hospedaje. Alternativamente, el servidor Web podría referirse al software, como el servidor de http de Apache, que funciona en la máquina y maneja la entrega de los componentes de las páginas Web como respuesta a peticiones de los navegadores de los clientes.
Los archivos para cada sitio de Internet se almacenan y se ejecutan en el servidor. Hay muchos servidores en Internet y muchos tipos de servidores, pero comparten la función común de proporcionar el acceso a los archivos y servicios.
Un servidor sirve información a los ordenadores que se conecten a él. Cuando los usuarios se conectan a un servidor pueden acceder a programas, archivos y otra información del servidor.
En la Web, un servidor Web es un ordenador que usa el protocolo http para enviar páginas Web al ordenador de un usuario cuando el usuario las solicita.
Los servidores Web, servidores de correo y servidores de bases de datos son a lo que tiene acceso la mayoría de la gente al usar Internet.
Algunos servidores manejan solamente correo o solamente archivos, mientras que otros hacen más de un trabajo, ya que un mismo ordenador puede tener diferentes programas de servidor funcionando al mismo tiempo.
Los servidores se conectan a la red mediante una interfaz que puede ser una red verdadera o mediante conexión vía línea telefónica o digital.

Servidor HTTP Apache

Características
Hoy en día, el servidor Web Apache es el servidor más usado de Internet, con una utilización del 65% aproximadamente.
La primera aparición de Apache fue en Abril de 1995. Este servidor se sigue desarrollando “en Internet” como un proyecto de Software libre.
Las principales metas de su diseño son: velocidad, simplicidad, multiplataforma y facilidad del desarrollo distribuido.
Todo el código de fuente de Apache está escrito en C, con un total aproximado de 185.000 líneas de código.
Es un servidor basados en procesos, utilizando la técnica pre-fork (comentada en el apartado anterior)
El servidor HTTP Apache es un servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etcétera), Windows y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que originalmente Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor "parcheado").
El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation.
Apache presenta entre otras características mensajes de error altamente configurables, bases de datos de autenticación y negociado de contenido, pero fue criticado por la falta de una interfaz gráfica que ayude en su configuración.
Apache tiene amplia aceptación en la red: en el 2005, Apache es el servidor HTTP más usado, siendo el servidor HTTP del 70% de los sitios Web en el mundo y creciendo aún su cuota de mercado (estadísticas históricas y de uso diario proporcionadas por Netcraft).
El núcleo 2.x de Apache tiene varias mejoras clave sobre el núcleo de Apache 1.x. Estas mejoras incluyen threads de UNIX, mejor soporte para plataformas no Unix (como Windows), un nuevo API, y soporte de IPv6
Módulos
La arquitectura del servidor Apache es muy modular. El servidor consta de un sección core y mucha de la funcionalidad que podría considerarse básica para un servidor Web es provista por módulos.

Internet Information Services

Internet Information Services (IIS) es un componente software que integra una serie de herramientas para la creación, configuración y administración de sitios Web, además de incluir otros servicios de Internet para la plataforma Windows.
Entre estos servicios se encuentra un servicio Web y, los siguientes:
FTP, servicio para la transferencia de ficheros por red.
SMTP, servicio para la transferencia de correo electrónico.
NNTP, servicio para la transferencia de noticias.
Comúnmente, llamamos al servidor Web de Microsoft como Internet Information Server, es decir, el servicio Web que ofrece IIS. De ahora en adelante, nos referiremos a este servidor como IIS.
Internet Information Services se distribuye gratuitamente junto con las versiones de Windows basadas en NT, así como en las versiones 2000 y 2003 Server, para sus ediciones Standard, Enterprise y Web.
IIS también ofrece una versión reducida para Windows XP en sus ediciones Professional y Media Center.
En la instalación del servidor, se incluirán por defecto el servicio Web y el de administración del mismo.
Características
IIS es el segundo servidor Web más utilizado en Internet (por detrás de Apache), pero probablemente sea el primero en cuanto a utilización en entornos corporativos.
Desde su creación y hasta la fecha (Abril 2006), han aparecido 6 versiones diferentes. Para el próximo lanzamiento del nuevo sistema operativo de Microsoft (Windows Vista), se incluirá la nueva versión 7.0, que en la actualidad se encuentra en fase de desarrollo. Para esta nueva versión, Microsoft tiende a la modularización de sus componentes.
En versiones anteriores a la 6.0, todas las características y funcionalidades de IIS eran ejecutadas por la cuenta de administrador del sistema, consecuencia principal de los diversos fallos de seguridad, que generó la aparición de numerosos exploits (forma de utilizar un fallo del sistema para ingresar en el mismo y obtener ciertos privilegios).
A partir de la versión 6 todos los procesos de IIS se ejecutan bajo una cuenta específica que lógicamente, tiene muchos menos privilegios que una cuenta de root (cuenta del administrador del sistema) y, aporta una mayor seguridad al sistema.
Un cambio significativo en comparación con versiones anteriores de IIS es que ahora toda la configuración del servidor Web se almacena en archivos XML.
Arquitectura
Para todas las versiones anteriores a la 6, Internet Information Services se concebía como un “gran” servidor monolítico que ofrecía todos los servicios. A partir de la versión 6, los desarrolladores de Microsoft abandonaron esta idea previa de tal forma que el nuevo servicio Web tuviera su propio “motor”, es decir, definir una arquitectura modular para los servicios que componen Internet Information Services.
Con esta nueva arquitectura aparecen funcionalidades muchas más específicas que se pueden agregar al núcleo, de forma parecida a como ya lo hacen Apache y Cherokee.
La ventaja de utilizar esta arquitectura es que solamente las características requeridas son habilitadas y que las funcionalidades pueden ser ampliadas creando nuevos módulos, mejorando el rendimiento y la seguridad.
Para la nueva versión 7, los desarrolladores de Microsoft han incluido esta lista de módulos disponibles por defecto:
· Handlers o módulos manejadores de peticiones HTTP.
· Validators o módulos de seguridad.
· Módulos de contenidos.
· Encoders o módulos para conversión/compresión de información.
· Módulos de caché.
· Logging o módulos de registro y diagnóstico de peticiones.
También para la versión 7, se incluye una API (Application Programming Interface) para poder programar nosotros mismos nuevos módulos y funcionalidades para el servidor, utilizando algún lenguaje de programación basado en .NET (plataforma de desarrollo de software creada por Microsoft orientada a entornos Web, como “competencia” a Java).
Internet Information Services (o Server), IIS, es una serie de servicios para los ordenadores que funcionan con Windows. Originalmente era parte del Option Pack para Windows NT. Luego fue integrado en otros sistemas operativos de Microsoft destinados a ofrecer servicios, como Windows 2000 o Windows Server 2003. Windows XP Profesional incluye una versión limitada de IIS. Los servicios que ofrece son: FTP, SMTP, NNTP y HTTP/HTTPS.
Este servicio convierte a un computador en un servidor de Internet o Intranet es decir que en las computadoras que tienen este servicio instalado se pueden publicar páginas Web tanto local como remotamente (servidor Web).
El servidor Web se basa en varios módulos que le dan capacidad para procesar distintos tipos de páginas, por ejemplo Microsoft incluye los de Active Server Pages (ASP) y ASP.NET. También pueden ser incluidos los de otros fabricantes, como PHP o Perl.
Existen otros servidores Web que pueden usarse como alternativa a este que es de propiedad de Microsoft Corporation, por ejemplo Apache, Cherokee que son desarrollados en Software Libre y otros muchos.
Cherokee
Características
Es software libre, publicado bajo la licencia GPL (General Public License).
Escrito en C, unas 50.000 líneas de código.
Es un proyecto que desarrolla una nueva implementación de este tipo de aplicaciones.
El fin último de Cherokee es hacer un servidor con unas características de las que Apache carece debido a su diseño original.
Su diseño es un híbrido que combina las características de servidores basados en sockets no bloqueantes con las de servidores basado en hilos, en busca de obtener beneficios de ambos modelos y minimizar los aspectos negativos.
Básicamente, su funcionamiento es el de un servidor que procesa varias peticiones en cada uno de sus hilos. Estos hilos ni se crean ni se destruyen, se generan cuando arranca el servidor y permanecen vivos hasta que termina su ejecución.
En su implementación, se ha puesto especial interés en la velocidad, flexibilidad y capacidad de ser empotrado.
Velocidad: en el último benchmark (técnica utilizada para medir el rendimiento de un sistema, frecuentemente en comparación con algún parámetro de referencia) realizado hasta el momento, Cherokee fue cinco veces más rápido que Apache.
Flexibilidad: Cherokee, igual que Apache, dispone de un sistema para la carga dinámica de módulos basado en plug-ins, tanto para manejadores (handlers) como para codificadores (encoders) y sistema de logging.
Capacidad de ser empotrado dentro de otras aplicaciones. Todo el código se encuentra en una librería dinámica (libcherokee) que puede utilizar cualquier aplicación. El API de esta librería es muy sencillo; básicamente permite crear, configurar y ejecutar diferentes formas objetos “servidor”.
Al igual que Apache, Cherokee escala a servidores SMP (Symetric Multi-Processing. Sistemas con varios procesadores) y a sistemas multihilo. Es capaz de manejar más de un hilo y en cada uno de ellos, de nuevo, volver a procesar conexiones mediante compartición de tiempo.
Arquitectura
Hay tres grupos de módulos cargables: handlers, encoders y validators.
Handlers. Son manejadores de peticiones. Cuando el servidor procesa una petición, decide que clase de manejador debe utilizar. Dependiendo del módulo, la respuesta será una u otra.
Tipos de manejadores: files (servir ficheros al cliente), redir (redireccionar peticiones), Cgi’s, etc.
Encoders. Módulos que implementan una funcionalidad de conversión de la información que se puede enviar a los clientes si estos lo soportan. Cherokee puede enviar ciertos elementos de una página Web comprimidos para dotar de mayor rapidez de respuesta. El encoder más útil es el de GZip (explicar)
Validators. Módulos que implementan posibles formas de validar al usuario. Actualmente se puede validar con LDAP (no incluida en Cherokee por defecto), PAM y htpasswd.

Cherokee HTTP Server es un servidor http gratuito y multiplataforma escrito enteramente en C., no depende mas allá de un estándar de librerías C. Es un servidor muy rápido a la vez que implementa las funcionalidades más usadas por los servidores http. Es posible embeberlo en dispositivos hardware. Hace uso de plug-ins para extender sus funcionalidades. . Es extensible con bloqueos y soporta altas configuraciones para lectura de archivos o cadenas de caracteres, TLS/SSL (vía GNUTLS or OpenSSL), virtual hosts, autentificaciones, rasgos de caches amigables, PHP, manejo de errores y mucho más.

El proyecto Cherokee nació en 2001, desarrollado inicialmente por Alvaro López. Actualmente es mantenido y mejorado por el propio autor y una comunidad de desarrolladores, al igual que muchos proyectos de software libre.

Lighttpd
Lighttpd es un servidor Web diseñado para ser rápido, seguro, flexible, y fiel a los estándares. Está optimizado para entornos donde la velocidad es muy importante, y por eso consume menos CPU y memoria RAM que otros servidores. Por todo lo que ofrece, lighttpd es apropiado para cualquier servidor que tenga problemas de carga.
Lighttpd es software libre y se distribuye bajo la licencia BSD. Funciona en GNU/Linux y otros sistemas operativos tipo UNIX.
Características
Virtual hosting (alojar varios dominios en la misma IP)
CGI, SCGI y FastCGI
Soporte para PHP, Ruby, y otros
Entorno chroot
Cifrado SSL
Compresión (gzip, bzip2, ...)
Autenticación (LDAP, htpasswd, otros)
Server Side Includes
Consumo de memoria constante
Redirecciones HTTP, y reescrituras de URL
Puede enviar partes de un fichero (rangos)
Puede usar select() o poll()
También permite otros sistema de notificación de eventos como kqueue y epoll
Hace estadísticas mediante rrdtool
Muestra un listado de ficheros cuando se entra a un directorio sin index.html
Redirección condicional
Permite módulos externos
Cache Meta Language
Acepta parte de WebDAV
Lighttpd es un servidor desarrollado inicialmente por Jan Kneschke, actualmente mantenido por la comunidad de desarrolladores de lighttpd junto con su desarrollador.
Lenguajes de servidor
Lighttpd permite comunicarse con programas externos mediante FastCGI o SCGI, que son mejoras al CGI original (también soportado). De esta forma, se pueden usar programas en prácticamente cualquier lenguaje de programación.
Tiene una importancia especial PHP, para el que se han hecho mejoras específicas. También es habitual combinarlo con Ruby on Rails
Rendimiento
Según estadísticas (y en los enlaces a comparativas no oficiales), lighttpd es varias veces más rápido que Apache y thttpd en la mayoría de pruebas.
Thttpd

THTTPD es un simple, pequeño, portátil, rápido, y seguro, ya que utiliza los requerimientos mínimos de un servidor HTTP.
La creación de este software colabora para la optimización de las aplicaciones en los servidores WEB, obviamente es tener un hardware potente con un software optimizado y ligero, por que siempre se intenta buscar esa combinación.
Es un servidor:
Simple, por que esto maneja sólo el mínimo necesario para poner en práctica el protocolo HTTP, algunas veces un poco más que el mínimo.
Pequeño, por que esto también tiene un pequeño tamaño de período de explotación, ya que esto no se divide en dos partes y es muy cuidadoso sobre la asignación de memoria.
Portátil, por que esto se compila limpiamente sobre la mayoría de sistemas operativos, expresamente incluyendo FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF.
Rápido, por que en el empleo típico es sobre todo más rápido que los mejores servidores “destacados” (APACHE), y bajo la carga extrema es mucho más rápido.
Seguro, por que este se extiende a grandes longitudes para proteger el servidor WEB contra ataques otros sitios.
El uso apropiado para las personas que adoptan esta herramienta es de obtener velocidad en la transferencia de archivos y reducción de gastos innecesarios para funciones que no son requeridas en el servidor, debido a tener solo la posibilidad de utilizar servidores estándar (APACHE).
Este rasgo importante permite al administrador de servidor limitar la tarifa de bit máxima en la cual los ciertos tipos de archivos pueden ser transferidos, generando, una aplicación mucho más ligera y rápida.
El administrador puede decidir restringir la transferencia de archivos de imagen JPEG a en la mayor parte de 20 kilobytes por segundo. Esto impide a la conexión hacerse saturado de modo que el servidor todavía sea sensible bajo la carga pesada, con la compensación que reducen (obligan) la velocidad de transferencia de archivo.
Los promedios de carga se caen debido a la reducción de la transferencia grafica gracias a THTTPD
No posee las mismas aplicaciones que se pueden obtener de un software estándar como lo es el apache. Comparación de rendimiento.


0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home