Sei sulla pagina 1di 45

Apache

Historia de Apache
En febrero del ao 1995, el servidor web ms popular era un servidor desarrollado por el NCSA (National Center for Supercomputing Applications de la Universidad de Illinois). Sin embargo, al dejar el principal desarrollador del servidor, Rob McCool, la NCSA en el ao 1994, la evolucin del programa haba quedado seriamente comprometida. La responsabilidad del desarrollo recay en los responsables de sitios web, que introdujeron mejoras progresivas en sus servidores. Un grupo de ellos, utilizando el correo electrnico como herramienta principal de coordinacin, se pusieron de acuerdo para poner en comn estas mejoras en forma de "patches" o parches. 2 de ellos, Cliff Skolnick y Brian Behlendorf, iniciaron una lista de correo, un espacio para compartir informacin y un servidor en California donde los desarrolladores ms importantes pudiesen trabajar. A principios del ao siguiente, 8 programadores fundaron lo que haba de ser el Grupo Apache. stos, utilizando como base de trabajo el servidor NCSA 1.3, incorporaron las correcciones de errores publicadas y las mejoras ms importantes que encontraron y probaron el resultado final en sus servidores. Despus publicaron lo que haba de ser la 1a versin oficial del servidor Apache (la 0.6.2, en abril del ao 1995). Casualmente, por esas fechas, la NCSA reemprendi el desarrollo de su servidor NCSA. En aquel momento el desarrollo de Apache continu por 2 lneas paralelas. Por un lado, algunos desarrolladores siguieron trabajando en el Apache 0.6.2 para llegar a la serie 0.7, incorporando diversas mejoras. Otro grupo reescribi por completo el cdigo de la primera versin, creando una nueva arquitectura de tipo modular. En julio del ao 1995 migraron a esta nueva arquitectura las mejoras desarrolladas para Apache 0.7, hacindose pblico como Apache 0.8. El da 1 de diciembre del ao 1995, apareci Apache 1.0, que inclua abundante documentacin y muchas mejoras en forma de mdulos que se podan incrustar. Despus, Apache sobrepas al servidor NCSA como el ms popular en Internet, posicin que ha mantenido hasta hoy. En el ao 1999 los miembros del Grupo Apache fundaron la Apache Software Foundation, que da soporte de tipo legal y financiero al desarrollo del servidor Apache y los proyectos relacionados que ha ido surgiendo

Una Introduccin a APACHE


Apache es el servidor web hecho por excelencia, su configurabilidad, robustez y estabilidad hacen que cada vez millones de servidores reiteren su confianza en este programa. La historia de Apache se remonta a febrero de 1995, donde empieza el proyecto del grupo Apache, el cual esta basado en el servidor Apache httpd de la aplicacin original de NCSA. El desarrollo de esta aplicacin original se estanc por algn tiempo tras la marcha de Rob McCool por lo que varios webmaster siguieron creando sus parches para sus servidores web hasta que se contactaron va email para seguir en conjunto el mantenimiento del servidor web, fue ah cuando formaron el grupo Apache. Fueron Brian Behlendorf y Cliff Skolnick quienes a travs de una lista de correo coordinaron el trabajo y lograron establecer un espacio compartido de libre acceso para los desarrolladores. Fue as como fue creciendo el grupo Apache, hasta lo que es hoy :) Aquella primera versin y sus sucesivas evoluciones y mejoras alcanzaron una gran implantacin como software de servidor inicialmente solo para sistemas operativos UNIX y fruto de esa evolucin es la versin para Windows . Apache es una muestra, al igual que el sistema operativo Linux (un Unix desarrollado inicialmente para PC), de que el trabajo voluntario y cooperativo dentro de Internet es capaz de producir aplicaciones de calidad profesional difciles de igualar. La licencia Apache es una descendiente de la licencias BSD, no es GPL. Esta licencia te permiten hacer lo que quieras con el cdigo fuente (incluso forks y productos propietarios) siempre que les reconozcas su trabajo. Ahora te preguntars porqu esa popularidad de este software libre grandemente reconocido en muchos mbitos empresariales y tecnolgicos, pues aqu algunas razones :

Corre en una multitud de Sistemas Operativos, lo que lo hace prcticamente universal. Apache es una tecnologa gratuita de cdigo fuente abierto. El hecho de ser gratuita es importante pero no tanto como que se trate de cdigo fuente abierto. Esto le da una transparencia a este software de manera que si queremos ver que es lo que estamos instalando como servidor , lo podemos saber, sin ningn secreto, sin ninguna puerta trasera ;). Apache es un servidor altamente configurable de diseo modular. Es muy sencillo ampliar las capacidades del servidor Web Apache. Actualmente existen muchos mdulos para Apache que son adaptables a este, y estn ah para que los instalemos cuando los necesitemos. Otra cosa importante es que cualquiera que posea una experiencia decente en la programacin de C o Perl puede escribir un modulo para realizar una funcin determinada. Apache trabaja con gran cantidad de Perl, PHP y otros lenguajes de script. Perl destaca en el mundo del script y Apache utiliza su parte del pastel de Perl tanto con soporte CGI como con soporte mod perl. Tambin trabaja con Java y pginas jsp. Teniendo todo el soporte que se necesita para tener pginas dinmicas. Apache te permite personalizar la respuesta ante los posibles errores que se puedan dar en el servidor. Es posible configurar Apache para que ejecute un determinado script cuando ocurra un error en concreto. Tiene una alta configurabilidad en la creacin y gestin de logs. Apache permite la creacin de ficheros de log a medida del administrador, de este modo puedes tener un mayor control sobre lo que sucede en tu servidor .

Se pueden extender las caractersticas de Apache hasta donde nuestra imaginacin y conocimientos lleguen. Comienza a hacer tus pginas web y aljalas en tu mquina, conviertes de ese modo tu pc de escritorio en un servidor, instala el servidor APACHE, hay instaladores para distintos sistemas operativos, si miras en la web www.apache.org de seguro que encuentras uno para ti.

Apache
El servidor HTTP Apache es una de las aplicaciones estrella del mundo del software libre, ya que es el servidor web de mayor implantacin segn la encuesta que realiza en tiempo real Netcraft:server-survey-august:03. As, en mayo de 1999 el 57% de los servidores web corran bajo apache, mientras que en mayo de 2003 el porcentaje ha aumentado hasta el 68%. Apache est disponible para todos los sabores de UNIX (BSD, GNU/Linux, Solaris, ...), Microsoft Windows y otras plataformas minoritarias.

9.5.1. Historia de Apache


En marzo de 1989 Tim Berners Lee, un cientfico ingls que trabaja en el CERN (Suiza) propone un nueva forma de gestionar la ingente cantidad de informacin de los proyectos del CERN. Se trata de una red de documentos hiperenlazados (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 WorldWideWeb se inclua un navegador web de interfaz grfica y un editor WYSIWYG (What You See Is What You Get - lo que ve en la pantalla es lo que obtiene como resultado). Dos aos despus, 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 McCool abandona el NCSA. Apache 0.2 vera 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 coleccin de parches aplicados al servidor NCSA, hasta que Robert Thau lanzara Shambhala 0.1, una reimplementacin casi completa que ya inclua la API para los mdulos que ha resultado ser tan exitosa. Nota: El nombre del proyecto Apache se debe a la filosofa de desarrollo y de organizacin. Al igual que la tribu de los apaches, los desarrolladores de Apache decidieron que su forma organizativa deba fundamentarse en los mritos 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 ingls a patchy server. Habra que esperar a enero de 1996 para poder disfrutar de la primera versin estable de Apache, la Apache 1.0, que inclua la carga de mdulos en tiempo de ejecucin a modo de pruebas adems de otras funcionalidades interesantes. Los primeros meses de ese ao fueron especialmente fructferos para el proyecto, ya que la versin 1.1 se public apenas dos meses despus contando con mdulos de autentificacin contra bases de datos (como MySQL). Desde entonces hasta la actualidad, los hitos ms grandes del proyecto han sido la total conformidad con el estndar HTTP 1.1 (incluido en abril de 1997 en Apache 1.2), la inclusin de la plataforma Windows NT (que comenz ya en julio de 1997 con las versiones en pruebas de Apache 1.3), la unificacin de los archivos de configuracin en uno solo (habra que esperar a octubre de 1998 ya Apache 1.3.3 para ello) y el lanzamiento, todava en pruebas, de la siguiente generacin 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.

9.5.2. Desarrollo de Apache

El servidor HTTP Apache es el proyecto central dentro de los muchos que gestiona la Apache Software Foundation. El diseo modular de Apache ha permitido que exista una serie de proyectos satlite -algunos incluso ms grandes en tamao que el propio Apachealrededor de Apache. De esta forma, el servidor HTTP Apache contiene el ncleo del sistema con las funcionalidades bsicas, mientras las funcionalidades adicionales las aportan los diferentes mdulos. Los mdulos ms conocidos son mod_perl (un intrprete del lenguaje de guin Perl empotrado en el servidor web) y Jakarta (un potente servidor de aplicaciones). En los siguientes prrafos, se va a describir solamente el proceso de desarrollo seguido para el servidor HTTP, sin tener en cuenta los dems mdulos, que pueden tener modelos parecidos o no. 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 ms de seis meses. Despus 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 evolucin del servidor web y, por tanto, las decisiones puntuales de desarrollo en cada momento. Hay que diferenciar al Apache Group del ncleo de desarrolladores (core group) activo en cada momento. El carcter voluntario de la mayora 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 aqullos que en un espacio de tiempo pueden ocuparse de las tareas en Apache. En lneas generales, las decisiones que han de tomar los desarrolladores pertenecientes al ncleo se limitan a votar la inclusin de cdigo -aunque esto se reserve en realidad slo para grandes cambios- y para cuestiones de diseo. Por otra parte, en general suelen tener derecho de escritura en el repositorio CVS, por lo que sirven como puerta de entrada del cdigo asegurando que sea correcto y su calidad.

9.5.3. Radiografa de Apache


Las cifras que se exponen a continuacin corresponden a la versin del servidor HTTP Apache tal y como se poda descargar del servidor CVS del proyecto Apache el 18 de abril de 2003. No se han tenido en cuenta ninguno de los numerosos mdulos con los que cuenta el proyecto Apache. Como se puede observar, Apache es un proyecto relativamente pequeo en comparacin con los dems casos de estudios considerados en este captulo. Aunque se ha comentado con anterioridad en este captulo, es importante hacer hincapi en la modularidad de Apache que permite precisamente esto: que el ncleo sea pequeo y manejable. El repositorio CVS del proyecto Apache que contiene el ncleo del servidor web y muchos mdulos adicionales alberga en total ms de cuatro millones de lneas de cdigo fuente, una cifra ligeramente inferior a proyectos como KDE y GNOME. La versin 1.3 de Apache contaba con poco ms de 85.000 lneas de cdigo fuente, una cifra que segn el modelo COCOMO requerira un esfuerzo de desarrollo de 20

desarrolladores a tiempo completo en media durante un ao y medio. El coste total del proyecto rondara entonces los cuatro millones de dlares. En la elaboracin del servidor web de Apache se cuentan hasta 60 commiters diferentes, mientras que el nmero de desarrolladores que han aportado se calcula que ronda los 400. Tabla 9-9. Anlisis de Apache Pgina Web Inicio del proyecto Licencia Versin analizada Lneas de cdigo fuente Nmero de ficheros Estimacin de coste Estimacin de tiempo de ejecucin Estimacin de nmero medio de desarrolladores Nmero aproximado de desarrolladores Herramientas de ayuda al desarrollo http://www.apache.org 1995 Apache Free Software License 2.2.4 225.065 2.807 7.971.958 $ 2,52 aos (30,27 meses) 23,4 60 commiters (400 desarrolladores) CVS, listas de correo, sistema de notificacin de errores

Apache 1.3 est escrito casi ntegramente en el lenguaje C, siendo la presencia de otros lenguajes de programacin escasa, sobre todo si tenemos en cuenta que la gran mayora de las lneas escritas en el segundo lenguaje, shell, corresponden a ficheros de configuracin y de ayuda a la compilacin. Tabla 9-10. Lenguajes de programacin utilizados en Apache Lenguaje de programacin Lneas de cdigo Porcentaje C Shell Perl Awk 208866 12796 1649 874 92,8% 5,69% 0,73% 0,39%

Estado actual Empresas Estudios ms significativos

El servidor HTTP (Hypertext Transfer Protocol) Apache, es un software libre y de cdigo abierto para las plataformas Windows, Mac OS X y UNIX (GNU, BSD, etc), en la cual se hace realidad y se implementa el protocolo HTTP 1.1 y la nocin de sitios virtuales. Apache, el servidor web escogido por excelencia, calidad de servicios, robustez y estabilidad hacen que da a da usuarios y servidores reiteren su confianza y renueven la eleccin a este servicio. Historia de Apache Para comenzar con la historia de Apache, nos remontamos a febrero del 1995, y fue en esta cronologa en donde el grupo Apache comienza su desarrollo, el cual inicialmente se bas en el cdigo del popular NCSA HTTPd 1.3. Fueron Brian Behlendorf y Cliff Skolnick quienes a travs de una lista de correo coordinaron el trabajo, establecieron y consolidaron el grupo de desarrollo de Apache, y es lo que hoy conocemos como la Apache Software Fundation. Cabe aclara que el desarrollo del Servidor Web Apache inicialmente fue para las plataformas UNIX, pero como gran desafo se comenz a desarrollar un proyecto de migracin a las diferentes plataformas que hoy conocemos, gracias al trabajo inmensurable de toda una comunidad de desarrolladores que aportaron sus parches, reportando errores y haciendo el esfuerzo de corregirlos.

Hoy en da podemos mencionar a Apache como uno de los mayores xitos alcanzados por un grupo comunitario de desarrollo, adoptando una filosofa libre de conocimiento y distribucin, y por que no decir que muchas veces de la mano de Apache y su poderoso servidor web grandes, medianas y pequeas empresas optaron por escoger servidores GNU/Linux en sus oficinas, es por ello que este logro tambin es muy reconocido, ya que va de la mano junto a su filosofa de comunidad y colaboracin.

En cuanto a las caractersticas que posee Apache y que la llevo al xito en la insercin y utilizacin en mbitos empresariales, tecnolgicos y educativos: 1. Fundamentalmente corre sobre una multitud de plataformas y Sistemas Operativos. 2. Apache ofrece tecnologa libre y de cdigo abierto, otorgndole una transparencia y dando la posibilidad de conocer que es lo que realmente estamos instalando. 3. Apache es un servidor Web altamente configurable y de diseo modular, capaz de ampliar su funcionalidad y calidad de servicios. 4. Apache trabaja en conjunto con gran cantidad de Lenguajes de Programacin interpretados como PHP (PHP Hypertext Pre-processor), Perl, soporte con CGI (Common Gateway Interface), Java, JSP (Java Server Pages) y otros lenguajes de script, el complemento ideal para los sitios web dinmicos que vemos en la actualidad. 5. Es posible configurar y personalizar cada uno de los mensajes de error que se pueden producir por la utilizacin del servidor. 6. Contar con los archivos Log, en donde registra gran cantidad de informacin global del sistema, errores producidos en un determinado tiempo, en la cual estos archivos son de gran importancia para los administradores de sistemas y pueden influenciar de alguna manera las polticas de seguridad debido a la gran cantidad de informacin que contiene. 7. Otra particularidad propia de Apache y que esta muy ligada a su pensamiento y filosofa libre, es que al ser tan popular y utilizado, es posible encontrar gran cantidad de documentos, ejemplos y ayuda en internet en todos los idiomas. Tal y como dijimos anteriormente Apache fue desarrollado altamente modular por tal motivos contamos con una gran cantidad de modulos escritos y que aportan al complemento y la expansin funcional de este Servidor. Entre los mdulos ms conocidos tenemos:

mod_ssl Brindando comunicaciones seguras va SSL (Secure Sockets Layer) y TLS (Transport Layer Security). mod_rewrite Conocido tambin como reescritura de direcciones o URL, sirven para reescribir URL dinmicas y transformarlas en estticas. mod_dav Con soporte para el protocolo WebDav. mod_auth_ldap Permitiendo autenticar usuarios con la ayuda de LDAP (Lightweight Directory Access Protocol) mod_perl Soporte para el lenguaje de programacin Perl. mod_php Soporte para el lenguaje de programacin PHP. mod_python Soporte para los sitios dinmicos realizados en Python. mod_ruby Soporte para el lenguaje de programacin Ruby. mod_mono Soporte para el proyecto MONO, la implementacin .NET en GNU/Linux.

Como todo gran proyecto de software y en especial como es el de Apache, cuenta con un sitio Web Oficial del proyecto, en donde podemos encontrar por sobre todas las cosas una

gran cantidad de informacin y documentacin traducida en varios idiomas. Entre tantas cosas podemos ver, como instalar, configurar y dejar totalmente funcional nuestro servidor web, conocer ms acerca de los mdulos, etc.

Los requerimientos mnimos del sistema que debemos respetar por lo menos para esta ltima versin estable 2.2.2, con respecto al espacio en Disco necesitamos tener disponible al menos 50 MB, si bien Apache ocupa aproximadamente de 10 MB necesitamos reservar y ser precavidos para futuras expansiones de funcionalidades. Si hablamos de Apache en la plataforma GNU/Linux necesitamos tener pre instalado el compilador ANSI-C conocido como GCC (Compilador GNU C) entre las tantas opciones que podemos tener para poder compilar el cdigo fuente. Otra manera de instalar Apache, es dependiendo de la distribucin GNU/Linux y los diferentes archivos pre compilados que existan, de la misma manera es para la plataforma Windows. Con esto estas caractersticas podremos tener instalado en pocos minutos nuestro servidor Web Apache. Como bien se sabe, en la parte de la configuracin siempre se lleva a cabo a travs de archivos de textos planos totalmente documentados y comentados, mostrando adems ejemplos de algunos parmetros vlidos, y obviamente al momento de la instalacin la configuracin que reside en la misma es considerada y llamada por defecto, con algunos parmetros deshabilitados y la suficiente configuracin para que el servidor ya est en condiciones de ser activado. Al ser un servicio de sistema realmente muy importante, solo los usuarios autorizados son los nicos capaces de controlar el funcionamiento del mismo y la calidad de sus servicios,

las visitas a los archivos de configuracin y de seguridad. Estos son los usuarios que estarn autorizados para comenzar, reiniciar o apagar el servicio Web. Por ltimo, realmente este servidor web marc una tendencia muy fuerte en el mercado de internet, la construccin de pginas web, el concepto de la definicin de la Web 2.0, el desarrollo masivo de aplicaciones libres y por sobre todas las cosas la difusin de una comunidad atrada por una filosofa. En estos ltimos aos se dieron estadsticas muy favorables al gran uso de este servicio en la gran mayora de los servidores que encontramos en internet, nuevamente mostrando el xitos de un software que por sobre todas las cosas es software libre, open source y multiplataforma.

Servidor HTTP Apache


De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda

Apache

Desarrollador

Apache Software Foundation httpd.apache.org

Informacin general Robert McCool1 19951

Diseador

Lanzamiento inicial

ltima versin estable

2.4.3 (info)
21 de agosto de 2012; hace 6 meses

Gnero

Servidor web

Programado en

Sistema operativo

Multiplataforma

Licencia

Licencia Apache 2.0

En espaol

El servidor HTTP Apache es un servidor web HTTP de cdigo abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.12 y la nocin de sitio virtual. Cuando comenz su desarrollo en 1995 se bas inicialmente en cdigo del popular NCSA HTTPd 1.3, pero ms tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quera que tuviese la connotacin de algo que es firme y enrgico pero no agresivo, y la tribu Apache fue la ltima en rendirse al que pronto se convertira en gobierno de EEUU, y en esos momentos la preocupacin de su grupo era que llegasen las empresas y "civilizasen" el paisaje que haban creado los primeros ingenieros de internet. Adems Apache consista solamente en un conjunto de parches a aplicar al servidor de NCSA. En ingls, a patchy server (un servidor "parcheado") suena igual que Apache Server. El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. Apache presenta entre otras caractersticas altamente configurables, bases de datos de autenticacin y negociado de contenido, pero fue criticado por la falta de una interfaz grfica que ayude en su configuracin. Apache tiene amplia aceptacin en la red: desde 1996, Apache, es el servidor HTTP ms usado. Alcanz su mxima 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 aos. (Estadsticas histricas y de uso diario proporcionadas por Netcraft3 ). La mayora de las vulnerabilidades de la seguridad descubiertas y resueltas tan slo 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 malvolos

en las disposiciones de recibimiento compartidas que utilizan PHP como mdulo de Apache.

ndice
[ocultar]

1 Ventajas 2 Mdulos 3 Uso 4 Configuracin 5 Licencia 6 Vase tambin o 6.1 Otros proyectos de la Apache Software Foundation 7 Referencias 8 Enlaces externos

[editar] Ventajas

Modular Cdigo abierto Multi-plataforma Extensible Popular (fcil conseguir ayuda/soporte)

[editar] Mdulos
La arquitectura del servidor Apache es muy modular. El servidor consta de una seccin core y diversos mdulos que aportan mucha de la funcionalidad que podra considerarse bsica para un servidor web. Algunos de estos mdulos son:

mod_ssl - Comunicaciones Seguras va TLS. mod_rewrite - reescritura de direcciones (generalmente utilizado para transformar pginas dinmicas como php en pginas estticas html para as engaar a los navegantes o a los motores de bsqueda en cuanto a cmo fueron desarrolladas estas pginas). mod_dav - Soporte del protocolo WebDAV (RFC 2518). mod_deflate - Compresin 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 pginas dinmicas en Java (servlets y JSP).

El servidor de base puede ser extendido con la inclusin de mdulos externos entre los cuales se encuentran:

mod_cband - Control de trfico y limitador de ancho de banda. mod_perl - Pginas dinmicas en Perl. mod_php - Pginas dinmicas en PHP. mod_python - Pginas dinmicas en Python. mod_rexx - Pginas dinmicas en REXX y Object REXX. mod_ruby - Pginas dinmicas en Ruby. mod_aspdotnet - Pginas dinmicas en .NET de Microsoft (Mdulo retirado). mod_mono - Pginas dinmicas en Mono mod_security - Filtrado a nivel de aplicacin, para seguridad.

[editar] Uso
Apache es usado principalmente para enviar pginas web estticas y dinmicas en la World Wide Web. Muchas aplicaciones web estn diseadas asumiendo como ambiente de implantacin a Apache, o que utilizarn caractersticas 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 programacin PHP/Perl/Python (y ahora tambin 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 disposicin 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 raz de documentos de Apache, desde donde pueden ser compartidos. Los programadores de aplicaciones web a veces utilizan una versin local de Apache con el fin de previsualizar y probar cdigo 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 anfitrin de otras aplicaciones como Zeus Web Server. Algunos de los ms grandes sitios web del mundo estn ejecutndose sobre Apache. La capa frontal (front end) del motor de bsqueda Google est basado en una versin modificada de Apache, denominada Google Web Server (GWS). Muchos proyectos de Wikimedia tambin se ejecutan sobre servidores web Apache.

[editar] Configuracin
La mayor parte de la configuracin se realiza en el fichero apache2.conf o httpd.conf, segn el sistema donde est corriendo. Cualquier cambio en este archivo requiere reiniciar el servidor, o forzar la lectura de los archivos de configuracin nuevamente.

[editar] Licencia
Artculo principal: Apache License.

La licencia de software bajo la cual el software de la fundacin Apache es distribuido es una parte distintiva de la historia de Apache HTTP Server y de la comunidad de cdigo abierto. La Licencia Apache permite la distribucin de derivados de cdigo abierto y cerrado a partir de su cdigo fuente original. La Free Software Foundation no considera a la Licencia Apache como compatible con la versin 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:
Este es software libre pero es incompatible con la GPL. La Apache Software License es incompatible con la GPL porque tiene un requerimiento especfico que no est incluido en la GPL: tiene ciertos casos de terminacin de patentes que la GPL no requiere. No consideramos que dichos casos de terminacin de patentes son inherentemente una mala idea, pero a pesar de ello son incompatibles con la GNU GPL.4

Sin embargo, la versin 3 de la GPL incluye una provisin (Seccin 7e) que le permite ser compatible con licencias que tienen clusulas de represalia de patentes, incluyendo a la Licencia Apache. El nombre Apache es una marca registrada y puede ser slo utilizada con el permiso expreso del dueo de la marca.5

.2. Caractersticas
Apache es un servidor web flexible, rpido y eficiente, continuamente actualizado y adaptado a los nuevos protocolos (HTTP 1.1). Entre sus caractersticas destacan:

Multiplataforma Es un servidor de web conforme al protocolo HTTP/1.1

Modular: Puede ser adaptado a diferentes entornos y necesidades, con los diferentes mdulos de apoyo que proporciona, y con la API de programacin de mdulos, para el desarrollo de mdulos especficos. Basado en hebras en la versin 2.0 Incentiva la realimentacin de los usuarios, obteniendo nuevas ideas, informes de fallos y parches para la solucin de los mismos. Se desarrolla de forma abierta Extensible: gracias a ser modular se han desarrollado diversas extensiones entre las que destaca PHP, un lenguaje de programacin del lado del servidor.

Apache 2.2: servidor web


1 Introduccin
Apache 2.2 es un servidor web de software libre desarrollado por la Apache Software Foundation (http://www.apache.org/) cuyo objetivo es servir o suministrar pginas web (en general, hipertextos) a los clientes web o navegadores que las solicitan. En el artculo presentamos las principales caractersticas y funcionalidades de este potente servidor web, en su versin 2.2 y en entorno Ubuntu.

2 Apache 2.2
La arquitectura utilizada es cliente/servidor, es decir, el equipo cliente hace una solicitud o peticin al equipo servidor y ste la atiende. En el equipo cliente se ejecuta una aplicacin llamada 'navegador o cliente web' que:

Sirve de interfaz con el usuario: atiende sus peticiones, muestra los resultados de las consultas y proporciona al usuario un conjunto de herramientas que facilitan su comunicacin con el servidor. Se comunica con el servidor web: transmite las peticiones de los usuarios.

El protocolo utilizado para la transferencia de hipertexto es HTTP (HiperText Transfer Protocol) que est basado en el envo de mensajes y establece el conjunto de normas mediante las cuales se envan las peticiones de acceso a una web y la respuesta de esa web. HTTP es un protocolo sin estado, es decir, no recuerda nada relativo a conexiones anteriores a la actual. La conexin slo tiene la duracin correspondiente a la transmisin de la pgina solicitada si la encuentra, y si no la encuentra devuelve un cdigo de error.

El servidor web Apache 2.2 proporciona contenidos al cliente web o navegador como: 1. Pginas estticas: es el uso ms generalizado que se hace de un servidor web. De esta forma se transfieren archivos HTML, imgenes, etc y no se requiere un servidor muy potente en lo que al hardware se refiere. 2. Pginas dinmicas: la informacin que muestran las pginas que sirve Apache cambia ya que se obtiene a partir de consultas a bases de datos u otras fuentes de datos. Son, por tanto, pginas con contenido dinmico, cambiante. Su curioso nombre hace referencia a sus orgenes. Cuando el proyecto inicial (Centro Nacional de Actividades de Supercomputacin, NCSA, Universidad de Illinois) fue abandonado por su principal desarrollador, Rob McCool, diferentes webmasters comenzaron a desarrollar 'parches' para el cdigo fuente de este servidor inicial y mediante el correo electrnico sincronizaban sus aportaciones. De esta forma apareci el proyecto Apache, cuyo nombre se debe a: A PAtCHy server. La primera versin de Apache es la 0.6 en 1995, y en la actualidad la versin disponible es la 2.2 (http://httpd.apache.org/docs/2.2/en/).

3 Instalacin. Arranque y parada.


La instalacin la realizamos desde el entorno grfico utilizando la herramienta Synaptic (Sistema -> Administracin -> Gestor de paquetes Synaptic). Marcamos para instalar los paquetes siguientes: apache2, apache2.2-common, apache2mpm-worker y apache2-utils. Aplicamos los cambios y hacemos un seguimiento de la instalacin desplegando la pestaa Detalles. La versin que se instala es la 2.2.3.

Si todo ha ido bien al abrir el navegador web Firefox (Aplicaciones -> Internet -> ) e ir a http://localhost deber aparecer una pgina indicando que el servidor Apache2 est instalado y ejecutndose. Si se dispone de un nombre de dominio cualificado que se puede resolver mediante DNS o localmente con el archivo /etc/hosts, podemos utilizarlo para invocar al servidor desde el cliente web. Podemos hacer una comprobacin de que realmente est ejecutndose el servidor web Apache 2.2 ejecutando en una terminal la orden siguiente:
#ps axl | grep apache2

Debern aparecer los procesos lanzados por Apache y que estn escuchando en el puerto 80 las peticiones de los clientes. Desde el entorno grfico ir a Sistema -> Administracin -> Monitor del sistema

Por defecto, al entrar en esta aplicacin se muestran los procesos correspondientes al usuario que la ha lanzado. Para ver todos los procesos del sistema abrir la lista desplegable 'Ver' y seleccionar la opcin correspondiente. Las opciones disponibles sobre el proceso seleccionado se muestran pulsando el botn derecho del ratn estando sobre dicho proceso. Para arrancar/parar/reiniciar/forzar a Apache ejecutar como root la orden:
#/etc/init.d/apache2 start/stop/restart/force-reload

La diferencia bsica entre las opciones restart y force-reload es que con restart se est reiniciando completamente el servicio, sin embargo con force-reload slo se est obligando a Apache a releer sus archivos de configuracin.

4 Configuracin bsica
El archivo de configuracin de Apache 2.2 en Ubuntu es /etc/apache2/apache2.conf. Es un archivo muy extenso en el que todas las directivas disponibles estn explicadas, incluyendo ejemplos de utilizacin. Contiene una directiva por lnea y no se hace distincin entre maysculas y minsculas. Las lneas que comienzan con el carcter '#' se consideran comentarios. En http://httpd.apache.org/docs/2.2/en/mod/quickreference.html existe una gua completa de las directivas disponibles. Para el artculo slo se van a comentar aquellas directivas que se utilizen en los ejemplos de configuracin.

En el archivo de configuracin existen secciones de configuracin que agrupan directivas y que pueden ser de dos tipos: 1. Las que se evalan para cada peticin que se recibe y se aplican las directivas que se incluyen. Dentro de este grupo estn<Directory>, <Files>, <Location>, <VirtualHost> entre otras. Las secciones <Directory> y <Files> estn relacionadas con el sistema de archivos y <Location> est relacionada con el espacio web. 2. Las que se evalan slo al inicio o reinicio del servidor, como <IfDefine> e <IfModule>. Si al iniciar el servidor las condiciones son las adecuadas, las directivas que incluyen estas secciones se aplicarn a todas las peticiones que se reciban. Como ejemplo se incluye esta seccin Directory tomada del archivo /etc/apache2/apache2.conf
<Directory /var/www>

Order Allow,Deny Allow from dominio.com Deny from pc01.dominio.com


</Directory>

Que indica que el directorio /var/www/ (origen por defecto de los contenidos web) est configurado para permitir el acceso a cualquier mquina del dominio dominio.com excepto al host pc01. Dentro del directorio /etc/apache2/ existen otros archivos y directorios de configuracin:

conf.d/: contiene archivos de configuracin asociados a mdulos especficos. Los archivos de este directorio son incluidos en /etc/apache2/apache2.conf: Include /etc/apache2/conf.d

Por ejemplo, se puede crear un archivo dentro de este directorio llamado alias que contenga todos los alias creados por el administrador. Se utilizan los Alias para asociar direcciones URL con directorios que no pertenecen al directorio origen por defecto (/var/www/).

httpd.conf: archivo vaco. No se usa desde Edubuntu pero se mantiene por compatibilidad con otras versiones de Apache2 para otros sistemas.

Mods-available/: este directorio contiene una serie de archivos .load y .conf.

- EL archivo .load contiene directivas de configuracin de Apache necesarias para la carga del mdulo en cuestin. Ejemplo: userdir.load - El archivo .conf contiene directivas de configuracin necesarias para la utilizacin del mdulo en cuestin. Ejemplo: userdir.conf

mods-enabled/: para activar un mdulo para Apache2 es necesario crear un enlace simblico en este directorio a los archivos .load asociados con el mdulo en mods-available/. Tambin para .conf si existe. Por defecto la instalacin de Apache2 deja 'activados' un grupo de mdulos. ports.conf: directivas de configuracin que indican puertos y direcciones IP donde Apache2 escucha peticiones. Sites-available/: similar a mods-available/ excepto que contiene archivos de configuracin para diversos hosts virtuales que podran ser utilizados en Apache2. 'default' es el host por defecto. Sites-enabled/: similar a mods-enabled/ y contiene enlaces simblicos a sitios de sites-available/ que el administrador ha activado.

5 Utilizacin de mdulos
Uno de los principales motivos por los que se utilizan los mdulos en Apache2 es que no todas las instalaciones de servidores web necesitan las mismas funcionalidades. Al modularizar cada servidor web incluye slo aquello que necesita consiguiendo que el servicio sea mas ligero. Existen dos tipos de mdulos: 1. Los que se compilan de forma "esttica" cada vez que se compila Apache2. 2. Los que se cargan dinmicamente. Esto permite que Apache2 cambie dinmicamente los mdulos cada vez que se inicia, sin necesidad de recompilar todo el programa de nuevo. Esta opcin se denomina DSO o Dynamic Shared Object (Objeto Compartido Dinmico) y los archivos correspondientes a estos mdulos tienen extensin .so. El mecanismo para activar un mdulo de Apache2 disponible en el directorio /etc/apache2/mods-available/ consiste en ejecutar como root (o un usuario sudo) la orden a2enmod sobre l. #a2enmod userdir

Module userdir installed; run /etc/init.d/apache2 force-reload to enable. #/etc/init.d/apache2 force-reload En concreto uno de los mdulos mas utilizados es el que acabamos de activar, userdir, cuya misin es permitir que cualquier usuario del servidor pueda crear su espacio web en un directorio o carpeta dentro de su cuenta. Es decir, permite asociar sitios con los usuarios del sistema. La directiva UserDir disponible para este mdulo indica el nombre del subdirectorio, dentro del directorio home de cada usuario, donde estarn los archivos HTML que podrn ser servidos por Apache2. Por defecto el subdirectorio es public_html. UserDir public_html Esta directiva ir incluida en el archivo de configuracin por defecto para este mdulo /etc/apache2/mods-available/userdir.conf: <IfModule mod_userdir.c> UserDir public_html UserDir disabled root <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory> </IfModule> La seccin <IfModule> anterior:

Indica que el directorio donde estarn los archivos html de los usuarios es public_html (podemos cambiar el nombre). El usuario root est desactivado (por seguridad). Si no estuviese desactivado accediendo a servidor.apache2.com/~root se podra llegar al directorio root. La seccin <Directory> est indicando que los home de todos los usuarios podrn ser listados sus contenidos (Options Indexes). Es decir, cualquier usuario cuyo

home contenga el directorio public_html podr publicar su contenido en el servidor Apache2 correspondiente. Si usuario1, usuario2,... son usuarios que tienen login en el sistema podemos poner el carcter '~' en los caminos de las URLs. Por ejemplo si escribimos: http://servidor.apache2.com/~usuario1 se accede al home del usuario usuario1 y no al directorio /var/www/ al que accederamos si pusisemos slo servidor.apache2.com. Si se quiere acceder a la pgina web sin necesidad de utilizar el carcter '~' habr que definir un alias en /etc/apache2/conf.d/alias. alias /usuario1/ /home/usuario1/public_html/

6 Archivos .htaccess
Los archivos .htaccess permiten a los usuarios que no tienen permisos modificar la configuracin y as poder ejercer algn control sobre el comportamiento de su parte del servidor Apache2. Las directivas que modifican el comportamiento se colocan en un archivo .htaccess situado en el directorio al que tiene que afectar, junto a todos sus subdirectorios. El archivo .htaccess se carga cada vez que se solicita un documento. Las modificaciones introducidas no requieren reiniciar el servidor web. Para que el servidor haga caso de los archivos .htaccess hay que incluir la directiva AllowOverride (permite sobreescritura) dentro de la seccin <Directory> que interese. Si se quiere deshabilitar completamente la utilizacin de estos archivos hay que incluir la directiva:
AllowOverride None

La directiva AccessFileName permite modificar el nombre de este archivo, cuyo valor por defecto es .htaccess. En el archivo de configuracin /etc/apache2/apache2.conf encontramos:
AccessFileName .htaccess

Los motivos fundamentales para no permitir (o no recomendar) la utilizacin de archivos .htaccess son los siguientes:

1. El primero es de funcionamiento. Cuando se activa AllowOverride para permitir el uso de archivos .htaccess, Apache2 mirar en cada directorio buscando estos archivos. De esta forma se buscan tanto si existen como si no y entran en funcionamiento tanto si se utilizan como si no. Adems Apache2 buscar archivos .htaccess en todos los directorios de niveles superiores realizando un conjunto de accesos al sistema de archivos adicionales que relentizan su funcionamiento. 2. El segundo es de seguridad. Se est permitiendo que los usuarios modifiquen la configuracin del servidor y pueden ser cambios de los que no se tiene control.

7 Hosts virtuales
Trabajar con Hosts Virtuales consiste en ejecutar ms de un sitio web en el mismo servidor. Mediante los hosts virtuales, Apache2 permite la posibilidad de alojar varios dominios en una sola mquina. De esa forma, cuando una peticin entra en el servidor Apache2 desde un navegador web a travs de una IP dada, Apache2 comprueba el nombre de dominio que se est solicitando y muestra el contenido asociado a dicho nombre de dominio. La utilizacin de hosts virtuales tiene como ventajas la versatilidad para crear diferentes sitios web configurables; el precio, ya que se necesita slo una mquina para alojar varios servidores web; una configuracin del sistema sirve para todos los servidores web; se actualiza slo una vez y no requiere ningn software ni hardware adicional. Apache soporta dos tipos de hosts virtuales: 1. Hosts virtuales basados en nombres Permiten alojar varios nombres de host (o dominios) en una misma mquina (IP). Todos los hosts virtuales que comparten la misma IP deben declararse mediante la directiva NameVirtualHost. 2. Hosts virtuales basados en IP Una mquina responde de diferente manera a diferentes direcciones IP. Es decir, tenemos mltiples IPs asignadas al sistema y queremos que cada una de ellas soporte un sitio web. Para la definicin de hosts virtuales se utiliza la seccin <VirtualHost> y en ella se incluyen las directivas que se aplican a un determinado host virtual. Como mnimo debe incluir la directiva DocumentRoot y ServerName.

7.1 Host virtual basado en nombre Para usar hosts virtuales basados en nombres se debe especificar en el servidor qu direccin IP se va a usar mediante la directiva NameVirtualHost.
Si escribimos:

NameVirtualHost * el '*' indica que el servidor acepta todas las solicitudes entrantes. Cmo sabe Apache2 si una peticin va dirigida a uno u otro host virtual? La respuesta est en las cabeceras del HTTP/1.1. Cuando un navegador enva una peticin al servidor usando el protocolo HTTP/1.1 enva una cabecera del tipo host: nombre_de_un_host con la que Apache2 puede diferenciar las peticiones de los distintos hosts virtuales. El siguiente paso es crear un bloque <VirtualHost> para cada host diferente que se quiera alojar en el servidor. <VirtualHost * >
Con la directiva <NameVirtualHost *> se le est diciendo a Apache2 que se activan los hosts virtuales por nombre para la IP dada en ServerName (externo), y los siguientes grupos <VirtualHost *>...</VirtualHost> definen los hosts virtuales de nuestro servidor.

Dentro de cada grupo <VirtualHost> se necesitar como mnimo una directiva ServerName para indicar a qu host se sirve y una directiva DocumentRoot para indicar dnde estn los contenidos a servir dentro del sistema de archivos. Como ejemplo de utilizacin aadimos un host virtual a un servidor web ya existente. Suponemos que el servidor web existente (host virtual por defecto) dispone de su configuracin como host virtual en el archivo /etc/apache2/sites-available/default. Supongamos que ya se est sirviendo el dominio servidor.dominio.com y se quiere aadir el host virtual virtual.dominio.com, que apunta a la misma direccin IP. Para preparar el nuevo sitio virtual habr que: 1. Editar el archivo /etc/hosts y aadir la lnea siguiente (si no se est utilizando DNS): 192.168.1.1 virtual.dominio.com virtual

Si el aula dispone de servicio DNS se configura para que ambos dominios servidor.dominio.com virtual.dominio.com) apunten a la misma direccin IP. Esto se hace mediante el tipo de registro CNAME (nombre cannico).
2. Crear el directorio /var/www/virtual

3. Crear un archivo llamado index.html con el contenido: Servidor virtual virtual.dominio.com 4. Crear el archivo de configuracin para el nuevo sitio virtual que llamaremos 'virtual' con el contenido que se indica:
NameVirtualHost *

<VirtualHost *> ServerName virtual.dominio.com DocumentRoot /var/www/virtual <Directory /var/www/virtual> Options FollowSymLinks AllowOverride None </Directory> </VirtualHost>
5. 6. Activar el sitio ejecutando la orden: #a2ensite virtual 7. 8. Reiniciar el servidor para que lea los cambios realizados en el archivo de configuracin. #/etc/init.d/apache2 reload 7.

Ir al navegador y probar la URL virtual.dominio.com. Comprobar que se visualiza el contenido de index.html para ese sitio virtual.
1

8. Ejecutar la siguiente orden para comprobar los hosts virtuales configurados : #apache2 -S

7.2 Host virtual basado en IP

Si se tiene un sistema que dispone de varias direcciones IP y se quiere que cada una de ellas soporte un sitio web se deber crear una seccin virtual para cada direccin IP. En este caso los servidores virtuales definidos reciben las solicitudes en funcin de la IP requerida, no del nombre del servidor. Si no se dispone de un equipo con varias interfaces de red se puede probar creando alias de la tarjeta disponible. Para ello hay que editar el archivo /etc/network/interfaces y aadir la porcin de cdigo siguiente adecuando los datos al aula: auto eth0:0 iface eth0:0 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.100 Se est creando un alias de la tarjeta ethernet eth0 y se le asigna la IP 192.168.1.2. Se supone que la tj eth0 tiene IP 192.168.1.1. A partir de este momento el sistema ya dispone de 2 interfaces de red, una real y un alias que permite definir un host virtual alojado en el mismo servidor web, adems del dominio inicial servidor.dominio.com. La configuracin para el host virtual virtual.dominio.com es la siguiente y podra ser incluida tanto en el archivo default como en un archivo diferenciado dentro de sites-available: <VirtualHost 192.168.1.2> ServerName virtual.dominio.com DocumentRoot /var/www/virtual ErrorLog /var/log/apache2/virtual-error.log CustomLog /var/log/apache2/virtual-access.log combined </VirtualHost>

Tambin es posible configurar hosts virtuales mixtos, es decir basados en nombres y en IP. 7.3 Host virtual basado en puertos Vamos a suponer que, para una misma direccin IP, el servidor web quiere mostrar diferente contenido segn el puerto en el que se realiza la conexin HTTP. Para ello habr que indicar en la seccin <VirtualHost> y en NameVirtualHost el puerto asociado y todos los puertos utilizados para atender peticiones deben estar Listen. NameVirtualHost 192.168.1.1:80 <VirtualHost 192.168.1.1:80> ServerName servidor.dominio.com DocumentRoot /var/www/servidor80 </VirtualHost> <VirtualHost 192.168.1.1:443> ServerName servidor.dominio.com DocumentRoot /var/www/servidor443 </VirtualHost> En este caso el acceso al servidor web, si se llama igual, debe incluir el puerto por el cual se realiza la peticin HTTP. En la URL habr que escribir:
http://servidor.dominio.com:443/

Si se utiliza un puerto diferente al 80 (por defecto) hay que revisar el archivo /etc/apache2/ports.conf e incluir las lneas Listen correspondientes a los nuevos puertos de escucha de Apache2.

8 Autenticacin y control de acceso


Respecto al proceso de Autenticacin de usuarios en Apache 2 existen dos mtodos:

Bsico o Simple: el usuario en el navegador web introduce su login o nombre de usuario y contrasea y se envan al servidor sin cifrar. Digest: el usuario en el navegador web introduce su login y contrasea y se envan al servidor cifrados.

Estos dos mtodos slo autentican al usuario cuando intenta acceder a un recurso. Pero en ninguno de los dos mtodos los datos que a continuacin se envan del navegador web al servidor o viceversa van cifrados. Son mtodos que controlan el acceso a los recursos, pero no protegen la informacin intercambiada en la comunicacin cliente-servidor una vez se ha comprobado que el acceso es vlido. 8.1 Autenticacin bsica El mdulo que controla este mtodo de autenticacin es mod_auth_basic y tiene la ventaja de que est soportado por todos los navegadores web. Por el contrario, tiene el inconveniente de que el login y la contrasea no van cifradas del navegador web al servidor. En el archivo /etc/apache2/sites-available/default, o en el archivo relativo al host virtual correspondiente, habr que aadir un bloque <Directory>...</Directory> por cada directorio que se quiera proteger: <Directory "/var/www/privado"> AuthType Basic AuthName "Directorio privado" AuthUserFile /etc/apache2/passwd/.htpasswd Require valid-user </Directory> Donde:

AuthName: nombre del dominio de autenticacin. Define el conjunto de recursos que estarn sujetos a los mismos requisitos de autenticacin. Tambin es el texto que aparecer en la ventana que pide el usuario y la clave. AuthType: tipo de autenticacin. Basic: la contrasea se negocia sin encriptar Digest: la contrasea se negocia encriptada

AuthUserFile: ubicacin del archivo de texto que contendr los nombres de usuario y contraseas usadas en la autenticacin HTTP bsica. Se suele llamar .htpasswd. Previamente hay que crear el directorio /etc/apache2/passwd/. Require: usuarios que tienen acceso a los recursos especificados. Opciones disponibles:

valid-user: cualquier usuario incluido en el archivo de contraseas .htpasswd. user <lista de usuarios>: lista de usuarios de .htpasswd, separados por espacios, que pueden acceder.

Satisfy: al utilizar esta directiva determina si se deben cumplir todos los requisitos (All) o cualquiera (Any).

Para crear usuarios para el mtodo de autenticacin Bsico se utiliza la orden htpasswd.
#htpasswd -c /etc/apache2/passwd/.htpasswd nombre_usuario

La opcin -c permite crear el archivo .htpasswd con el primer usuario dado de alta, que adems no tiene porque ser un usuario existente en el sistema. Los permisos del archivo .htpasswd deben ser 644, es decir lectura y escritura para el dueo, que es root y lectura para el grupo y los otros. Para seguir dando de alta usuarios no hay que poner el argumento -c de lo contrario crear siempre de nuevo el archivo con slo el ltimo usuario incorporado. Los usuarios creados para Apache2 no tienen porque estar dados de alta en el sistema, y si existen no tienen porque tener la misma contrasea. Al ir a la URL http://servidor.dominio.com/privado/ aparece la ventana:

8.2 Autenticacin HTTP Digest El mdulo que controla este mtodo de autenticacin es mod_auth_digest. Tiene la ventaja de que el login y la contrasea van cifradas del navegador web al servidor. Por el contrario, tiene el inconveniente de que no est soportado por todos los navegadores web.

Lo primero que hay que hacer es activar dicho mdulo. Para ello:
#a2enmod auth_digest #/etc/init.d/apache2 force-reload

Utiliza MD5 (Message Digest Authentication) para generar un hash que es el que se transmite o enva al servidor. En el archivo /etc/apache2/sites-available/default habr que aadir un bloque <Directory>...</Directory> por cada directorio que queramos proteger: <Directory "/var/www/privado"> AuthName "Directorio privado" AuthType Digest AuthDigestDomain http://servidor.dominio.com/privado/ Donde: AuthName: indica el nombre del dominio de autenticacin (realm). AuthType: indica que el mtodo a usar es 'Digest'.> AuthDigestProvider: indica el soporte utilizado para la autenticacin. Por defecto es file (archivo). AuthDigestDomain: dominio protegido con autenticacin digest. AuthUserFile: indica donde se encuentra el archivo de contraseas que ahora llamamos .htdigest. La creacin de usuarios en el mtodo de autenticacin Digest requiere la orden htdigest.
#htdigest /etc/apache2/passwd/.htdigest zona_privada nom_usuario

El parmetro 'zona_privada' debe coincidir exactamente con el nombre del dominio de autenticacin dado en la directiva AuthName ya que, cuando se crea un usuario, se hace incluyndolo a un dominio de autenticacin concreto.

Si la directiva Require indica 'valid-user', se consideran usuarios vlidos slo los que pertenecen al dominio de autenticacin dado en AuthName y las contraseas slo pueden utilizarse en este dominio. En el ejemplo aadimos el usuario usuario1 al archivo de contraseas /etc/apache2/passwd/.htdigest. Si se utiliza el archivo .htdigest por primera vez y no existe, hay que incluir la opcin -c:
#htdigest -c /etc/apache2/passwd/.htdigest Directorio privado usuario1

En el archivo de configuracin /etc/apache2/sites-available/default hay que aadir un bloque <Directory>...</Directory> para el directorio que queremos proteger: Alias /privado /var/www/privado <Directory "/var/www/privado"> AuthType digest AuthName "Directorio privado" AuthUserFile /etc/apache2/passwd/.htdigest Require user usuario1 </Directory> Ir a la URL http://servidor.dominio.com/privado/ y aparece la ventana siguiente:

Como se puede observar la ventana de identificacin es igual a la anterior con la salvedad de que los datos enviados a travs de ella estn encriptados. 8.3 Control de acceso

Es posible permitir el acceso a los usuarios en funcin de la mquina desde la que hacen las solicitudes de informacin. En este caso se utilizan las directivas Allow y Deny que permiten y rechazan, respectivamente, el acceso en funcin del nombre o la direccin de la mquina desde la que se hace la solicitud. Relacionada con ellas est la directiva Order que indica a Apache2 en qu orden tiene que aplicar las directivas Allow y Deny. La sintaxis es:
Allow from

direccin

direccin: direccin IP o nombre de dominio completamente cualificado (o un nombre de dominio parcial). Se pueden dar varias direcciones o nombres de dominio. En el ejemplo siguiente primero se evala Deny (from all) y no se permite el acceso a ningn usuario. A continuacin se evala Allow que permite el acceso slo a usuarios de host.dominio1.com:
Order deny,allow Deny from all Allow from host.dominio1.com

Si se usa slo la directiva Allow (sin combinar con Deny) se permitira el acceso a usuarios de esa mquina y a cualquier otro usuario. Y lo que se quiere es dejar entrar slo a los de host.dominio1.com.

9 Analizador de logs awstats


Desde Edubuntu vamos a utilizar el analizador de accesos de Apache Awstats (Advanced Web Statistics) cuya pgina oficial es http://www.awstats.org Awstats soporta cualquier sistema operativo, ya que al estar escrito en Perl es suficiente que el servidor que lo va a interpretar tenga el mdulo correspondiente instalado. Puede generar estadsticas en 33 idiomas, entre los cuales se encuentran el castellano. Su funcionamiento se basa en:
la lectura de los archivos access.log de Apache2. a partir de estos archivos Awstats genera sus propios archivos con las estadsticas. Esta generacin se hace de forma peridica con un cron. para mostrar las estadsticas, Awstats lee los archivos que l ha generado y muestra los resultados como HTML esttico en un navegador.

9.1 Instalacin de awstats

La instalacin en Edubuntu es:


# apt-get install awstats

Los archivos y directorios que instala/crea son los siguientes: Archivos/Directorios


/usr/share/doc/awstats/

Descripcin Directorio donde se guardan archivos de ejemplo y ayuda. Archivo de idioma castellano. Es un archivo de texto. Directorio en el que se instalan los plugins que vienen por defecto con el paquete. Directorio donde se instalan los iconos que se van a utilizar para mostrar las estadsticas. Archivo que va a generar las estadsticas a partir de los logs del sistema. Escrito en Perl. Entrada de cron para actualizar las estadsticas peridicamente. Archivo de configuracin de Awstats.

/usr/share/awstats/lang/awstatses.txt /usr/share/awstats/plugins/

/usr/share/awstats/icon/

/usr/lib/cgi-bin/awstats.pl

/etc/cron.d/awstats

/etc/awstats/awstats.conf

9.2 Configuracin de awstats y funcionamiento El archivo de configuracin de awstats es /etc/awstats/awstats.conf.> Es importante comprobar que se tiene activado el mdulo cgid ya que es necesario para el funcionamiento de Awstats. A. Tipo de logs Hay que asegurarse de que el servidor Apache2 'logea' los accesos de manera combinada utilizando la siguiente directiva:
CustomLog /var/log/apache2/access.log combined

Por otro lado, tambin hay que asegurarse de que Apache2 hace los logs de la forma que necesitamos. Para ello hemos de comprobar que los logs tienen el siguiente formato:

servidor.dominio.com 192.168.0.1 - - [13/May/2007:16:45:52 +0200] "GET /webalizer HTTP/1.1" 200 94738 "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.7.10) Gecko/20050925 Firefox/2.0.0.6 (Ubuntu-feisty)"

que se corresponde con una entrada del archivo /var/log/apache2/access.log. Indicamos a Awstats el formato en que estn los logs mediante la directiva LogFormat: Valor 1 2 3 4 Descripcin
Apache2 'logea' los accesos de manera combinada (NCSA combined/XLF/ELF log format) Fomato de log de IIS (W3C log format) Formato de log nativo Webstar Formato de log nativo de Apache o Squid (NCSA common log format). Con LogFormat=4 algunos navegadores o sistemas operativos no pueden trabajar. Formato de log nativo de ISA server. Formato de log combinado de Lotus Notes

5 6

Comprobar las siguientes lneas en /etc/awstats/awstats.conf: LogFormat=1


LogFile="/var/log/apache2/access.log"

B. Idioma Awstats viene preconfigurado para mostrar los logs y estadsticas en ingls. Hay que cambiarlo a castellano. Los archivos de idioma han sido instalados en el directorio /usr/share/awstats/lang/. Comprobamos que en /etc/awstats/awstats.conf est disponible esta ruta que es donde debe buscar los archivos de idioma.
DirLang="/usr/share/awstats/lang"

Para que el idioma por defecto sea el castellano, hemos que sustituir el valor de la directiva Lang 'en' por 'es'.
Lang="es"

La pgina que se genera muestra en la parte superior izquierda unas banderas que permiten elegir el idioma que queramos que muestre la pgina. C. Imgenes Para que las imgenes que contiene la pgina que se va a generar se vean correctamente, hay que indicarle a Awstats donde estn ubicadas. La directiva DirIcons en /etc/awstats/awstats.conf contiene la ruta de las imgenes relativa a la ubicacin de la pgina web. Utilizamos los alias del servidor Apache2. Tenemos que aadir la siguiente lnea al archivo de configuracin de apache /etc/apache2/apache2.conf o crear un archivo alias en el directorio conf.d/.
Alias /awstats-icon/ /usr/share/awstats/icon/

y, entonces en la directiva DirIcons escribimos el nombre del alias creado:


DirIcons="/awstats-icon"

D. Intrprete de Perl El archivo awstats.pl necesita del intrprete de Perl para generar las estadsticas de los logs. Hay que asegurarse de que est bien configurado indicando al script en Perl donde se encuentra el intrprete. La primera lnea del archivo /usr/lib/cgibin/awstats.pl es:
#!/usr/bin/perl

E. Dominio del sitio Como en un mismo host pueden existir distintos dominios (hosts virtuales), la directiva SiteDomain indica a cul de esos dominios nos estamos refiriendo. En nuestro caso:
SiteDomain="servidor.apache2.com"

F. Formato del informe Indicamos con la directiva LogType el tipo de archivo que contendr el informe generado:
LogType=W

W indica informe web

M para archivos mail F para archivos de log FTP Con esto quedara finalizada la configuracin bsica de Awstats. Para visualizar la pgina web generada ir a http://servidor.apache2.com/cgi-bin/awstats.pl. Como puede observarse las estadsticas estn vacas. Eso es as porque awstats.pl no lee los datos de los logs directamente sino que genera un archivo de texto y muestra los datos a partir de dicho texto. Los archivos de texto generados se encuentran en: # ls -l /var/lib/awstats/
-rw-r--r-- 1 root root 6445 2007-08-13 20:08 awstats022008.txt

Para generar estos archivos por primera vez o actualizarlos manualmente, ejecutamos el archivo awstats.pl con los siguientes parmetros: #/usr/lib/cgi-bin/awstats.pl -config=servidor -update Volver a ir al navegador y comprobar que cambian las estadsticas y aparecen ya datos.

La versin de este paquete de Awstats instala una entrada en el demonio de cron (cron.d).

#ls -l /etc/cron.d
-rw-r--r-- 1 root root 200 2005-11-09 17:53 awstats

Y si vemos el contenido del archivo: #cat /etc/cron.d/awstats


0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgibin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl config=awstats -update >/dev/null

El archivo de cron nos dice que el usuario 'www-data' actualiza el 'awstats.pl' cada 10 minutos, y toda la "basura" que quiera sacar por pantalla la redirija a la papelera /dev/null.

Descripcin de la arquitectura en mdulos del Apache. Explicacin y enumeracin de las funcionalidades asociadas a cada mdulo.
Por Carlos Luis Cuenca El servidor Apache es un software que esta estructurado en mdulos. La configuracin de cada mdulo se hace mediante la configuracin de las directivas que estn contenidas dentro del mdulo. Los mdulos del Apache se pueden clasificar en tres categoras:

Mdulos Base: Mdulo con las funciones bsicas del Apache

Mdulos Multiproceso: son los responsables de la unin con los puertos de la mquina, acepando las peticiones y enviando a los hijos a atender a las peticiones

Mdulos Adicionales: Cualquier otro mdulo que le aada una funcionalidad al servidor.

Las funcionalidades ms elementales se encuentran en el mdulo base, siendo necesario un mdulo multiproceso para manejar las peticiones. Se han diseado varios mdulos multiproceso para cada uno de los sistemas operativos sobre los que se ejecuta el Apache, optimizando el rendimiento y rapidez del cdigo. El resto de funcionalidades del servidor se consiguen por medio de mdulos adicionales que se pueden cargar. Para aadir un conjunto de utilidades al servidor, simplemente hay que aadirle un mdulo, de forma que no es necesario volver a instalar el software.

Mdulos Base y Mdulos Multiproceso:

core: Funciones bsicas del Apache que estn siempre disponibles.

mpm_common: Coleccin de directivas que se implementan en ms de un mdulo multiproceso.

beos: Mdulo de multiproceso optimizado para BeOS.

leader: Variable experimental de MPM.

mpm_netware: Mdulo de multiproceso que implementa un servidor web optimizado para Novell NetWare.

mpmt_os2: MPM hbrido, multiproceso y multihilo para OS/2 .

perchild: Mdulo multiproceso que permite a los procesos demonio servir las peticiones que se asignan a distintos id de usuario.

prefork: Implementa un servidor sin hilos.

threadpool: Variante experimental del mdulo estndar de MPM .

mpm_winnt: Mdulo multiproceso optimizado para Windows NT.

worker: Mdulo multiproceso que implementa un hbrido multihilos y multiprocesos de servidor Web.

Mdulos adicionales:

mod_access: proporciona control de acceso basndose en el nombre del host del cliente, su direccin IP u otras caractersticas de la peticin del cliente.

mod_actions: este mdulo se utiliza para ejecutar Scripts CGI, basndose en el tipo de medio o el mtodo de peticin.

mod_alias: proporcionado para mapear diferentes partes del sistema de ficheros del servidor en el rbol de documentos del servidor, y para redireccin de URL's.

mod_asis: envo de ficheros que tienen sus propias cabeceras http.

mod_auth: autentificacin de usuario utilizando ficheros de texto.

mod_auth_anon: permite a usuarios annimos acceder a reas autentificadas.

mod_auth_dbm: proporciona autentificacin utilizando ficheros DBM.

mod_auth_digest: autentificacin de usuario utilizando MD5.

mod_auth_ldap: permite la utilizacin un directorio LDAP para almacenar la base de datos de autentificacin.

mod_autoindex: muestra los contenidos de un directorio automticamente, parecido al comando ls de Unix.

mod_cache: Cache de contenidos indexados por URI's.

mod_cern_meta: Semntica de etiquetas meta del CERN.

mod_cgi: Ejecucin de Scritps CGI.

mod_cgid: ejecucin de Scripts CGI utilizando un demonio CGI externo.

mod_charset_lite: para la especificacin del juego de caracteres de las traducciones.

mod_deflate: comprime el contenido antes de ser enviado al cliente.

mod_dir: Proporcionado para redirecciones y para servir los ficheros de listado de directorios.

mod_disk_cache: Cache para almacenar contenidos identificados por URI.

mod_echo: Un servidor simple de echo para ilustrar los mdulos del protocolo.

mod_env: modificacin del entorno que se envia a los scripts CGI y las pginas SSI.

mod_expires: Generacin de las cabeceras http Expires, de acuerdo de los criterios especificados por el usuario.

mod_ext_filter: pasa el cuerpo de la respuesta a travs de un programa antes de envirsela al cliente.

mod_file_cache: cachea una lista esttica de ficheros en memoria.

mod_headers: personalizacin de las peticiones HTTP y las cabeceras de las respuestas.

mod_imap: proceso de imgenes en el lado del servidor.

mod_include: Documentos HTML generados por el servidor (Server Side Includes).

mod_info: proporciona una visin comprensiva de la configuracin del servidor.

mod_isapi: Extensiones ISAPI en Apache para Windows.

mod_ldap: pool de conexiones LDAP y cacheo de resultados para la utilizacin de otros mdulos

LDAP.

mod_log_config: registro de las peticiones hechas al servidor.

mod_logio: registro del nmero de bytes recibidos y enviados en cada respuesta.

mod_mem_cache: Cache de contenidos identificados por URI.

mod_mime: asocia las extensiones de peticiones de los ficheros con el comportamiento del fichero (manejadores y filtros) y contenido (tipos mime, idioma, juego de caracteres y codificacin).

mod_mime_magic: determina el tipo MIME de un fichero mirando unos pocos bytes del contenido.

mod_negotiation: se proporciona para la negociacin del contenido.

mod_proxy: servidor HTTP/1.1 proxy/gateway.

mod_proxy_connect: extensin de mod_proxy para la gestin de las peticiones CONNECT.

mod_proxy_ftp: soporte FTP para mod_proxy.

mod_proxy_http: soporte HTTP para el mdulo mod_proxy.

mod_rewrite: proporciona un motor de reescritura basado en reglas que rescribe las peticiones de URL's al vuelo.

mod_setenvif: permite la configuracin de las variables de entorno basndose en las caractersticas de la peticin.

mod_so: carga del cdigo ejecutable y los mdulos en al iniciar o reiniciar el servidor.

mod_speling: intenta corregir las URL mal puestas por los usuarios, ignorando las maysculas y permitiendo hasta una falta.

mod_ssl: criptografa avanzada utilizando los protocolos Secure Sockets Layer y Transport Layer Security.

mod_status: proporciona informacin en la actividad y rendimiento del servidor.

mod_suexec: permite a los scripts CGI ejecutarse con un nombre y grupo especfico.

mod_unique_id: proporciona variables de entorno y un identificador nico para cada peticin.

mod_userdir: directorios especficos para usuarios.

mod_usertrack: registro de actividad de un usuario en el sitio.

mod_vhost_alias: Proporcionado para configurar muchos servidores virtuales dinmicamente.

Captulo 10. Servidor Apache HTTP


El Servidor Apache HTTP es un servidor Web de tecnologa Open Source slido y para uso comercial desarrollado por la Apache Software Foundation (http://www.apache.org). Red Hat Enterprise Linux incluye el Servidor Apache HTTP versin 2.0 as como tambin una serie de mdulos de servidor diseados para mejorar su funcionalidad. El archivo de configuracin predeterminado instalado en el Servidor Apache HTTP funciona sin necesidad de modificarlo, en la mayor parte de los casos. Este captulo da una idea general de las directrices dentro de este archivo de configuracin (/etc/httpd/conf/httpd.conf) para ayudar a aquellos que requieren una configuracin personalizada o necesitan convertir un archivo de configuracin del formato ms antiguo del Servidor Apache HTTP 1.3.

Aviso

Si utiliza la Herramienta de configuracin de HTTP (system-confighttpd), no cambie el archivo de configuracin del Servidor Apache HTTP

manualmente pues la Herramienta de configuracin de HTTP vuelve a generar este archivo cada vez que se usa. Si desea ms informacin sobre la Herramienta de configuracin de HTTP, consulte el captulo Configuracin del Servidor Apache HTTP en el Manual de administracin del sistema de Red Hat Enterprise Linux.

10.1. Servidor Apache HTTP 2.0


Existen diferencias importantes entre el Servidor Apache HTTP versin 2.0 y la versin 1.3 (la versin 1.3 vena con Red Hat Enterprise Linux 2.1 y versiones anteriores). Esta seccin revisa algunas de las nuevas caractersticas de la versin 2.0 del Servidor Apache HTTP y esboza los cambios principales. Si necesita migrar una versin 1.3 del archivo de configuracin al formato 2.0, consulte la Seccin 10.2.

10.1.1. Caractersticas del Servidor Apache HTTP 2.0


El Servidor Apache HTTP 2.0, incluye las siguientes funcionalidades:

Los mdulos Apache API se utiliza un nuevo conjunto de interfaces de programacin de aplicaciones (APIs).

Importante

Los mdulos creados con la versin 1.3 del Servidor Apache HTTP no funcionan si no se llevan al nuevo API. Si no est seguro de si se ha llevado un determinado mdulo, consulte al desarrollador antes de actualizar.

Filtrado Los mdulos pueden actuar como filtros de contenido. Consulte la Seccin 10.2.4 para mayor informacin. Soporte a IPv6 Se soporta la prxima generacin de formato de direcciones IP. Directrices simplificadas Se han eliminado una serie de directrices complicadas y otras se han simplificado. Consulte la Seccin 10.5 para mayor informacin sobre directrices especficas. Respuestas a errores en diversos idiomas Cuando usa documentos Server Side Include (SSI), las pginas de errores personalizables se pueden entregar en diversos idiomas

En el siguiente sitio web se muestra una lista completa de los cambios realizados: http://httpd.apache.org/docs-2.0/.

10.1.2. Cambios en los paquetes del Servidor Apache HTTP 2.0


A partir de la versin 3 de Red Hat Enterprise Linux, los paquetes del Servidor Apache HTTP han sido renombrados. Adems otros paquetes se han eliminado, renombrado y otros se han introducido en otros paquetes. La siguiente lista contiene los cambios de los paquetes:

Los paquetes apache, apache-devel y apache-manual, fueron renombrados a httpd, httpd-devel y httpd-manual repectivamente. Se ha incorporado el paquete mod_dav en el paquete httpd. Los paquetes mod_put y mod_roaming se han eliminado, ya que su funcionalidad aparece recogida en mod_dav (el cual forma parte ahora del paquete httpd). Los paquetes mod_auth_any y mod_bandwidth se han eliminado. El nmero de versin del paquete mod_ssl se ha sincronizado con el paquete httpd. Esto significa que el paquete mod_ssl para el Servidor Apache HTTP 2.0 tiene un nmero de versin menor que el paquete mod_ssl del Servidor Apache HTTP 1.3.

10.1.3. Cambios en el sistema de archivos de la versin 2.0 del Servidor Apache HTTP
Ocurren los siguientes cambios en la presentacin del sistema de archivos cuando se actualiza a la versin 2.0 del Servidor Apache HTTP:

Se ha aadido un nuevo directorio de configuracin /etc/httpd/conf.d/. Este nuevo directorio de usa para almacenar archivos de configuracin para mdulos empaquetados individualmente como mod_ssl, mod_perl y php. Se instruye al servidor para que cargue archivos de configuracin desde esta ubicacin con la directriz Include conf.d/*.conf dentro del archivo de configuracin del Servidor Apache HTTP, /etc/httpd/conf/httpd.conf.

Importante

Es fundamental que se introduzca la lnea especificando la nueva configuracin cuando migre una configuracin ya existente.

Se han trasladado los programas ab y logresolve. Estos programas se han trasladado desde el directorio /usr/sbin/ al directorio /usr/bin/. Esto provoca que scripts con rutas absolutas para estos binarios fallen.

Se ha sustituido el comando dbmmanage. El comando dbmmanage ha sido reemplazado con htdbm. Consulte la Seccin 10.2.4.5 para ms informacin. Se ha cambiado el nombre del archivo de configuracin logrotate. Se le ha dado el nombre de /etc/logrotate.d/httpd.

La siguiente seccin explica cmo migrar una configuracin Servidor Apache HTTP 1.3 al nuevo formato de la versin 2.0.

Ventajas y Desventajas de Apache Web Server

+ Altamente configurable - Para los que saben, casi cualquier cosa que se necesite hacer con un servidor web se puede hacer con apache. + Estabilidad - Ha probado su estabilidad y funcionamiento en una inmensa cantidad de proyectos. + Independencia de la plataforma - Est disponible en variedad de plataformas. + Cdigo abierto - Esto permite por ejemplo, producir binarios para plataformas en las que no hay un binario oficial o compilarlo para un mejor rendimiento en una plataforma especfica. - Complejidad - Puede resultar dificil de configurar incluso para tareas sencillas y por ello muchos novatos le escapan a su uso - Formatos de configuracin no estndar esto dificulta un poco la automatizacin y el procesamiento de la configuracin al no estar basada esta en formatos ms soportados como el XML. - Falta de integracin - Al ser un producto multiplataforma, el servidor no aprovecha al mximo las posibilidades que ofrece el sistema operativo. -Administracin - Como la mayora de los programas open-source, uno depende de configurar los archivos a mano o tener que instalarse herramientas adicionales para las tareas de administracin. Apache viene en una suerte de Kit para armar.

Potrebbero piacerti anche