Tomcat

irontec 927 views 33 slides Oct 22, 2009
Slide 1
Slide 1 of 33
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33

About This Presentation

No description available for this slideshow.


Slide Content

TOMCAT
Miguel Ángel Nieto <[email protected]>
Irontec – Internet y Sistemas sobre GNU/Linux

Irontec – Tomcat / JBoss
2
Tomcat
●Tomcat es otro proyecto de la Apache Foundation
●Es un servidor Web con soporte de Servelts y JSPs
http://tomcat.apache.org/
●Suele utilizarse en conjunto con Apache Web Server
●Tomcat está escrito en Java, por lo que funciona en
cualquier sistema operativo con máquina virtual

Irontec – Tomcat / JBoss
3
Servlets
●Una de las funcionalidades más comunes de un
servlet es generar páginas web dinámicas
●Servlet deriva de applet. Un applet es un programa
Java que se ejecuta en el lado cliente. Servlet, por
su parte, en el lado servidor
●Nuestro servidor Tomcat, hará uso de los servlets
que en el instalemos para generar páginas
dinámicas
http://es.wikipedia.org/wiki/Java_Servlet

Irontec – Tomcat / JBoss
4
Servlets
●El ciclo de vida de un Servlet se divide en los
siguiente puntos:
–El cliente solicita una petición a un servidor vía URL.
–El servidor recibe la petición.
–Si es la primera, se utiliza el motor de Servlets para
cargarlo y se llama al método init().
–Si ya está iniciado, cualquier petición se convierte en un
nuevo hilo. Un Servlet puede manejar múltiples
peticiones de clientes.
–Se llama al método service() para procesar la petición
devolviendo el resultado al cliente.
–Cuando se apaga el motor de un Servlet se llama al
método destroy(), que lo destruye y libera los
recursos abiertos.

Irontec – Tomcat / JBoss
5
JSP
●JSP es JavaServer Pages
●Es otra tecnología Java que permite generar
contenido dinámico web
●Con JSP podemos hacer lo mismo que un Servlet y
viceversa
●JSP es una página Web con etiquetas especiales y
código Java incrustado, mientras que un servlet es
un programa Java puro que recibe peticiones y
genera a partir de ellas una página web

Irontec – Tomcat / JBoss
6
Instalación
●Para instalar Tomcat es necesario dos elementos
básicos
–Tomcat
–¡Java!
●Eso es todo :)
●Desde la web oficial es posible descargarse distintas
versiones. En el momento de escribir este manual,
la última versión es:
6.0.18

Irontec – Tomcat / JBoss
7
Instalación
●Descargamos la última versión y la descomprimimos
●Es posible descargar el binario (precompilado) o el
código fuente
●Para GNU/Linux descargamos la version binaria en
formato tar.gz
●El fichero, una vez descomprimido, nos crea una
carpeta con todo lo necesario para funcionar
●Con esto ya tenemos el primero de los dos
requisitos

Irontec – Tomcat / JBoss
8
Instalación
●Dentro de la carpeta bin vemos dos scripts
●Startup arranca tomcat. Shutdown para tomcat
●Si lo ejecutamos desde la consola podremos ver los
mensajes de error
Neither the JAVA_HOME nor the JRE_HOME
environment variable is defined
At least one of these environment
variable is needed to run this program

Irontec – Tomcat / JBoss
9
Instalación
●Es necesario instalar Java Runtime
●Podemos hacerlo bajando la última versión de la
web de Sun o desde el gestor de paquetes de
GNU/Linux
●El nombre del paquete en cuestión es:
sun-java5-jre

Irontec – Tomcat / JBoss
10
Instalación
root@irontec-desktop:~# apt-get install sun-java5-
jre
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
gsfonts-x11 java-common odbcinst1debian1 sun-
java5-bin unixodbc xutils-dev
Paquetes sugeridos:
equivs sun-java5-plugin ia32-sun-java5-plugin sun-
java5-fonts libmyodbc odbc-postgresql libct1
Se instalarán los siguientes paquetes NUEVOS:
gsfonts-x11 java-common odbcinst1debian1 sun-
java5-bin sun-java5-jre unixodbc xutils-dev
0 actualizados, 7 se instalarán, 0 para eliminar y 0
no actualizados.

Irontec – Tomcat / JBoss
11
Instalación
●Una vez instalado ya tenemos JRE y podemos
arrancar Tomcat
irontec@irontec-desktop:~/apache-tomcat-6.0.18/bin$
./startup.sh
Using CATALINA_BASE: /home/irontec/apache-tomcat-6.0.18
Using CATALINA_HOME: /home/irontec/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /home/irontec/apache-tomcat-
6.0.18/temp
Using JRE_HOME: /usr

Irontec – Tomcat / JBoss
12
Tomcat
●Tomcat por defecto estucha en los puertos:
–8080 (puerto por defecto de Tomcat)
–8005 (puerto para apagar Tomcat)
–8009 (conector AJP)
●Si entramos en http://direccion.ip:8080 podremos
ver la página principal de Apache Tomcat :)
●¡Ya tenemos Tomcat instalado!

Irontec – Tomcat / JBoss
13
Tomcat
●Los ficheros de Tomcat se encuentran en la carpeta
conf
●Cambiad el puerto por defecto de 8080 a 81
●Intentad entrar a la gestión del Manager ¿Se
puede? Solucionadlo :)

Irontec – Tomcat / JBoss
14
Tomcat
●Desde la gestión del manager es posible desplegar
nuevos Servlets
●También es posible parar, arrancar los servlets
implementados
●Los podemos descargar en nuestro ordenador
personal y desplegarlos al servidor desde el
navegador, sin necesidad de toca ni un solo fichero
de configuración
http://tomcat.apache.org/tomcat-6.0-doc/appdev/sample/

Irontec – Tomcat / JBoss
15
Tomcat
●El conector de Apache con Tomcat nos permite unir
las dos aplicaciones
●Podemos instalarlo desde el gestor de paquetes
libapache2-mod-jk
●Una vez instalado será necesario habilitar el módulo

Irontec – Tomcat / JBoss
16
Tomcat
●Tomcat puede actuar por si solo como servidor web
●Solemos unir Apache y Tomcat por temas de
rendimiento. Apache es más rapido sirviendo
páginas estáticas que Tomcat. La idea suele ser
dejar a Apache servir las estáticas y Tomcat las
dinámicas
●La union se hace mediante el módulo instalado
anteriorment

Irontec – Tomcat / JBoss
17
Tomcat
●Otras razones para usar Apache y Tomcat:
–Apache puede actuar como frontend para distintas
instancias de Tomcat. Si un Tomcat se cae, Apache
lo ignora y va a los siguientes
–Apache puede actuar de proxy intermedio, de forma
que los usuarios solo tienen acceso a el y no acceso
directo a Tomcat
–Apache soporta facilmente CGIs, PHP, perl, etc.
–Apache dispone de muchos más modulos, como
mod_authz, mod_rewrite, etc.

Irontec – Tomcat / JBoss
18
Tomcat
●Chuleta rápida:
http://tomcat.apache.org/connectors-doc/generic_howto/quick.html
●Es necesario crear un fichero workers.properties
●Un Worker es una instancia de Tomcat que está
esperando para ejecutar un servlet
●En el fichero debemos definir las instancias a las
que Apache tendrá acceso

Irontec – Tomcat / JBoss
19
Tomcat
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
●Resumiendo
–El worker se llama “worker1”
–Protocolo ajp versión 13
–Escucha en localhost
–Puerto 8009

Irontec – Tomcat / JBoss
20
Tomcat
●Hay que decirle a apache donde se encuentra el
fichero de configuración del worker. En httpd.conf
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/mod_jk.log
JkLogLevel info
JkMount /examples/ worker1
●Resumiendo:
–El workerfile está en esa ruta
–Los logs van a /var/log
–Cada vez que accedamos a /examples/ lo redirigrá al
tomcat worker1

Irontec – Tomcat / JBoss
21
Tomcat
●JKMount se puede aplicar de forma global, pero
este no se replica en los VirtualHost que tenemos
configurados.
●Apache suele traer un VirtualHost por defecto. Para
que copie el JPMount global se le debe indicar la
directiva
JkMountCopy on
●Se deberá poner en todos aquellos VirtualHost que
deseamos tener el JkMount global
●O si no, JkMountCopy all :D

Irontec – Tomcat / JBoss
22
Tomcat
http://tomcat.apache.org/connectors-doc/generic_howto/workers.html
http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html
http://tomcat.apache.org/connectors-doc/generic_howto/proxy.html
http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html

Irontec – Tomcat / JBoss
23
Jboss
●Jboss es el servidor de aplicaciones de Red Hat,
completamente implementado en Java. EJB/JMS
http://www.jboss.org/
●Es completamente libre
●Multiplataforma, allí donde tengamos máquina
virtual (y recursos suficientes) podremos tener
Jboss

Irontec – Tomcat / JBoss
24
Jboss
●A diferencia de Tomcat, que solo es un contenedor
de Servlets, Jboss es un servidor de aplicaciones
completo.
●Soporta la API de desarrollo de aplicaciones
empresariales EJB
http://es.wikipedia.org/wiki/EJB
●Soporta JMS (servicio de mensajería Java)
http://es.wikipedia.org/wiki/JMS

Irontec – Tomcat / JBoss
25
Jboss
●Jboss escucha también en el puerto 8080, por lo
que habrá que tener cuidado si tenemos un proxy,
Oracle o Tomcat instalados
●La instalación es igual que Tomcat, descargar,
descomprimir y usar
●Será necesario instalar el JDK de Sun
http://www.jboss.org/jbossas/downloads/

Irontec – Tomcat / JBoss
26
Jboss
●Jboss incluye Tomcat 5.5, por lo que el puerto 8009
estará abierto
●Se recomienda no instalar Jboss y Tomcat
separado, ya que estaremos instalando dos
versiones de Tomcat que se pelearán por los
mismos puertos
●Para parar y arrancar Jboss tendremos los scripts
run.sh y shutdown.sh

Irontec – Tomcat / JBoss
27
Jboss
●Por defecto Jboss solamente escucha en la interfaz
loopback 127.0.0.1
●Si lo que deseamos es que el servicio sea accesible
desde fuera, será necesario arrancarlo escuchando
en cualquier interfaz
●./run -b 0.0.0.0
●No suele ser necesario, ya que jboss o Tomcat
suelen ser accedidos desde Apache. La
comunicación es a través de 127.0.0.1

Irontec – Tomcat / JBoss
28
Jboss
●Jboss es completamente modular
●Esta funcionalidad se la ofrece la API JMX (Java
Management Extension) sobre la cual está contruida
●Permite gestionar y monitorizar una gran variedad
de componentes
●Jboss incluye una consola web que permite
interactuar con todos los módulos a golpe de ratón
http://es.wikipedia.org/wiki/JMX

Irontec – Tomcat / JBoss
29
Jboss
●Dentro de Jboss tenemos una serie de carpetas:
–Bin (scripts para controlar Jboos)
–Client (librerias usadas por el cliente remoto)
–Docs (documentación)
–Lib (librerias base de Jboss)
–Server (servicios hospedados)
●De las carpetas mostradas anteriormente, las más
importante serán Server y Bin

Irontec – Tomcat / JBoss
30
Jboss
●Dentro de server tenemos distintas configuraciones
–Minimal (lo mínimo para funcionar, como logging y
deployments)
–Default (la configuración por defecto, si no se especifica
otra. Lo mismo que minima, con opciones de
seguridad, servicios de transacción, etc.)
–Web (lo necesario para servir aplicaciones web)
–All (todo, todo y todo)
●Si se desea crear una configuración personaliza, se
pueden copiar una de esas carpetas con otro
nombre y comenzar a personalizarla
●Para indicar que server arrancar:
run.sh -c miconfiguración

Irontec – Tomcat / JBoss
31
Jboss
●Dentro de cada configuración de servidor tenemos
las siguientes carpetas:
–Conf (ficheros de configuración)
–Data (donde jboss guarda datos
–Deploy (aquí ponemos nuestros componentes o
aplicaciones. Se leen dinámicamente)
–Lib (librerias requeridas para esta configuración)
–Log (logs de esta configuración)
–Tmp (almacenamiento de ficheros temporales)
–Work (para cacheo JSP)

Irontec – Tomcat / JBoss
32
Jboss
●Vamos a crear nuestra propia aplicación para
Jboss :)
http://www.novell.com/coolsolutions/feature/14912.html
●Como siempre, un hola mundo.

Irontec – Tomcat / JBoss
33
Jboss
●Como Jboss usa por debajo Tomcat 5.5 en el puerto
8009, la configuración del conector es exactamente
igual
●Configurad el HelloWorld para que sea accesible
mediante Apache con el módulo JK.