glassfish-110427032605-phpapp01

11
 Despliegue de aplicaciones con Glassfish 3 José Manuel Ferrete Benítez

Upload: erick-rivera

Post on 11-Jul-2015

330 views

Category:

Documents


0 download

TRANSCRIPT

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 1/11

 

Despliegue de

aplicacionescon

Glassfish 3José Manuel Ferrete Benítez

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 2/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

ÍndiceInstalación.............................................................................................................................................3

Administración.....................................................................................................................................5Administración de Glassfish mediante la interfaz web...................................................................5

Despligue de aplicaciones...........................................................................................................5

Administración de Glassfish desde la terminal................................................................................6Ficheros de configuración...........................................................................................................6

Despliegue de aplicaciones desde la terminal.............................................................................7Seguridad..............................................................................................................................................7

HTTPS.............................................................................................................................................8

Logging...............................................................................................................................................10Recomendaciones...............................................................................................................................11

2

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 3/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

InstalaciónLa instalación de Glassfish es muy sencilla tanto para entornos Linux como Windows.

En este documento explicaremos como se realizaría la instalación en un sistema Debian Squeeze.

Lo primero que tenemos que hacer será preparar nuestra máquina para que sea capaz de ejecutar

aplicaciones Java:

#aptitude update

#aptitude install sun-java6-jdk

Esto puede tardar un poco dependiendo de nuestro ancho de banda. Además nos presentará un

acuerdo que debemos aceptar para instalarlo.

Ahora procederemos a descargar Glassfish desde su web oficial: “http://glassfish.java.net/es/”.

Descargamos la última versión del instalador para linux, “glassfish-3.1-unix-ml.sh”.

Este instalador nos permite ejecutarlo entre otras, de dos formas, con interfaz gráfica o sin ella.Debemos tener en cuenta que no siempre vamos a tener a mano un entorno gráfico, y menos si se

trata de un servidor.

Por ello explicaremos como instalarlo sin hacer uso de la interfaz. Seguiremos los siguientes pasos:

1. Nos creamos un fichero de respuestas a las preguntas que nos realizaría la interfaz de

instalación.

#nano /tmp/borrame.txt

Con el siguiente contenido:

RegistrationOptions.regoptions.CREATE_NEWACCT=CREATE_NEWACCTglassfish.Administration.HTTP_PORT=8080updatetool.Configuration.PROXY_PORT=glassfish.Administration.ADMIN_PASSWORD=JDKSelection.directory.JDK_FROM_LIST_CHOICE=trueRegistrationOptions.regoptions.SKIP_REGISTRATION=SKIP_REGISTRATIONupdatetool.Configuration.PROXY_HOST=SOAccountCreation.accountinfo.COUNTRY=InstallHome.directory.INSTALL_HOME=/opt/glassfish3RegistrationOptions.regoptions.USE_EXISTINGACCT=USE_EXISTINGACCTSOAccountCreation.accountinfo.FIRSTNAME=updatetool.Configuration.ALLOW_UPDATE_CHECK=trueglassfish.Administration.ADMIN_USER=admin

JDKSelection.directory.JDK_LIST=/usr/lib/jvm/java-6-sun/SOAccountCreation.accountinfo.PASSWORD=SOAccountCreation.accountinfo.COMPANYNAME=JDKSelection.directory.HIDDEN_JDK=SOAccountCreation.accountinfo.COUNTRY_DROP_DOWN=SOAccountCreation.accountinfo.REENTERPASSWORD=License.license.ACCEPT_LICENSE=0RegistrationOptions.regoptions.USERNAME=updatetool.Configuration.BOOTSTRAP_UPDATETOOL=trueSOAccountCreation.accountinfo.LASTNAME=glassfish.Administration.ADMIN_PORT=4848RegistrationOptions.regoptions.USERPASSWORD=JDKSelection.directory.JDK_TYPED_IN_CHOICE=falseSOAccountCreation.accountinfo.EMAIL=

JDKSelection.directory.JDK_TYPE_IN=RegistrationOptions.regoptions.DUMMY_PROP=

3

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 4/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

Explicando algunas de las líneas podríamos decir que:

glassfish.Administration.HTTP_PORT=8080

Es el puerto por defecto donde escucharía las peticiones nuestro glassfish.

InstallHome.directory.INSTALL_HOME=/opt/glassfish3

Se trata del directorio donde se instalará glassfish.

glassfish.Administration.ADMIN_USER=admin

Usuario con el que accederemos al panel de administración.

glassfish.Administration.ADMIN_PASSWORD=

Contraseña del usuario anterior, en este momento se ha dejado en blanco, pero en un

entorno real, debería ser una contraseña que cumpliera con los requisitos de complejidadsuficientes.

JDKSelection.directory.JDK_LIST=/usr/lib/jvm/java-6-sun/

Directorio donde se encuentra el jre instalado anteriormente.

glassfish.Administration.ADMIN_PORT=4848

Puerto por defecto que usará glassfish para servirnos el panel de administración.

2. Procedemos a instalar glassfish desde la terminal con el siguiente comando:

#sh /opt/glassfish-3.1-unix-ml.sh -a /tmp/borrame.txt -s

Dejamos que se instale...

3. Lanzamos nuestro servidor:

#/opt/glassfish3/bin/asadmin start-domain

Más adelante, en el apartado administración explicaremos con más detalle este comando.

4. Si accedemos al panel de administración (http://localhost:4848/ por defecto) veremos la

siguiente pantalla:

4

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 5/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

AdministraciónEn esta sección hablaremos sobre las formas de administrar nuestro glassfish, dependiendo de lo

que queramos hacer en cada momento.

Generalmente existen dos formas de administrar nuestro servidor de aplicaciones. Al igual que suinstalación, lo podemos administrar con o sin interfaz gráfico.

Si lo vamos a hacer mediante una interfaz utilizaremos el panel de administración web nombrado

anteriormente.

Aunque existirán opciones que no encontraremos en el panel de administración y que no quiere

decir que nuestro glassfish no sea capaz de llevarlas a cabo. Para ello utilizaremos la administraciónpor línea de comandos. Algunas funciones específicas del uso de la terminal pueden ser:

• Edición de ficheros a mano.

• Uso de comandos de administración (Ej: asadmin...).

• Configuraciónes avanzadas (Ej: combinar apache con glassfish...).

 Administración de Glassfish mediante la interfaz web.

Algunas de las tareas que suele realizar un administrador es el despliegue de las aplicaciones en el

servidor.

Despligue de aplicaciones

Es bastante sencillo, simplemente le damos a Aplicaciones → Implementar.

5

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 6/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

Nos pedirá la ruta del fichero que contendrá la aplicación, en este caso es un contenedor war.

Seguidamente hacemos clic en Aceptar.

Nos aparecerá el siguiente indicador:

Como resultado obtendremos la aplicación correctamente implantada.

Para acceder a ella: http://localhost:8080/mi_aplicacion/.

 Administración de Glassfish desde la terminal.

Es hora de conocer con profundidad el comando “asadmin”. Este comando nos permite entre otrascosas levantar y parar el servicio.

Comenzaremos por algo sencillo como puede ser listar las aplicaciones implantadas:

#/opt/glassfish3/bin/asadmin list-applicationsEste comando nos debe devolver un listado de las aplicaciones indicando de que tipo son.

Al comando asadmin se le puede pasar atributos que nos ayuden a conseguir la información querealmente necesitamos. Ahora listaremos sólo las aplicaciones de un host concreto.

#/opt/glassfish3/bin/asadmin --host localhost list-applications

En este caso nos devolverá las mismas aplicaciones, pero también nos puede ayudar a saber quéaplicaciones tenemos implantadas en hosts remotos.

Junto con el host, podemos indicarle además atributos como el tipo de aplicación, el puerto, el

usuario con el que autenticarse (por defecto: admin) y mas cosas que por ahora no necesitaremos.

Un comando básico es también el de levantar, reiniciar y parar el servidor:

#/opt/glassfish3/bin/asadmin <start-domain | restart-domain | stop-domain>

Ficheros de configuración.

Una vez que se habla de administración de glassfish debemos tener claro que dicho servidor deaplicaciones trabaja con dominios, cada dominio no es más que un servicio.

Al instalarse glassfish, se crea por defecto el dominio “domain1” escuchando las peticiones en los

puertos 8080, 8181 y 4848.

Bien, esto y muchas mas cosas se pueden modificar en el fichero de configuración del dominio:

 /opt/glassfish3/glassfish/domains/domain1/config/domain.xml

Cada vez que modifiquemos este fichero deberemos utilizar el comando asadmin para verificarlo.

Para crear un nuevo dominio simplemente ejecutamos el siguiente comando:

#/opt/glassfish3/bin/asadmin create-domain --adminport 4949 --instanceport 9090 domain2

Indicándole el puerto de admnistración, el de escucha para HTTP y el nombre del dominio. Si lo

hacemos así puede que queden puertos demasiados altos configurados en nuestro servidor, comopor ejemplo el de HTTPS, el cual nos puede haber configurado en el 62000 por poner un ejemplo.

6

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 7/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

Para solucionar esto vamos a utilizar un puerto base sobre el que se calcularán todos los demás a la

hora de crear el servidor:

#/opt/glassfish3/bin/asadmin create-domain --portbase 9000 domain2

Con este comando nos creara un servidor con las siguientes conexiones:Utilizando el puerto 9048 para Admin.

Utilizando el puerto 9080 para HTTP Instance.

Utilizando el puerto 9076 para JMS.

Utilizando el puerto 9037 para IIOP.

Utilizando el puerto 9081 para HTTP_SSL.

Utilizando el puerto 9038 para IIOP_SSL.

Utilizando el puerto 9039 para IIOP_MUTUALAUTH.

Utilizando el puerto 9086 para JMX_ADMIN.

Utilizando el puerto 9066 para OSGI_SHELL.

Utilizando el puerto 9009 para JAVA_DEBUGGER.

Mucho más fácil de interpretar y de recordar verdad.

El parámetro create-domain admite muchas más opciones, para acceder a ellas y ver para qué sirven

sólo hay que ejecutar la siguiente instrucción:

#/opt/glassfish3/bin/asadmin create-domain --help

Para eliminar un dominio basta con ejecutar el comando con el parámetro delete-domain.

#/opt/glassfish3/bin/asadmin delete-domain domain2

Despliegue de aplicaciones desde la terminal

Volveremos a utilizar asadmin para realizar también esta función.

Desplegar:

#/opt/glassfish3/bin/asadmin deploy --contextroot mi_aplicacion /ruta/mi_aplicacion.war

Eliminar:

#/opt/glassfish3/bin/asadmin undeploy mi_aplicacion

SeguridadLlegando a este apartado nos centraremos en las conexiones ssl con nuestro servidor. Cuandoinstalamos glassfish se nos crea automáticamente un certificado autofirmado y se nos abre el puerto

8181 por defecto para las conexiones seguras, habilitando HTTPS por defecto desde su instalación.

Es posible utilizar otros certificados, como por ejemplo los que nos proporcione la empresa con laque trabajamos o la empresa a la que ofrecemos el servicio.

Una diferencia con respecto a otros servicios es que los certificados deben estar almacenados en un

fichero keystore, que podemos encontrar en el directorio /config de nuestro dominio.

7

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 8/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

Glassfish utiliza la contraseña “changeit” por defecto para proteger todo keystore, debemos

cambiarla con el comando asadmin.

#/opt/glassfish3/bin/asadmin change-master-password --savemasterpassword=true

Podemos exportar, importar y eliminar certificados de este fichero utilizando el comando keytool dela siguiente forma:

Exportar el certificado actual:

#keytool -keystore config/keystore.jks -exportcert -alias s1as -rfc -file certificadoServidor

Importar un certificado:

#keytool -keystore config/keystore.jks -import -v -alias s1as -file certificadoServidor

Eliminar un certificado:

#keytool -keystore config/keystore.jks -delete -v -alias s1as

A parte del fichero keystore.jks existe también otro llamado cacerts.jks, que almacena loscertificados de las entidades certificadoras de confianza para el servidor.

HTTPS

Procederemos ahora a configurar una conexión HTTPS para nuestro servidor utilizando un

certificado autofirmado.

1. Primero necesitaremos crear nuestra clave privada e introducirla en el keystore.

#keytool -genkey -alias certkey -keysize 1024 -keyalg RSA -keystore config/keystore.jks

Este comando nos preguntará ahora una serie de datos necesarios para la creación de loscertificados.

NOTA: Cuando se nos pida el CN, deberemos indicarle un nombre único y común que

identifique a nuestra máquina.

2. Ahora necesitaremos configurar nuestro servidor para que utilice dicho certificado. De pasohabilitaremos SSL 3 que por defecto está deshabilitado.

Para ello accederemos a la Interfaz web → Server Config → Escuchas de Red → Http-

listener-2 (Por defecto) → SSL, y lo configuramos como en la siguiente captura.

8

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 9/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

Hacemos clic en Aceptar, reiniciamos el servidor y el resultado es el siguiente:

Si vemos los detalles de nuestro certificado:

Por ahora eso es todo con respecto a la administración.

9

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 10/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

LoggingEn cuanto al sistema de logs de Glassfish, hablaremos entre otras cosas, de donde los almacena y de

qué formato tienen por defecto.En principio Glassfish cuenta con un fichero de log por cada uno de los dominios de que disponga.Este fichero se encuentra en el directorio “logs” de cada dominio y se denomina “server.log”.

Almacena información con el siguiente formato:

[#| yyyy-mm-ddThh:mm:ss.SSS-Z | Log Level| ProductName-Version | LoggerName| Key Value Pairs| Message|#]

Explicaremos un poco esta estructura:

• Los símbolos '[#' y '#]' son los delimitadores de cada registro.

• El símbolo '|' es el que se encarga de separar cada dato.

• La primera estructura ' yyyy-mm-ddThh:mm:ss.SSS-Z ' claramente es la fecha.

• El campo ' Log Level' indica el nivel de importancia del suceso ocurrido, este nivel puede ser

SEVERE, WARNING, INFO, CONFIG, FINE, FINER y FINEST. Por defecto es INFO.

• ' ProductName-Version' Nos indica la versión del servidor que ha generado el registro.

Ej: glassfish.

• ' LoggerName' Identifica al módulo que ha almacenado el registro.

Ej: javax.enterprise.system.core.

• El campo ' Key Value Pairs' identifica al subproceso que ha generado el registro.

Ej: _ThreadID=14.

• Y por último el campo ' Message' es el que nos proporciona la información del suceso.

El campo Log Level quizás sea uno de los más importantes a la hora de clasificar las entradas y de

analizar los ficheros de log. Podemos ver el Log Level de cada módulo con el subcomando list-log-levels de asadmin. Ejemplo:

#/opt/glassfish3/bin/asadmin list-log-levels

 java.util.logging.ConsoleHandler <FINEST>

 javax.enterprise.resource.corba <INFO>

 javax.enterprise.resource.javamail<INFO>

 javax.enterprise.resource.jdo <INFO>

 javax.enterprise.resource.jms <INFO>

 javax.enterprise.resource.jta <INFO>

….

org.glassfish.admingui <INFO>

org.jvnet.hk2.osgiadapter <INFO>

El comando list-log-levels se ha ejecutado correctamente.

10

5/11/2018 glassfish-110427032605-phpapp01 - slidepdf.com

http://slidepdf.com/reader/full/glassfish-110427032605-phpapp01 11/11

 

Despliegue de aplicaciones con Glassfish José Manuel Ferrete Benítez

Para editar el nivel de log de cada módulo lo podemos hacer directamente en el fichero de

configuración de log, logging-properties que encontramos al igual que domain.xml en el

subdirectorio config de cada dominio.

También podemos hacerlo mediante asadmin con el siguiente subcomando:

#/opt/glassfish3/bin/asadmin set-log-levels javax.enterprise.system.container.web.level=FINE

 javax.enterprise.system.container.web.level package set with log level FINE.

These logging levels are set for server.

El comando set-log-levels se ha ejecutado correctamente.

Para cambiar el nivel de log global, se haría editando el fichero de configuración y buscando la

siguiente línea:

.level= INFO

Eso es todo con respecto a la introducción al despliegue de aplicaciones con glassfish 3.

Recomendaciones.Recordamos que durante la realización del documento se ha trabajado con Glassfish 3.1, el cual ha

podido sufrir algunas modificaciones en los comandos a utilizar con respecto a sus predecesores.Recomiendo a todo el mundo que tenga dudas al respecto que se lea la documentación

correspondiente a su versión desde la web oficial de Oracle.

http://www.oracle.com/technetwork/indexes/documentation/index.html

Si en algún momento durante la práctica de comandos realizais cambios desastrosos en vuestro

dominio, eliminadlo y cread uno nuevo ejecutando el siguiente comando, el cual proporcionaGlassfish durante su instalación y es el ejecutado para crear el dominio por defecto:

#/opt/glassfish3/bin/asadmin create-domain --savelogin --checkports=false --adminport 4848--instanceport 8080--domainproperties=jms.port=7676:domain.jmxPort=8686:orb.listener.port=3700:http.ssl.port=8181:orb.ssl.port=3820:orb.mutualauth.port=3920 domain1

Eso es todo, espero que les haya servido de ayuda.

11