Servidor HTTP Apache
|
El servidor HTTP Apache es un servidor web HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1[3] 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 Behelendorf quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además 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").
Sumario
Historia
En marzo de 1989 Tim Berners Lee, un científico inglés que trabaja en el CERN (Suiza) propone un nueva forma de gestionar la ingente cantidad de información de los proyectos del CERN.
Se trata de una red de documentos hiper enlazados (hipertexto tal y como Ted Nelson lo denominó ya en 1965); estaba naciendo el WWW. Hubo que esperar hasta noviembre de 1990 hasta que el primer software WWW vio la luz: en un paquete llamado World Wide Web se incluía un navegador web de interfaz gráfica y un editor WYSIWYG (What You See Is What You Get - lo que ve en la pantalla es lo que obtiene como resultado).
Dos años después, la lista de servidores WWW contaba con una treintena de entradas, entre los cuales ya se encontraba el NCSA HTTPd. La verdadera historia de Apache comienza cuando en marzo de 1995, Rob McCoolabandona el NCSA. Apache 0.2 vería la luz el 18 de marzo de 1995 basado en el servidor NCSA httpd 1.3 realizado por el propio Rob McCool durante su estancia en NCSA. Durante esos primeros meses, Apache era una colección de parches aplicados al servidor NCSA, hasta que Robert Thau lanzara Shambhala 0.1, una reimplementación casi completa que ya incluía La API para los módulos que ha resultado ser tan exitosa.
El nombre del proyecto Apache se debe a la filosofía de desarrollo y de organización. Al igual que la tribu de los apaches, los desarrolladores de Apache decidieron que su forma organizativa debía fundamentarse en los méritos personales de los desarrolladores para con el resto de la comunidad Apache. Se ha extendido, sin embargo, la leyenda de que el nombre Apache en realidad se debe a que en los primeros tiempos no dejaba de ser un servidor NCSA parcheado, en inglés a Patchy Server. Habría que esperar a enero de 1996 para poder disfrutar de la primera versión estable de Apache, la Apache 1.0, que incluía la carga de módulos en tiempo de ejecución a modo de pruebas además de otras funcionalidades interesantes. Los primeros meses de ese año fueron especialmente fructíferos para el proyecto, ya que la versión 1.1 se publicó apenas dos meses después contando con módulos de autentificación contra bases de datos (como MySQL).
Desde entonces hasta la actualidad, los hitos más grandes del proyecto han sido la total conformidad con el estándar HTTP 1.1 (incluido en abril de 1997 en Apache 1.2), la inclusión de la plataforma Windows NT (que comenzó ya en julio de 1997 con las versiones en pruebas de Apache 1.3), la unificación de los archivos de configuración en uno solo (habría que esperar a octubre de 1998 ya Apache 1.3.3 para ello) y el lanzamiento, todavía en pruebas, de la siguiente generación de Apache, Apache 2.
Entremedias, en junio de 1998, IBM decidió que el motor tras su producto WebSphere fuera Apache en lugar de desarrollar un servidor HTTP propio. Esto se vio como un gran espaldarazo por parte del gigante azul al proyecto Apache y al software libre en general, aunque para facilitar este hecho hubiera que cambiar ligeramente la licencia Apache original.
Desarrollo
El desarrollo del servidor HTTP Apache se fundamenta en el trabajo de un reducido grupo de desarrolladores denominado Apache Group. El Apache Group lo constituyen aquellos desarrolladores que han colaborado durante un periodo prolongado de tiempo, generalmente más de seis meses.
Después de ser nominado de un miembro del Apache Group para formar parte del mismo, se vota entre todos los miembros del Apache Group. En sus comienzos, el Apache Group constaba de ocho desarrolladores, luego de doce y en la actualidad cuenta con 25 personas.
Sobre el Apache Group recae la responsabilidad de la evolución del servidor web y, por tanto, las decisiones puntuales de desarrollo en cada momento. Hay que diferenciar al Apache Group del núcleo de desarrolladores (Core group) activo en cada momento. El carácter voluntario de la mayoría de los desarrolladores hace que sea improbable que todos los que componen el Apache Group puedan estar activos todo el tiempo, por lo que el core se define como aquéllos que en un espacio de tiempo pueden ocuparse de las tareas en Apache. En líneas generales, las decisiones que han de tomar los desarrolladores pertenecientes al núcleo se limitan a votar la inclusión de código -aunque esto se reserve en realidad sólo para grandes cambios- y para cuestiones de diseño. Por otra parte, en general suelen tener derecho de escritura en el repositorio CVS, por lo que sirven como puerta de entrada del código asegurando que sea correcto y su calidad.
Ventajas y aceptación
- Modular
- Código abierto
- Multi-plataforma
- Extensible
- Popular (fácil conseguir ayuda/soporte)
Apache tiene amplia aceptación en la red: desde 1996, Apache, es el servidor HTTP más usado. Alcanzó su máxima cuota de mercado en 2005 siendo el servidor empleado en el 70% de los sitios web en el mundo, sin embargo ha sufrido un descenso en su cuota de mercado en los últimos años. (Estadísticas históricas y de uso diario proporcionadas por Netcraft[4]).
Requisitos mínimos para su funcionamiento
- Procesador: Pentium
- Memoria RAM: 64 MB
- Sistema Operativo: Microsoft Windows, GNU/Linux
- Tamaño de la instalación: 50 MB
Módulos
La arquitectura del servidor Apache es muy modular. El servidor consta de una sección core y diversos módulos que aportan mucha de la funcionalidad que podría considerarse básica para un servidor web. Algunos de estos módulos son:
- mod_ssl - Comunicaciones Seguras vía TLS.
- mod_rewrite - reescritura de direcciones (generalmente utilizado para transformar páginas dinámicas como php en páginas estáticas html para así engañar a los navegantes o a los motores de búsqueda en cuanto a cómo fueron desarrolladas estas páginas).
- mod_dav - Soporte del protocolo WebDAV (RFC 2518).
- mod_deflate - Compresión transparente con el algoritmo deflate del contenido enviado al cliente.
- mod_auth_ldap - Permite autentificar usuarios contra un servidor LDAP.
- mod_proxy_ajp - Conector para enlazar con el servidor Jakarta Tomcat de páginas dinámicas en Java (servlets y JSP).
El servidor de base puede ser extendido con la inclusión de módulos externos entre los cuales se encuentran:
- mod_cband - Control de tráfico y limitador de ancho de banda.
- mod_perl - Páginas dinámicas en Perl.
- mod_php - Páginas dinámicas en PHP.
- mod_python - Páginas dinámicas en Python.
- mod_rexx - Páginas dinámicas en REXX y Object REXX.
- mod_ruby - Páginas dinámicas en Ruby.
- mod_aspdotnet - Páginas dinámicas en .NET de Microsoft (Módulo retirado).
- mod_mono - Páginas dinámicas en Mono
- mod_security - Filtrado a nivel de aplicación, para seguridad.
Uso
Apache es usado primariamente para enviar páginas web estáticas y dinámicas en la World Wide Web. Muchas aplicaciones web están diseñadas asumiendo como ambiente de implantación a Apache, o que utilizarán características propias de este servidor web.
Apache es el componente de servidor web en la popular plataforma de aplicaciones LAMP, junto a MySQL y los lenguajes de programación PHP/Perl/Python (y ahora también Ruby).
Este servidor web es redistribuido como parte de varios paquetes propietarios de software, incluyendo la base de datos Oracle y el IBM WebSphere application server. Mac OS X integra apache como parte de su propio servidor web y como soporte de su servidor de aplicaciones WebObjects. Es soportado de alguna manera por Borland en las herramientas de desarrollo Kylix y Delphi. Apache es incluido con Novell NetWare 6.5, donde es el servidor web por defecto, y en muchas distribuciones Linux.
Apache es usado para muchas otras tareas donde el contenido necesita ser puesto a disposición en una forma segura y confiable. Un ejemplo es al momento de compartir archivos desde una computadora personal hacia Internet. Un usuario que tiene Apache instalado en su escritorio puede colocar arbitrariamente archivos en la raíz de documentos de Apache, desde donde pueden ser compartidos.
Los programadores de aplicaciones web a veces utilizan una versión local de Apache con el fin de previsualizar y probar código mientras éste es desarrollado.
Microsoft Internet Information Services (IIS) es el principal competidor de Apache, así como Sun Java System Web Server de Sun Microsystems y un anfitrión de otras aplicaciones como Zeus Web Server. Algunos de los más grandes sitios web del mundo están ejecutándose sobre Apache. La capa frontal (front end) del motor de búsqueda Google está basado en una versión modificada de Apache, denominada Google Web Server (GWS). Muchos proyectos de Wikimedia también se ejecutan sobre servidores web Apache.
Configuración
La mayor parte de la configuración se realiza en el fichero apache2.conf o httpd.conf, según el sistema donde esté corriendo. Cualquier cambio en este archivo requiere reiniciar el servidor, o forzar la lectura de los archivos de configuración nuevamente.
Licencia
La licencia de software bajo la cual el software de la fundación Apache es distribuido es una parte distintiva de la historia de Apache HTTP Server y de la comunidad de código abierto. La Licencia Apache permite la distribución de derivados de código abierto y cerrado a partir de su código fuente original.
La Free Software Foundation no considera a la Licencia Apache como compatible con la versión 2 de la GNU General Public License (GPL), en la cual el software licenciado bajo la Apache License no puede ser integrado con software distribuido bajo la GPL.
Sin embargo, la versión 3 de la GPL incluye una provisión (Sección 7e) que le permite ser compatible con licencias que tienen cláusulas de represalia de patentes, incluyendo a la Licencia Apache.
El nombre Apache es una marca registrada y puede ser sólo utilizada con el permiso expreso del dueño de la marca.[5]
Vulnerabilidades de la seguridad
La mayoría de las vulnerabilidades de la seguridad descubiertas y resueltas tan sólo pueden ser aprovechadas por usuarios locales y no remotamente. Sin embargo, algunas se pueden accionar remotamente en ciertas situaciones, o explotar por los usuarios locales malévolos en las disposiciones de recibimiento compartidas que utilizan PHP como módulo de Apache.
URL para la descarga del software
Véase también
Otros proyectos de la Apache Software Foundation
- Jakarta Tomcat
- Jakarta Struts
- Apache MINA
- James Server (SMTP Server)
Referencias
Fuentes
- Sitio web del Proyecto Apache
- Sitio web de Apache Software Foundation
- Apache women
- Apache-es.org - Foro público de preguntas y respuestas de Apache en español
- Apache | Portal de la Cultura Matancera
- http://revista.jovenclub.cu/index.php?option=com_content&task=view&id=80&Itemid=35
- Jorba Esteve, Josep; y Suppi Boldrito, Remo: Administración avanzada de GNU/Linux.
- Barrios Dueñas, Joel: Implementación de Servidores con GNU/Linux.