DAW01
DAW01
DAW01
APLICACIONES WEB
Implantación de Arquitecturas Web
12
ÍNDICE
1.- Aspectos generales de arquitecturas web. ........................................................................ - 2 -
1.1.- Evolución de los servicios web. ................................................................................................ - 3 -
1.2.- Tecnologías asociadas a las aplicaciones web. ......................................................................... - 4 -
1.3.- Tipos de aplicaciones web. ...................................................................................................... - 5 -
1.4.- Arquitecturas web. Modelos. .................................................................................................. - 6 -
1.5.- Plataformas web libres y propietarias. ..................................................................................... - 8 -
1.6.- Escalabilidad. ........................................................................................................................... - 9 -
Escalabilidad vertical. ............................................................................................................................................ - 9 -
Escalabilidad horizontal......................................................................................................................................... - 9 -
Cluster ..................................................................................................................................................................- 10 -
2.- Servidor web Apache. ...................................................................................................... - 11 -
2.1.- Instalación y configuración. ....................................................................................................- 11 -
2.2.- Iniciar Apache. ........................................................................................................................- 14 -
3.- Aplicaciones web y servidores de aplicaciones. ............................................................... - 15 -
3.1.- El servidor de aplicaciones Tomcat. ........................................................................................- 16 -
3.1.1.- Instalación y configuración básica. ..........................................................................................................- 17 -
3.1.2.- Iniciar Tomcat. ..........................................................................................................................................- 18 -
4.- Estructura y despliegue de una aplicación web. .............................................................. - 20 -
4.1.- Archivos WAR. ........................................................................................................................- 20 -
4.2.- Despliegue de aplicaciones con Tomcat ..................................................................................- 21 -
4.3.- Descriptor de despliegue. .......................................................................................................- 22 -
Despliegue de Aplicaciones Web Tema 1
-1-
Implantación de arquitecturas web DAW José Luis Comesaña
La arquitectura World Wide Web (WWW) de Internet provee un modelo de programación sumamen-
te poderoso y flexible. Las aplicaciones y los contenidos son presentados en formatos de datos
estándar y son localizados por aplicaciones conocidas como "web browsers", que envían requeri-
mientos de objetos a un servidor y éste responde con el dato codificado según un formato estándar.
Los estándares WWW especifican muchos de los mecanismos necesarios para construir un ambiente
de aplicación de propósito general, por ejemplo:
Modelo estándar de nombres: todos los servidores, así como el contenido de la WWW se deno-
minan según un Localizador Uniforme de Recursos (Uniform Resource Locator: URL).
Contenido: a todos los contenidos en la WWW se les especifica un determinado tipo permitien-
do de esta forma que los browsers (navegadores) los interpreten correctamente.
Formatos de contenidos estándar: todos los navegadores soportan un conjunto de formatos
estándar, por ejemplo HTML, ECMA, JavaScript, etc.
Protocolos estándar: éstos permiten que cualquier navegador pueda comunicarse con cualquier
servidor web. El más comúnmente usado en WWW es HTML (Protocolo de Transporte de Hiper-
Texto), que opera sobre el conjunto de protocolos TCP/IP.
Esta infraestructura permite a los usuarios acceder a una gran cantidad de aplicaciones y servicios de
terceros. También permite a los desarrolladores crear aplicaciones y servicios para una gran comuni-
dad de clientes.
Los aspectos generales a destacar en una arquitectura web son los siguientes:
Escalabilidad.
Separación de responsabilidades.
Portabilidad.
Utilización de componentes en los servicios de infraestructura.
Gestión de las sesiones del usuario.
Aplicación de patrones de diseño.
De forma genérica podríamos decir que la arquitectura web es un modelo compuesto de tres capas:
1. Capa de Base de Datos, donde estaría toda la documentación de la información que se pretende
administrar mediante el servicio web y emplearía una plataforma del tipo MySQL, PostgreSQL,
etc.
2. En una segunda capa estarían los servidores de aplicaciones web, ejecutando aplicaciones de
tipo Apache, Tomcat, Resin, etc.
3. En una tercera capa estarían los clientes del servicio web al que accederían mediante un nave-
gador web como Firefox, Internet Explorer, Opera, etc.
-2-
Despliegue de Aplicaciones Web Tema 1
La evolución del uso de Servicios web en las organizaciones está fuertemente ligada al desarrollo de
Internet como red prestadora de servicios. Entre los factores que han impulsado el uso de los servi-
cios web se encuentran:
El contenido se está volviendo más dinámico: Los sitios web actuales proporcionan contenidos
"instantáneos". Un Servicio web debe ser capaz de combinar contenido proveniente de fuentes
muy diferentes.
El ancho de banda es menos costoso: Actualmente un Servicio web puede entregar tipos varia-
bles de contenidos como vídeo o audio. A medida que crezca el ancho de banda, los servicios
web deben adaptarse a nuevos tipos de contenidos.
El almacenamiento es más barato: Un Servicio web debe ser capaz de manejar cantidades masi-
vas de datos, y debe poder hacerlo de forma inteligente.
El éxito de la computación extendida se está volviendo más importante: Con cientos de millones
de dispositivos como teléfonos móviles, agendas electrónicas, etc. existentes actualmente, esta-
mos llegando a un momento en el cual las computadoras están dejando de ser el dispositivo más
común en Internet. A medida que las plataformas se hacen más diversas, tecnologías como XML
se volverán más importantes. Un servicio web no puede exigir que los usuarios ejecuten, por
ejemplo, un navegador web tradicional en alguna versión de Microsoft Windows; por el contra-
rio, los servicios web deben servir a todo tipo de dispositivos, plataformas y navegadores, entre-
gando contendido sobre una amplia variedad de tipos de conexión.
Estos factores, unidos a los beneficios proporcionados por los servicios web en la organización y los
buenos productos disponibles para su desarrollo, han hecho que su utilización se extienda sin mayo-
res obstáculos.
En términos generales, cuando se empiezan a utilizar servicios web en una organización, estos se
desarrollan e implementan como servicios simples, que poco a poco se van integrando hasta llegar a
servicios web mucho más complejos.
En los orígenes del mundo web nos situábamos ante un entorno estático, con páginas en formato
HTML que raramente sufrían modificaciones o actualizaciones y en las que apenas había interacción
con el usuario.
La Web 2.0 es la transición que se ha dado desde las aplicaciones tradicionales hacia aplicaciones que
funcionan a través de la web y que están fuertemente enfocadas al usuario final. En este nuevo en-
torno existen una serie de nuevas tecnologías que, en general, tienen como objetivo:
Transformar software de escritorio hacia la web.
Separar hojas de estilo.
Potenciar el trabajo colaborativo y la utilización de redes sociales.
Dar control total a los usuarios en el manejo de su información.
-3-
Implantación de arquitecturas web DAW José Luis Comesaña
Las aplicaciones web emplean páginas dinámicas, éstas se ejecutan en un servidor web y se mues-
tran en el navegador de un equipo cliente que es el que ha realizado previamente la solicitud. Cuan-
do una página web llega al navegador, es posible que también incluya algún programa o fragmento
de código que se deba ejecutar. Ese código, normalmente en lenguaje JavaScript, lo ejecutará el
propio navegador. Es por ello que en este apartado nos centraremos en las tecnologías asociadas a
las aplicaciones web que se ejecutarán tanto del lado del servidor como del cliente, especificando lo
que corresponda en cada uno de los casos.
ASP (Active Server Pages): Las "Páginas Activas" se ejecutan del lado del servidor, de este modo
se forman los resultados que luego se mostrarán en el navegador de cada equipo cliente que ha
realizado la solicitud. Un buen ejemplo de ello son los buscadores, donde un usuario realiza una
petición de información y el servidor nos entrega un resultado a medida de nuestra petición.
Existen versiones de ASP para Unix y Linux, a pesar de que fue una tecnología desarrollada por
Microsoft para la creación dinámica de páginas web ofrecida junto a su servidor IIS.
CGI (Common Gateway Interface): La "Interface Común de Entrada" es uno de los estándares
más antiguos en Internet para trasladar información desde una página a un servidor web. Este
estándar es utilizado para bases de datos, motores de búsqueda, formularios, generadores de
email automático,
foros, comercio electrónico, rotadores y mapas de imágenes, juegos en línea, etc.
Las rutinas de CGI son habitualmente escritas en lenguajes interpretados como Perl o por lengua-
jes compilados como C.
CSS (Cascading Style Sheets): Las "Hojas de Estilo en Cascada" se usan para formatear las páginas
web; se trata de separar el contenido de un documento de su presentación. Cualquier cambio en
el estilo marcado para un elemento en la CSS afectará a todas las páginas vinculadas a esa CSS.
Java: Este es un lenguaje que trabaja en el cliente, es decir: se ejecuta en el
navegador del equipo cliente y no en el servidor. Es un lenguaje eficiente y
muy poderoso, que se caracteriza por:
Una misma aplicación puede funcionar en diversos tipos de ordenado-
res y sistemas operativos: Windows, Linux, Solaris, MacOS, etc., así co-
mo en otros dispositivos inteligentes.
Los programas Java pueden ser aplicaciones independientes (que co-
rren en una ventana propia) o "applets", que son pequeños programas interactivos que se
encuentran incrustados en una página web y pueden funcionar con cualquier tipo de nave-
gador: Explorer, Netscape, Ópera, etc.
Se trata de un lenguaje "orientado a objetos". Esto significa que los programas se construyen
a partir de módulos independientes, y que estos módulos se pueden transformar o ampliar
fácilmente. Un equipo de programadores puede partir de una aplicación existente para ex-
tenderla con nuevas funcionalidades.
Desarrollado por la empresa Sun Microsystems, pero posteriormente liberado bajo licencia
GNU GPL (La Licencia Pública General de GNU, o más conocida por su nombre en inglés GNU General Public License es una li-
cencia creada por la " Free Software Fundation" y está orientada, principalmente, a proteger la libre distribución, modificación y
uso de software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de
apropiación que restrinjan esas libertades a los usuarios. El proyecto GNU (GNU es un acrónimo recursivo para "GNU No es
con
Unix"). Comenzó en 1984 a desarrollar un sistema operativo completo con la principal propiedad de ser Software Libre),
lo cual es un software libre.
JavaScript: Lenguaje que se interpreta y se ejecuta en el cliente. Útil para realizar tareas como
mover imágenes por la pantalla, crear menús de navegación interactivos, utilizar algunos juegos,
-4-
Despliegue de Aplicaciones Web Tema 1
etc. En las páginas web suele preferirse JavaScript porque es aceptado por muchos más navega-
dores que VBScript (creado por Microsoft)
PHP (Hypertext Preprocessor): Este lenguaje es, como ASP, ejecutado en el lado del servidor.
PHP es similar a ASP y puede ser usado en circunstancias similares. Es muy eficiente, permitiendo
el acceso a bases de datos empleando servidores como MySQL (potente gestor de bases de datos relacional,
sencillo de usar e increíblemente rápido. También es uno de los motores de bases de datos más usados en Internet, la principal razón
de esto es que se distribuye bajo la licencia GNU GPL para aplicaciones no comerciales) y, por lo tanto, suele utilizarse
para crear páginas dinámicas complejas.
VBScript (Visual Basic Scripting): La respuesta de Microsoft a JavaS-
cript. VBScript es una buena herramienta para cualquier sitio destinado
a ser mostrado exclusivamente en el navegador Microsoft Internet Ex-
plorer. El código en VBScript puede, además, estar diseñado para su
ejecución en el lado del cliente o en el del servidor, la diferencia es que
un código que se ejecuta en el lado del servidor no es visible en el lado
del cliente. Éste recibe los resultados, pero no el código.
¿Podemos ver una página web sin que intervenga un servidor web?
Sí No
Podemos ver páginas web con extensión .htm, .html o .xhtml que tengamos almacenadas en nuestro equipo simplemente abriéndolas
con el navegador. En este caso la única utilidad del servidor web es enviar la página que solicitemos a nuestro equipo.
Buscadores
Organización Social e inte-
Agregadores
ligente de la información
Marcadores sociales
Organizadores de proyectos
Escritorios virtuales
Aplicaciones Híbridas
Reproductores de música
Repositorios
-5-
Implantación de arquitecturas web DAW José Luis Comesaña
Establecer una clasificación de los tipos de aplicaciones web es una tarea compleja debido a la difi-
cultad existente para poder establecer algún parámetro en función del cual establecer dicha clasifi-
cación, junto con la innumerable cantidad de aplicaciones existentes en el actual entorno web 2.0.
En función de cómo se presenta la aplicación web junto con el contenido que pretende mostrar, se
ha establecido la siguiente clasificación:
Página web Estática. Están implementadas en HTML y pueden mostrar en alguna parte de la
página objetos en movimiento tales como banners, GIF animados, vídeos, etc.
Página web Animada. Se realizan con la tecnología FLASH; ésta permite que una página web
presente el contenido con ciertos efectos animados continuados. El uso de esta tecnología per-
mite diseños más vanguardistas, modernos y creativos.
Página web Dinámica. Existen muchos lenguajes de programación que son la base para la mayor-
ía de páginas web dinámicas. Los que destacamos aquí son los lenguajes PHP y ASP. Estos lengua-
jes permiten una perfecta estructuración del contenido. Por una parte crearíamos la estructura
de las páginas web y por otra, almacenaríamos el contenido en determinados archivos. A partir
de ahí, crearíamos el código de llamada, que insertaría el contenido en la propia página web es-
tructurada. Este es el principio básico que siguen los lenguajes de programación. A partir de aquí
se desarrollan aplicaciones para poder gestionar el contenido a través de un panel de control.
Portal. Es un sitio web que en su página principal permite el acceso a múltiples secciones que,
por lo general, son foros, chats, cuentas de correo, buscador, acceso registrado para obtener
ciertas ventajas, las últimas noticias de actualidad, etc.
Tienda virtual o comercio electrónico. Sitio web que publica los productos de una tienda en In-
ternet. Permite la compra on-line a través de tarjeta de crédito, domiciliación bancaria o transfe-
rencia bancaria en general. Ofrece al administrador un panel de gestión para poder subir los pro-
ductos, actualizarlos, eliminarlos, etc.
Página web con "Gestor de Contenidos". Se trata de un sitio web cuyo contenido se actualiza a
través de un panel de gestión por parte del administrador del sitio. Este panel de gestión suele
ser muy intuitivo y fácil de usar. En aquellas páginas web que requieran una actualización cons-
tante, se suele incorporar este panel de gestión para que la web pueda controlarse día a día por
parte del cliente.
Se puede establecer que la arquitectura de un sitio web comprende los sistemas de organización y
estructuración de los contenidos junto con los sistemas de recuperación de información y navegación
-6-
Despliegue de Aplicaciones Web Tema 1
que provea el sitio web, con el objetivo de servir de ayuda a los usuarios a encontrar y manejar la
información.
Centraremos el estudio de los modelos de arquitectura web relacionados, en función de cómo im-
plementan cada una de las capas establecidas en una aplicación web:
1. Capa de presentación es la encargada de la navegabilidad, validación de los datos de entrada,
formateo de los datos de salida, presentación de la web, etc.; se trata de la capa que se presenta
al usuario.
2. Capa de negocio es la que recibe las peticiones del usuario y desde donde se le envían las res-
puestas; en esta capa se verifican que las reglas establecidas se cumplen.
3. Capa de acceso a datos es la formada por determinados gestores de datos que se encargan de
almacenar, estructurar y recuperar los datos solicitados por la capa de negocio.
La evolución experimentada por los medios informáticos en los últimos años ha convivido con otra
evolución paralela, la evolución de la arquitectura de las aplicaciones web, que permite aprovechar
las nuevas características que éstas ofrecen. De esta forma, el modelo arquitectónico de las aplica-
ciones de Internet ha sufrido dos grandes saltos, con algún paso intermedio, desde la aparición de los
primeros portales web. Los distintos modelos de aplicación sobre los que se ha ido desarrollando,
según diversos autores, se podrían clasificar del siguiente modo:
Modelo 1
En este caso las aplicaciones se diseñan en un modelo web CGI, basadas en la ejecución de pro-
cesos externos al servidor web, cuya salida por pantalla era el HTML que el navegador recibía en
respuesta a su petición. Presentación, negocio y acceso a datos se confundían en un mismo
script perl (Lenguaje de programación diseñado por Larrry Wall en 1987. Perl toma características del lenguaje C, del lenguaje in-
terpretado shell (sh), awk, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación).
Modelo 1.5
Aplicado a la tecnología java (Lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a princi-
pios de los años 90, aunque a finales de 2006 liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL), se da con
la aparición de las JSP y los servlets (Objetos que se ejecutan dentro del contexto de un contenedor de "servlets", por
ejemplo Tomcat y amplían su funcionalidad. La palabra servlet deriva de otra anterior, applet, que se refería a pequeños programas
que se ejecutan en el contexto de un navegador web. Por contraposición, un servlet es un programa que se ejecuta en un servidor. El
uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el na-
En este modelo, las responsabilidades de presentación recaen en las páginas JSP,
vegador web).
mientras que los beans (Abreviatura científica del botánico Willian Jackson Bean (18631947). Un bean es un componente
software que tiene la particularidad de ser reutilizable y así evitar la tediosa tarea de programar los distintos componentes uno a
uno) incrustadosen las mismas son los responsables del modelo de negocio y acceso a datos.
Modelo 2
Como evolución del modelo anterior, con la incorporación del patrón MVC en este tipo de apli-
caciones, se aprecia la incorporación de un elemento controlador de la navegación de la aplica-
ción. El modelo de negocio queda encapsulado en los javabeans (Modelo de componentes creado por Sun
Microsystems para la construcción de aplicaciones en Java; se usan para encapsular varios objetos en un único objeto (bean), para
hacer uso de un solo objeto en lugar de varios más simples. La especificación de JavaBeans los define como "componentes de softwa-
que se incrustan en las pági-
re reutilizables que se puedan manipular visualmente en una herramienta de construcción")
nas JSP.
Modelo 2X
Aparecen con el objetivo de dar respuesta a la necesidad, cada vez más habitual, de desarrollar
aplicaciones multicanal, es decir, aplicaciones web que pueden ser atacadas desde distintos ti-
pos de clientes remotos. Así, una aplicación web multicanal podrá ejecutarse desde una PDA,
desde un terminal de telefonía móvil, o desde cualquier navegador HTML estándar. El medio pa-
ra lograr publicar la misma aplicación para distintos dispositivos es emplear plantillas XSL para
transformar los datos XML.
Esta web está pensada como un curso en español de Java básico. Pretende tener una inter-
acción con los lectores, de forma que se puedan resolver las dudas que surjan.
http://java-spain.com/bienvenido-java-spaincom
-7-
Implantación de arquitecturas web DAW José Luis Comesaña
Una plataforma web es el entorno de desarrollo de software empleado para diseñar y ejecutar un sitio
web. En términos generales, una plataforma web consta de cuatro componentes básicos:
1. El sistema operativo, bajo el cual opera el equipo donde se hospedan las páginas web y que
representa la base misma del funcionamiento del computador. En ocasiones limita la elección
de otros componentes.
2. El servidor web es el software que maneja las peticiones desde equipos remotos a través de la
Internet. En el caso de páginas estáticas, el servidor web simplemente provee el archivo solicita-
do, el cual se muestra en el navegador. En el caso de sitios dinámicos, el servidor web se encarga
de pasar las solicitudes a otros programas que puedan gestionarlas adecuadamente.
3. El gestor de bases de datos se encarga de almacenar sistemáticamente un conjunto de regis-
tros de datos relacionados para ser usados posteriormente.
4. Un lenguaje de programación interpretado que controla las aplicaciones de software que
corren en el sitio web.
Diferentes combinaciones de los cuatro componentes señalados, basadas en las distintas opciones
de software disponibles en el mercado, dan lugar a numerosas plataformas web, aunque, sin duda,
hay dos que sobresalen del resto por su popularidad y difusión: LAMP y WISA.
La plataforma LAMP trabaja enteramente con componentes de software libre y no está sujeta a
restricciones propietarias. El nombre LAMP surge de las iniciales de los componentes de software
que la integran:
Linux: Sistema operativo.
Apache: Servidor web.
MySQL: Gestor de bases de datos.
PHP: Lenguaje interpretado PHP, aunque a veces se sustituye por Perl o Python.
La plataforma WISA está basada en tecnologías desarrolladas por la compañía Microsoft; se trata,
por lo tanto, de software propietario. La componen los siguientes elementos:
Windows: Sistema operativo.
Internet Information Services: servidor web.
SQL Server: gestor de bases de datos.
ASP o ASP.NET: como lenguaje para scripting del lado del servidor.
Existen muchas otras plataformas que trabajan con distintos sistemas operativos (Unix, MacOS, Sola-
ris), servidores web (incluyendo algunos que se han cobrado relativa popularidad como Lighttpd
yLiteSpeed), bases de datos (Postgre SQL) y lenguajes de programación.
-8-
Despliegue de Aplicaciones Web Tema 1
1.6.- Escalabilidad.
Las aplicaciones web se ejecu-
tan en un entorno donde el
número de clientes que solici-
tan el servicio puede variar en
gran medida en función del
momento. Es por ello que hay
una característica de esencial
importancia como es la escala-
bilidad, al que Juan ha dedicado
un apartado de su wiki para
documentar esta característica.
Escalabilidad vertical.
Habitualmente, la separación lógica en capas se implementa de tal forma que se permita una separa-
ción física de las mismas. Interponiendo elementos conectores que actúen de middlewares es posi-
ble distribuir la aplicación de forma vertical (una máquina por cada capa del sistema), e incluso si
esto no fuera suficiente, distribuyendo los elementos de una misma capa entre distintas máquinas
servidoras.
Escalabilidad horizontal.
Se trata de clonar el sistema en otra máquina de características similares y balancear la carga de tra-
bajo mediante un dispositivo externo. El balanceador de carga puede ser:
Balanceador Software: Por ejemplo, habitualmente encontramos un servidor web apache jun-
to con el módulo mod_jk, que permite la redirección de las peticiones http que a tal efecto sean
configuradas entre las distintas máquinas que forman la granja de servidores. Este tipo de balan-
ceadores examinan el paquete http e identifican la sesión del usuario, guardando registro de cuál
de las máquinas de la granja se está encargando de servir a dicha sesión. Este aspecto es impor-
tante, dado que nos permite trabajar (de cara al diseño de la aplicación) apoyándonos en el obje-
to sesión propio del usuario y almacenando información relativa a la sesión del mismo, puesto
que tenemos la garantía de que todas las peticiones de una misma sesión http van a ser redirec-
cionadas hacia la misma máquina.
-9-
Implantación de arquitecturas web DAW José Luis Comesaña
Cluster
Con la aparición de los servidores de aplicaciones en cluster se abre una nueva capacidad de escala-
bilidad que, dependiendo de cómo se aplique, podría clasificarse como vertical u horizontal. Un clus-
ter de servidores de aplicaciones permite el despliegue de una aplicación web corriente, de forma
que su carga de trabajo vaya a ser distribuida entre la granja de servidores que forman el cluster, de
modo transparente al usuario y al administrador. El cluster, mediante el mecanismo de replicación
de sesión, garantiza que sea cual sea la máquina que sirva la petición http, tendrá acceso a la sesión
del usuario (objeto HttpSession en java). Este tipo de sistemas, debido precisamente a la replicación
de sesión, suele presentar problemas de rendimiento.
- 10 -
Despliegue de Aplicaciones Web Tema 1
Uno de los servidores web más populares del mercado y el más utilizado actualmente es Apache, de
código abierto y gratuito, disponible para Windows y GNU/Linux, entre otros.
El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software
Foundation. 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.
Esta web sirve como manual de referencia, guía de usuario, tutoriales prácticos, etc., sobre
el servidor web Apache. Se trata de la web oficial de Apache Software Foundation.
http://httpd.apache.org/docs/2.0/es/
- 11 -
Implantación de arquitecturas web DAW José Luis Comesaña
Debido a que pretendemos montar una plataforma LAMP, por sus ventajas derivadas de las carac-
terísticas del software libre, instalaremos también los siguientes componentes: MySQL y PHP.
# apt-get install php5 mysql-client mysql-admin mysql-query-browser phpmyadmin
Una vez instalado, para verificar si funciona, podemos hacerlo desde un navegador, escribiendo en la
barra de direcciones :
http://localhost ó http://127.0.0.1
o bien, si accedemos desde otro equipo de la red a la dirección IP de esta máquina, deberíamos ob-
tener una página con el mensaje "It Works!", confirmando así su correcto funcionamiento.
Otro método de operar es descargar el código fuente de la aplicación desde la web del proyecto Apa-
che; luego descomprimir, compilar e instalar; realizar el proceso empleando los siguientes comandos:
cd /usr/local/src
wget http://apache.rediris.es//httpd/httpd-2.2.19.tar.gz
tar xvzf httpd-2.2.19.tar.gz
cd /usr/local/src/httpd-2.2.19
./configure --prefix=/usr/local/apache --enable-module=most --enable-mods-shared=most
make
make install
Por defecto, Apache sirve las páginas web que están en la carpeta " /var/www/ "; si nos situamos en
esa carpeta, encontramos un archivo " index.html " que es el que contiene el "It Works!". En esta car-
peta podemos crear nuevas carpetas en donde ubicaremos nuevas páginas web que deseamos ser-
vir, todas ellas accesibles a través del puerto 80.
Si la única pretensión es servir una página web, podemos integrar su contendido aquí. En caso que se
pretenda servir más páginas web, es más recomendable la utilización de los Hosts Virtuales; para ello
accedemos a la carpeta " /etc/apache2/sites-enabled ", donde hay un fichero llamado " 000-default ",
que nos va a servir de ejemplo para la creación de hosts virtuales, los cuales van a permitir servir
varias web desde una sola dirección IP utilizando para cada una un puerto distinto.
- 12 -
Despliegue de Aplicaciones Web Tema 1
En vídeo práctico se explica cómo instalar y configurar un servidor web Apache en una
máquina virtual con el sistema operativo Ubuntu:
http://www.youtube.com/watch?feature=player_embedded&v=p1kDRqd_JHg
Resumen del vídeo:
Se parte de un sistema operativo Ubuntu con la herramienta Webmin previamente instala-
da. Webmin es una herramienta de configuración de sistemas accesible vía web para Open-
Solaris, GNU/Linux y otros sistemas Unix. Con él se pueden configurar aspectos internos de
muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de confi-
guración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones
libres, como el servidor web Apache, PHP, MySQL, entre otros.
Una vez copiada la página a la carpeta anterior, se para el servicio correspondiente a Apache
y se vuelve a arrancar, se comprueba el funcionamiento correcto del servidor introduciendo
en el navegador la URL: http://127.0.0.1
Otra parte del vídeo demuestra cómo crear un nuevo Virtual Host y que escuche por el puer-
to 81, para ello es necesario configurar el archivo /etc/apache2/ports.conf para indicar al
servidor que escuche por dicho puerto
- 13 -
Implantación de arquitecturas web DAW José Luis Comesaña
Si todo está correcto debería devolver un mensaje del tipo " Syntax Ok "
usr/local/apache/bin/apachectl start y el servidor debería estar arrancado, con lo cual, si en un
navegador introducimos la URL: http://localhost veríamos la página de bienvenida de Apache.
Si el puerto especificado en la directiva Listen del fichero de configuración es el que viene por defec-
to, es decir, el puerto 80 (o cualquier otro puerto por debajo del 1024), entonces es necesario tener
privilegios de usuario root (superusuario) para iniciar Apache, de modo que pueda establecerse una
conexión a través de esos puertos privilegiados. Una vez que el servidor Apache se ha iniciado y ha
completado algunas tareas preliminares, tales como abrir sus ficheros log, lanzará varios procesos,
procesos hijo, que hacen el trabajo de escuchar y atender las peticiones de los clientes. El proceso
principal, httpd, continúa ejecutándose como root, pero los procesos hijo se ejecutan con menores
privilegios de usuario.
El demonio httpd se debería invocar empleando el script de control apachectl , que es el que se en-
carga de fijar variables de entorno y pasa al demonio (httpd) cualquier opción que se le pase cómo
argumento por línea de comandos.
El script apachectl es capaz de interpretar los argumentos start , restart , y stop y traducirlos en las
señales apropiadas para httpd .
Si en cualquier momento deseásemos parar, reiniciar o arrancar el servidor, podríamos emplear los
siguientes comandos respectivamente:
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 restart
# /etc/init.d/apache2 start
- 14 -
Despliegue de Aplicaciones Web Tema 1
Se define una aplicación web como una aplicación informática que se ejecuta en un entorno web, de
forma que se trata de una aplicación cliente-servidor junto con un protocolo de comunicación pre-
viamente establecido:
Cliente: navegador.
Servidor: servidor web
Comunicación: protocolo HTTP
Un servidor de aplicaciones también es una máquina en una red de computadores que ejecuta de-
terminadas aplicaciones, gestionando la mayor parte de las funciones de acceso a los datos de la
aplicación.
Otra de las ventajas es la integridad de datos y código ya que, al estar centralizada en una o un pe-
queño número de máquinas servidoras, las actualizaciones están garantizadas para todos los usua-
rios.
El término servidor de aplicaciones se aplica a todas las plataformas. Dicho término se utiliza para
referirse a los servidores de aplicaciones basadas en web, como el control de las plataformas de co-
mercio electrónico integrado, sistemas de gestión de contenido de sitios web y asistentes o construc-
tores de sitios de Internet.
Uno de los ejemplos destacados es el de Sun Microsystems, la plataforma J2EE. Los servidores de
aplicaciones Java se basan en la Plataforma Java TM 2 Enterprise Edition (J2EE TM). J2EE utiliza un mo-
delo de este tipo y en general, incluye un nivel Cliente, un nivel Medio, y un EIS. El servidor de tipo
Cliente puede contener una o más aplicaciones o navegadores. La Plataforma J2EE es del Nivel Medio
y consiste en un servidor web y un servidor EJB. (Estos servidores son también llamados "contenedo-
res".) También podría haber subniveles adicionales en el nivel intermedio. El nivel del SistemaEnter-
prise Information System (EIS, o "Sistema de Información Empresarial") contiene las aplicaciones
existentes, archivos y bases de datos.
Esta web detalla 120 aplicaciones disponibles gratuitamente vía web en donde se especifica
la función de cada una de ellas.
http://especial.wetpaint.com/page/120+soluciones+gratis+web+2.0
- 15 -
Implantación de arquitecturas web DAW José Luis Comesaña
Tomcat es el servidor web (incluye el servidor Apache) y de aplicaciones del proyecto Yakarta, con lo
cual, gestiona las solicitudes y respuestas http y, además, es servidor de aplicaciones o contenedor
de Servlets y JSP.
Tomcat puede utilizarse como un contenedor solitario (principalmente para desarrollo y depuración)
o como plugin para un servidor web existente (actualmente soporta los servidores Apache, IIS). Esto
significa que siempre que despleguemos Tomcat tendremos que decidir cómo usarlo y, si seleccio-
namos las opciones 2 o 3, también necesitaremos instalar un adaptador de servidor web.
Las funciones del Servidor Apache y las funciones del servidor Tomcat, ¿son
equivalentes?
Sí No
Básicamente, el servidor Apache es únicamente un servidor web, mientras que el servidor Tomcat es un servidor de aplicaciones.
- 16 -
Despliegue de Aplicaciones Web Tema 1
Empezamos buscando el paquete de Java que nos pueda interesar. Con el siguiente comando ob-
tendríamos la lista del entorno Java, debido a que Debian proporciona varias implementaciones,
cada uno de estos paquetes tiene un entorno de desarrollo (JDK) y un tiempo de ejecución conocido
(JRE o Java Virtual Machines, JVM):
aptitude search "?provides(java-runtime)"
Instalamos el siguiente paquete por ser el que más se adapta a nuestras necesidades:
apt-get install default-jre
Una vez instalado el paquete anterior, es necesario crear una variable de entorno para indicar en
dónde se ha instalado, y añadir a la variable PATH el directorio en donde se encuentran los archivos
binarios para que puedan ser invocados desde cualquier parte; para ello, añadimos en nuestro caso
las siguientes líneas al archivo /etc/profile :
JAVA_HOME=/usr/lib/jvm/java-6-openjdk/jre/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME
Llegado este punto descargamos Tomcat, para ello abrimos en un navegador la URL:
http://apache.rediris.es/tomcat/tomcat-6/, una vez allí comprobaremos cuál es la última versión
estable de Tomcat y, desde la carpeta "bin", copiamos el link de descarga al apache-tomcat-
X.XX.X.tar.gz . En nuestro caso el link sería: http://apache.rediris.es/tomcat/tomcat-
6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz con lo cual podemos emplear el siguiente comando para
descargarlo:
# wget http://apache.rediris.es/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz
En Tomcat, la gestión del servicio se realiza a través del script incluido llamado catalina, al que le
podemos proporcionar los parámetros "start" y "stop", con lo que arrancaríamos o pararíamos el
servicio manualmente.
Para comprobar que nuestro servidor está ya escuchando, introducimos en un navegador la URL
http://127.0.0.1:8080 , y éste debería mostrar la página de inicio de Tomcat.
- 17 -
Implantación de arquitecturas web DAW José Luis Comesaña
Tomcat va a estar escuchando en el puerto 8080 y va a tener su propio directorio de trabajo. La mi-
sión de apache2 va a ser interceptar todas
las peticiones en el puerto 80 y derivar las
que considere necesarias a Tomcat; de este
modo observamos la ventaja de la escalabi-
lidad, ya que apache, al funcionar como
proxy, puede tener una batería de tomcats a
los que balancear las conexiones, haciendo
que, si nuestras necesidades crecen, nues-
tras máquinas puedan ampliarse en número
siendo completamente transparente para los usuarios.
Apache por defecto busca los ficheros en /var/www , Tomcat trabaja sobre la carpeta
/usr/local/tomcat/webapps/ROOT . La petición de una url se puede gestionar, parte por apache y parte
por Tomcat, por lo que vamos a cambiar la carpeta por defecto de trabajo para unificarlo. Para ello
editamos el fichero /usr/local/tomcat/conf/server.xml
#nano /usr/local/tomcat/conf/server.xml
Cargaremos los módulos siguientes para poder conseguir que Apache funcione como proxy:
# a2enmod proxy
# a2enmod proxy_ajp
- 18 -
Despliegue de Aplicaciones Web Tema 1
# a2enmod proxy_balancer
# /etc/init.d/apache2 restart
ajp es un protocolo de comunicación interno y muy rápido que usa conexiones TCP persistentes. Es
este protocolo el que vamos a utilizar para comunicar apache2 con Tomcat, aunque podría ser utili-
zado http, indicando que pregunte en el 8080. El puerto de trabajo por defecto para Tomcat es el
8009, aunque este puede ser variado desde /usr/local/tomcat/conf/server.xml
Modificamos el fichero de configuración del virtualhost que se pretenda utilizar, empleando el esta-
blecido por defecto.
# nano /etc/apache2/sites-enabled/000-default
- 19 -
Implantación de arquitecturas web DAW José Luis Comesaña
Una aplicación web está compuesta de una serie de servlets, páginas jsp, ficheros html, ficheros de
imágenes, ficheros de sonidos, texto, clases, etc.; de forma que todos estos recursos se pueden em-
paquetar y ejecutar en varios contenedores distintos.
Un servlets es una aplicación java encargada de realizar un servicio específico dentro de un servidor
web. La especificación Servlet 2.2 define la estructura de directorios para los ficheros de una aplica-
ción web. El directorio raíz debería tener el nombre de la aplicación y define la raíz de documentos
para la aplicación web. Todos los ficheros debajo de esta raíz pueden servirse al cliente excepto
aquellos ficheros que están bajo los directorios especiales META-INF y WEB-INF en el directorio raíz.
Todos los ficheros privados, al igual que los ficheros class de los servlets, deberían almacenarse bajo
el directorio WEB-INF.
Durante la etapa de desarrollo de una aplicación web se emplea la estructura de directorios, a pesar
de que luego en la etapa de producción, toda la estructura de la aplicación se empaqueta en un ar-
chivo .war
El código necesario para ejecutar correctamente una aplicación web se encuentra distribuido en una
estructura de directorios, agrupándose ficheros según su funcionalidad. Un ejemplo de la estructura
de carpetas de una aplicación web puede ser el siguiente:
/index.jsp
/WebContent/jsp/welcome.jsp
/WebContent/css/estilo.css
/WebContent/js/utils.js
/WebContent/img/welcome.jpg
/WEB-INF/web.xml
/WEB-INF/struts-config.xml
/WEB-INF/lib/struts.jar
/WEB-INF/src/com/empresa/proyecto/action/welcomeAction.java
/WEB-INF/classess/com/empresa/proyecto/action/welcomeAction.class
De forma genérica podríamos decir que una aplicación web se estructura en tres capas:
1. Navegador web.
2. Tecnología web dinámica (PHP, Java Servlets, ASP, etc.)
3. Base de datos encargada de almacenar de forma permanente y actualizada la informa-
ción que la aplicación web necesita.
- 20 -
Despliegue de Aplicaciones Web Tema 1
Aportan como ventaja, la simplificación del despliegue de aplicaciones web, debido a que su instala-
ción es sencilla y solamente es necesario un fichero para cada servidor en un cluster, además de in-
crementar la seguridad ya que no permite el acceso entre aplicaciones web distintas.
Su estructura es la siguiente:
/ : En la carpeta raíz del proyecto se almacenan elementos empleados en los sitios web, tipo do-
cumentos html, CSS y los elementos JSP (*.html *.jsp *.css).
/WEB-INF/ : Aquí se encuentran los elementos de configuración del archivo .WAR como pueden
ser: la página de inicio, la ubicación de los servlets, parámetros adicionales para otros componen-
tes. El más importante de éstos es el archivo web.xml .
/WEB-INF/classes/ : Contiene las clases Java empleadas en el archivo .WAR y, normalmente, en
esta carpeta se encuentran los servlets.
/WEB-INF/lib/ : Contiene los archivos JAR utilizados por la aplicación y que normalmente son las
clases empleadas para conectarse con la base de datos o las empleadas por librerías de JSP.
Para generar archivos .WAR se pueden emplear diversas herramientas desde entorno IDE "Integrated
Development Environment". Por ejemplo, encontramos: NetBeans y Eclipse, ambos Open-Source y
también Jbuilder de Borland, Jdeveloper de Oracle; otro modo de construir archivos war es mediante
Ant. Se trata de una herramienta Open-Source que facilita la construcción de aplicaciones en Java.
No es considerado un IDE pero para los que conocen el entorno Linux, es considerado el make de
Java.
Un archivo .WAR
Es un archivo comprimido que se puede generar con cualquier tipo de compresor, por
ejemplo winzip, winrar, tar, etc.
Es una aplicación web formada únicamente por archivos .html
Es un archivo en el cual se empaqueta en una sola unidad, aplicaciones web
completas.
Es un archivo que engloba el protocolo de comunicación de las aplicaciones web
generadas con Java.
Su nombre procede de Web Application Archive (Archivo de Aplicación Web); permiten empaquetar en una sola unidad aplicaciones web
de Java completas.
- 21 -
Implantación de arquitecturas web DAW José Luis Comesaña
La carpeta www contiene, a su vez, una carpeta con el nombre y ruta del proyecto que contiene los
ficheros que forman la interfaz (html, js, css, etc.). La carpeta bin contiene las clases de java de la
aplicación.
Cualquier aplicación web tiene que aportar un descriptor de despliegue situado en WEB-INF/web.xml ;
en el caso concreto de Tomcat el descriptor <TOMCAT_HOME>/conf/web.xml es un descriptor por defecto
que se ejecuta siempre antes del descriptor de la aplicación y, solamente, debería contener informa-
ción general y no específica de la aplicación.
- 22 -
Despliegue de Aplicaciones Web Tema 1
Situadas entre las etiquetas <web-app> y /<web-app> estarían los descriptores de despliegue de serv-
lets, los cuales deben contener las siguientes etiquetas en el siguiente orden:
<servlet>
<servlet-name>nombre</servlet-name>
<servlet-class>package.nombre.MiClass</servlet-class>
</servlet>
Para probar el servlet, una vez arrancado el servidor Tomcat, abrimos un navegador web, en el cual
escribiríamos una URL con el siguiente formato:
http://{address}:{port}/{servletName}
por ejemplo:
http://localhost:8080/Servlet_de_prueba
Llegado hasta este punto, puedes realizar la siguiente SOPA DE LETRAS en la que podrás comprobar
tus conocimientos sobre esta unidad de trabajo:
No hay secretos para el éxito. Éste se alcanza preparándose, trabajando arduamente y aprendiendo
del fracaso.
Colin Powell (1937-..)
- 23 -