Linux segunda edición ●
Hospital de Clínicas
●
División Procesamiento de la información
●
Instalación de ambiente de desarrollo java y servidor de aplicaciones tomcat
¿Java que necesito? Dado que existen varias ambientes de desarrollo java disponibles para Linux nos centraremos en la instalación de la versión de Sun Java Enviroment que es la que nos asegura la mayor compatibilidad con Tomcat Para instalar Sun Java Environment en Debian lenny o Ubuntu versión 9.x o superior dado que este ambiente esta integrado en las distribuciones en sus repositirios principales, debemos realizar lo siguiente:
# apt-get install sun-java5-jdk sun-java5-fonts sun-java5-doc sun-java5-jre o #apt-get install sun-java6-jdk sun-java6-fonts sun-java6-doc sun-java6-jre
●
o mejor mejor a através de de Synaptic
Instalar mediante el synaptics o apt-get install Los paquetes a instalar serian:
sun-java6-bin sun-java6-fonts sun-java6-jdk sun-java6-jre sun-java6-plugin
Java que necesito en etch Para instalar Sun Java Environment en Debian etch o versiones de Linux donde se tenia que el ambiente de Sun tenemos que se encontraba en los repositorios no libres. Debemos agregar al archivo /etc/apt/sources.list/ la opción de repositorios nonfree deb http://debian.las.ic.unicamp.br/debian/ etcj main contrib non-free
Ejecutar luego apt-get update Para luego si instalar SUN java: # apt-get install sun-java5-jdk sun-java5-fonts sun-java5-doc sun-java5-jre
Configurar alternativas para Java (si tenemos más de un entorno instalado) Si disponemos de más de un runtime de java instalado (en las versiones etch por defecto se instalaba una de sus alternativas libres). Es facil ver esto listando las alternativas para java con el comando: ls /usr/lib/jvm/ y para ver cual es la que esta preseleccionada ejecutamos ls -l /etc/alternatives/java (o java -version) En caso de que no sea la maquina virtual de SUN la que este seleccionada podemos cambiar esto utilizando: sudo update-java-alternatives -s java-6-sun Verificamos ejecutando: java -version java version "1.6.0_12" Java(TM) SE Runtime Environment (build 1.6.0_12-b04) Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)
Idem para las opciones de los comandos javac y jar
Configurar variables de ambiente para un usuario Si requerimos de configurar las variables de ambiente para los usuarios, a efectos principalmente de utilizar aplicaciones java o realizar desarrollos para los que deseamos encontrar clases de java (en el ejemplo las clases de jai) sudo gedit /etc/bash.bashrc (o solo para un usuario $HOME/.bashrc)
y pegamos esto exactamente al final de ese archivo JAVA_HOME=/usr/lib/jvm/java-6-sun/jre/ export JAVA_HOME PATH=$PATH:$JAVA_HOME/bin export PATH CLASSPATH=/usr/lib/jvm/java-6-sun/:/usr/local/lib/JAVA/sigpac:/usr/local/lib/JAVA/jai-1_1_3alpha/lib/mlibwrapper_jai.jar: /usr/local/lib/JAVA/jai-1_1_3-alpha/lib/jai_core.jar: /usr/local/lib/JAVA/jai-1_1_3-alpha/lib/jai_codec.jar
Export CLASSPATH
Java IV - Alternativos i3053547@lx-gustavo:~$ java -version java version "1.6.0_06" Java(TM) SE Runtime Environment (build 1.6.0_06-b02) Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
Si nos fijamos adonde apunta el enlace en usr/bin:
i3053547@lx-gustavo:~$ ls -l /usr/bin/java lrwxrwxrwx 1 root root 22 2008-05-19 18:51 /usr/bin/java -> /etc/alternatives/java
Instalar Servidor aplicaciones Tomcat Para instalar los paquetes necesarios bastaria con: $ sudo apt-get install tomcat5.5 tomcat5.5-webapps tomcat5.5-admin
Podemos parar/arrancar tomcat como root ejecutando:
$ sudo /etc/init.d/tomcat5.5 start
* Starting Tomcat servlet engine tomcat5.5
[ OK ]
Y detenerlo con: $ sudo /etc/init.d/tomcat5.5 stop
* Stopping Tomcat servlet engine tomcat5.5
[ OK ]
Problemas post - instalación Si al procesar estas tareas obtenes el siguiente error: el subproceso post-installation script devolvió el código de salida de error 1
Debemos como primer paso configurar la variable JAVA_HOME
$ sudo gedit /etc/default/tomcat5.5
Comentamos la línea y corregimos el directorio al java que tenemos instalado: JAVA_HOME=/usr/lib/jvm/java-5-sun
$ sudo apt-get -f install tomcat5.5
Directorios de Tomcat Cuando nos referimos a $CATALINA_HOME. Esto representa la raíz de nuestra instalación de Tomcat. A nuestros efectos en Debian y ubuntu será el directorio indicado en /etc/default/tomcat5.5. Por ejemplo /usr/share/tomcat5.5/ en este directorio encontramos los binarios de tomcat en el directorio ./bin y las librerias generales dentro del directorio ./lib ( aquí ubicamos por ejemplo los drivers de base de datos etc).
CATALINA_BASE: este directorio indica donde encontraremos los archivos de configuración ./conf , directorio para alojar a las aplicaciones ./webapps, librerias compartidas ./shared, directorios de registros ./log y temporales de ejecución ./work . Por defecto en Ubuntu y Debian para el tomcat5.5 tenemos que CATALINA_BASE=/var/lib/tomcat5.5.
Nota: En general en cada una de las rutas antes mencionadas, tenemos links simbólicos para todas las carpetas (tanto las que suelen estar bajo CATALINA_BASE como las que se encuentran bajo CATALINA_HOME Ejercicio: ejecuten ls -l /var/lib/tomcat5.5 luego ls -l /usr/share/tomcat5.5 y despues ls -l /var/cache/tomcat5.5
Directorios de Tomcat II Si revisamos con cat /var/log/tomcat5.5/catalina_<> Obtenemos al inicio una lista de los directorios que se configuraron para esa instalación: Using CATALINA_BASE: /var/lib/tomcat5.5 Using CATALINA_HOME: /usr/share/tomcat5.5 Using CATALINA_TMPDIR: /var/lib/tomcat5.5/temp Using JRE_HOME: /usr/lib/jvm/java-6-sun Deberia aparecer tambien esta línea pero luego veremos algo al respecto a esta opción: Using Security Manager
Verificar si tenemos corriendo el servicio lx-gustavo:~# netstat -punta Active Internet connections (servers and established) Proto Recv-Q Send-Q
Local Address
Foreign Address
State
PID/Program name
tcp
0
0
*:swat
*:*
LISTEN
3 179/inetd
tcp
0
0
*:netbios-ssn
*:*
LISTEN
3 189/smbd
tcp
0
0
*:sunrpc
*:*
LISTEN
2 541/portmap
tcp
0
0
*:auth
*:*
LISTEN
3 179/inetd
tcp
0
0
*:microsoft-ds
*:*
LISTEN
3 189/smbd
.................. otras conexiones tcp
0
0 lx-gustavo.clinic:37927 apolo2.hc.edu.uy:imaps E STABLISHED3 1920/icedove-bin
..................... otras conexiones
tcp6
0
0
*:www
*:*
LISTEN
9 599/apache2
tcp6 0
0
*:8180
*:*
LISTEN
2 8709/java
Archivos de configuración del tomcat /etc/default/tomcat5.5, configuración general para el tomcat donde se indica la carpeta por defecto para los distintos componentes del sistema, cual es el runtime de java a utilizar para ejecutar tomcat como se vio anteriormente y demás variables de ambiente para la ejecución de tomcat.
CATALINA_BASE/conf/server.xml. aquí configuramos los parámetros generales del
sistema, es el principal archivo de configuración de tomcat.
CATALINA_BASE es como vimos por ejemplo para el caso de debian
/var/lib/tomcat5.5 (tambien puede estar referido en instalaciones anteriores como TOMCAT_HOME, y puede leerse su valor en el archivo /etc/default/tomcat5.5 )
/var/lib/tomcat5.5/conf/tomcat-users.xml podemos encontrar los usuarios de acceso entre los que tendremos que revisar los que tienen el rol de admin o manager que son con los que podemos luego entrar a la interfase administrativa via web de los aplicativos admin y manager, el rol role1 se debe eliminar.
Archivos de configuración del tomcat (server.xml) ●
/var/lib/tomcat5.5/conf/server.xml Podemos ver algunas de las principales opciones que encontramos en este archivo...
Las siguientes líneas definen puerto y opciones para el puerto de conexión al servidor utilizando http, en el ejemplo 8180 otro valor comun es 8080 ●
Nota: Si hacemos cambios en este archivo reiniciamos el servicio
Archivos de configuración del tomcat (server.xml) El siguiente es el conector para conectarse a la aplicación utilizando protocolo https, conjuntamente al valor de puerto se pueden configurar las opciones para utlizar autenticación solo del lado del servidor o mutua (servidor y cliente) con clientAuth=”true”. Asi como los respectivos almacenes para los certificados validos tanto para identificarse a si mismo como para autenticar clientes, como se describe más adelante. -->
(Por defecto comentado , si queremos habilitarlo lo descomentamos)
Archivos de configuración del tomcat (server.xml) ●
La siguiente opción permite que las aplicaciones se desplieguen automáticamente al ser colocadas en formato comprimido (.war) en la carpeta webapps.
xmlValidation="false" xmlNamespaceAware="false"> En este caso se indica que se desplieguen automaticamente los archivos .war que se copien a la carpeta webapps. Esta opción no se recomienda
Archivos de configuración III vi /var/lib/tomcat5.5/conf/tomcat-users.xml
Como se componen los directorios de aplicaciones Cuando analizamos como se disponen los archivos de una aplicación, tendremos que para cada una de ellas identificamos un subdirectorio en la carpeta TOMCAT_HOME/webapps con el nombre de nuestra aplicación, por ejemplo mi_aplicacion. En el caso de Debian el directorio de aplicaciones: Suele ser /var/lib/tomcat5.5/webapps ( o desde el link simbolico /usr/share/tomcat5.5-webapps )
Para nuestra aplicación de ejemplo: /usr/lib/mi_aplicacion/
Este directorio será la raíz de cada aplicación web. es donde se pueden colocar los ficheros HTML, JSP, de imagenes, servlets, etc, que componen nuestro sitio. A esta carpeta será a la que se vaya cuando el cliente haga una petición a nuestra aplicación por medio de la URL http://mi_servidor:[PUERTO]/mi_aplicacion/
Despliegue de aplicaciones Normalmente las aplicaciones se componen de un conjunto de archivos y carpetas conteniendo los archivos html, jsp, class que se comprimen en un archivo con extensión .war. Al realizar la copia de este archivo en el directorio de aplicaciones (en debian /usr/lib/tomcat/webapps), tomcat descomprime este archivo y crea el directorio de la aplicación con su estructura y contenido, ese proceso lo denomina despliegue (deploy). ●
●
Nota: El despliegue del archivo .war se realiza automáticamente si la opción de autodeploy se encuentra seleccionada en el archivo server.xml. En caso contrario deberíamos reiniciar el tomcat para que esto ocurra, el autodespliegue es oportuno mientras se realiza la depuración del software pero resta rendimiento en producción.
Que encontramos en un directorio de aplicacion El directorio raíz de su estructura de directorios es también la raíz de su aplicación web. Aquí podemos colocar archivos HTML y JSP de la interfase de usuario, asi como servlets java. Al invocarse la URI de nuestra aplicación ya desplegada, tomcat buscará automáticamente el archivo index.html a partir del directorio raiz de la misma para mostrar su contenido al usuario. Las siguientes son las carpetas que podemos identificar dentro del directorio de la aplicación: * /WEB-INF/web.xml – Este archivo XML (Web Application Deployment Descriptor) e s el descriptor principal para nuestra aplicación. Este describe los servlets, parámetros iniciales, restricciones de seguridad y otros componentes para levantar la aplicación. Este archivo de configuración , tomcat espera encontrar para cada aplicación.
* /WEB-INF/classes/ - Este directorio contiene los as clases de Java (archivos .class) requeridos para nuestra aplicación, incluyendo ambos servlet y non-servlet classes, que no esten combinados en archivos JAR. Si nuestra aplicación esta organizada en paquetes Java esto se reflejará en nuestra estructura de directorios bajo /WEB-INF/classes/. Ej: para una clase Java llamada com.mycompany.mypackage.MyServlet necesitamos guardar un archivo llamdo /WEBINF/classes/com/mycompany/mypackage/MyServlet.class. * /WEB-INF/lib/ - Aqui incluiremos las clases, archivos JAR requeridos para nuestra aplicación pero provistos por terceros ej: las libreriarias de drivers JDBC de conexión con base de datos
Ejemplo de un archivo web.xml prueba HolaMundo prueba hola
En servlet-name indicaremos el nombre de nuestra aplicación y lo haremos coincidir con el directorio donde la tenemos guardada (aquel cuyo contenido estamos creando ahora). En servet-class ponemos la clase principal de nuestra aplicación y en url-pattern la dirección desde la cual accederemos al servlet.