1. MARCO TEORICO
1.6. Arquitectura Cliente Servidor
1.6.2. Ventajas y desventajas la arquitectura cliente/servidor
1.7.2.2. Funcionalidades y Uso
Apache proporciona un amplio abanico de funcionalidades, muchas de ellas a través de módulos que extienden el núcleo. Estas funcionalidades abarcan desde programación en el servidor a esquemas de autenticación. Algunas de los lenguajes soportados para la programación en el servidor son: Perl, Python, Tcl y PHP. Los módulos de autenticación más conocidos son mod_access, mod_auth y mod_digest. Otras funcionalidades son soporte de SSL y TLS (mod_ssl), un módulo de servidor proxy, un motor para reescribir URLs (mod_rewrite), archivos de log configurables (mod_log_config), y soporte para filtrado (mod_include y mod_ext_filter).
Los métodos de compresión en Apache permiten reducir el tamaño de las páginas servidas gracias al módulo mod_gzip. Los archivos de log pueden ser analizados a través de un navegador usando herramientas gratuitas como AWStats/W3Perl o Visitors.
El alojamiento virtual permite en una sola instalación de Apache servir varios sitios Web. Apache permite modificar los mensajes de error, autenticación a través de bases de datos y negociación del contenido. También existen diversos programas con interfaces gráficas que permiten una más sencilla configuración del servidor.
Apache se usa principalmente para servir contenidos estáticos y páginas dinámicas en la web.
Apache es el servidor web del entorno de ejecución de aplicaciones webs denominado LAMP, junto con MySQL, y los lenguajes de programación PHP/Perl/Python.
21
Apache se distribuye cómo parte de varios paquetes de software propietarios entre los que están la base de datos Oracle o el servidor de aplicaciones IBM WebSphere. Mac Los X integra Apache cómo servidor web preinstalado y es lo que proporciona soporte para el servidor de aplicaciones WebObjects. También se usa de alguna manera por Borland en las herramientas de desarrollo de Kylix y Delphi. Apache también se incluye con Novell NetWare 6.5, donde es el servidor web por defecto.
Apache se usa para muchas otras tareas en las que el contenido tiene que estar disponible de una manera segura y fiable.
Los programadores que desarrollan aplicaciones web suelen usar un servidor Apache local para poder pre visualizar y probar el código a medida que lo van desarrollando.
El servidor web de Microsoft IIS es el mayor competidor de Apache, seguido del servidor web de Sun Microsystems Sun Java System Web Server. Algunos de los sitios webs más visitados en el mundo usan Apache. La página web de búsquedas de Google está basada en una versión modificada de Apache, denominada Google Web Server. Los proyectos de Wikimedia, incluida a Wikipedia también usan servidores web Apache. (José L. Villada R, 2015)
1.7.2.3. Licencia
Todo el software producido por la Apache Software Foundation (ASF) o cualquiera de sus proyectos está desarrollado bajo los términos de la licencia Apache. Además algunos proyectos que no pertenecen a la ASF también siguen la licencia Apache.
Como cualquiera de las licencias de software libre, la licencia Apache permite al usuario del software la libertad de usarlo para cualquier propósito, distribuirlo, modificarlo, y distribuir versiones modificadas de ese software. Sin embargo, la licencia Apache no exige que las versiones modificadas del software se distribuyan usando la misma licencia, ni siquiera que se tengan que distribuir como software libre/open source.
22
Es por esto que 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. (Julia López Viñas (coordinadora), 2016)
1.7.3. Tomcat – Apache
Apache, también conocido como simplemente Tomcat o Jackarta Tomcat, es un servidor web multiplataforma que funciona como contenedor de servlets y que se desarrolla bajo el proyecto denominado Jackarta perteneciente a la Apache Software Foundation bajo la licencia Apache 2.0 y que implementa las especificaciones de los servlets y de JavaServer Pages o JSP de Sun Microsystem. Dicho servidor es mantenido y desarrollado por miembros de la fundación y voluntarios independientes, los cuales tienen libre acceso al
código fuente bajo los términos establecidos por la Apache Software
Foundation. (Aleksa Vukotic & James Goodwill, 2011) 1.7.3.1. Historia
Apache Tomcat comenzó siendo una implementación de servlets iniciada por James Duncan Davidson, que trabajaba como arquitecto software en Sun Microsystem y que posteriormente ayudó al proyecto de código abierto. Duncan, inicialmente pensó que el proyecto se convertiría en software de código abierto y además quiso ponerle un nombre de animal, en este caso Tomcat (gato) ya que, de algún modo pretendía trasladar la posibilidad de cuidarse por sí mismo, es decir, de ser independiente.
Las primeras distribuciones de Apache Tomcat fueron las 3.0.x aunque las versiones estables más recientes son las 6.0.30 y la 7.0.6 que implementan las especificaciones de Servlet 2.5 y JSP 2.1.
1.7.3.2. Estructura
23
bin: arranque, cierre, scripts y ejecutables.
common: clases comunes que puede utilizar Catalina (contenedor de servlets) y las aplicaciones web.
conf: ficheros XML y la correspondiente DTD para la configuración de Apache Tomcat.
logs: logs del contenedor de servlets y de las aplicaciones. server: clases usadas por el contenedor de servlets.
shared: clases compartidas por todas las aplicaciones web. webapps: directorio que contiene las aplicaciones web. work: almacenamiento temporal de ficheros y directorios. 1.7.3.3. Componentes
A partir de la versión 4.x Tomcat fue lanzado con el contenedor de servlets "Catalina", con el contenedor HTTP "Coyote" y un motor para JSP llamado "Jasper". Las principales características de estos tres componentes son:
Catalin
Este componente implementa las especificaciones de servlets y JSP. Para Apache Tomcat el elementos principal es una base de datos de nombres de usuarios, password y roles a estos usuarios permitiendo a Catalina integrarse donde ya existe información de autenticación como describe la especificación de servlets.
Coyote
Componente conector que admite el protocolo HTTP 1.1 para el servidor web y que escucha en un puerto TCP especificado por el servidor y envía la solicitud al motor Tomcat para que éste procese la solicitud y envíe una respuesta al cliente.
Jasper
Analiza archivos JSP para compilar el código Java y, si se producen cambios, éste los vuelve a compilar. Desde la versión 5.x se usa Jasper 2 que es JavaServer para webs 2.0. Jasper 2 ha introducido las siguientes novedades:
24
Re compilación al producirse un cambio.
Incorpora el compilador JDT de Java.
Puesta en común de etiquetas JSP.
1.7.3.4. Características y Evolución
Como se ha dicho anteriormente, Apache Tomcat es un servidor web que da soporte a servlets y JSPs de modo que, no es un servidor de aplicaciones. Dado que dicho producto fue desarrollado en Java, éste puede ejecutarse sobre cualquier sistema operativo, previa instalación de la máquina virtual de Java aunque, también se puede usar con MAMPP (Mac OS X), LAMPP (GNU/Linux), WAMPP (Windows) o XAMPP (cualquier sistema operativo). Además, puede funcionar como servidor web por sí mismo sin embargo, en sus inicios se pensaba que dicho servidor era recomendable usarse en entornos de desarrollo con requisitos mínimos de velocidad. En la actualidad no existe esta percepción y por esto, es usado como servidor web autónomo
en entornos con alto nivel de tráfico y alta disponibilidad.
Más en concreto, las principales características que soporta la última versión estable son:
Autenticación de acceso básico.
Negociación de credenciales.
HTTPS
Alojamiento compartido.
CGI o interfaz de entrada común.
Servlets de Java.
SSI
Consola de administrador.
La evolución del producto y sus principales características de cada una de las versiones han sido constante a partir de la versión Tomcat 3.x y actualmente encontrándose en la versión Tomcat 9.x (Apache Software Fundation, 2015)
25 1.7.4. Servidor Glassfish
El término Glassfish, traducido al español sería algo parecido como “Pez de Cristal”, es el nombre de un pez que realmente existe y vive en el agua dulce; su cuerpo es transparente, por lo que sus huesos son visibles. El nombre fue elegido debido a la transparencia que los creadores querían darle al proyecto, que utiliza una licencia Open Source, concretamente la licencia Common Development and Distribution License (CDDL) v1.0 y la GNU Public License (GPL) v2. (Heffelfinger, 2007)