Mostrando entradas con la etiqueta jboss. Mostrar todas las entradas
Mostrando entradas con la etiqueta jboss. Mostrar todas las entradas

miércoles, 3 de julio de 2013

Liferay Portal sobre Google Compute Engine

Después de haber usado Linode por un tiempo hemos encontrado que una alternativa viable y económicamente flexible es ejecutar Liferay Portal sobre Google Compute Engine . Este último ofrece un entorno completo de ejecución, simple de configurar y cómodo en términos de administración y costos, con la posibilidad de usar diferentes distribuciones de Linux así como la posibilidad de enlazarnos a otros servicios en cloud de google como CloudStorage y CloudSQL u otros servicios externos. 

Procedimiento de instalación y configuración de Liferay Portal en Google Compute Engine(GCE).

Los pasos para tener una instancia de Liferay Portal corriendo sobre Google Compute Engine se describen a continuación. Se asume en este caso que el usuario ya tiene una cuenta activa de en Google Cloud y que ha activado el billing para el proyecto. 

Paso 1 - Crear una instancia de compute engine 


  1. Haga click en el proyecto creado con billling activo (ej, miempresa-gce-demo-001)
  2. Ingrese los datos de solicitados: nombre de la instancia, descripción, tags y metadatos (son útiles para identificar el uso o cliente de la instancia etc). Seleccione además un sistema operativo para la instancia ( Puede seleccionar Debian7 por ejemplo) teniendo cuidado de no usar uno que esté marcado como "deprecated".  Finalmente haga click en el botón "Create". 
  3. Espere unos segundos hasta que la instancia esté activa (aparecerá en el listado). Cuando esté lista haga click sobre el nombre de la instancia para ver los datos en detalle. Tome nota de la dirección IP pública asignada, el ID del proyecto (project-id)(esquina superior izquierda) y ID de la instancia (instance-id).

Paso 2 - Conectarse a la instancia vía SSH 


  • Descargue e instale la aplicación "gcutil". Esta permitirá el control y acceso a las instancias de GCE desde la consola del sistema operativo. La herramienta se puede descargar de: gcutil site.
  • Una vez instalada la instancia ejecute el siguiente comando para conectarse por primera vez:  
         gcutil ssh --project=proyect_id instance-id

          La primera vez seleccione la contraseña deseada y el programa se encargará de dejar         
          la autorización creada para el cliente ssh la próxima vez. 

          Nota. Este proceso puede tardar aproximadamente 5 minutos la primera vez, así que   
          tenga paciencia. 
  • Cuando haya ingresado quedará en un shell estándar de Linux que podrá usar normalmente.

Paso 3 - Configuración del entorno de usuario 

Una vez en el shell de nuestra instancia de GCE se recomienda crear un entorno de trabajo estándar sobre el cual podamos trabajar fácilmente  a futuro. Nuestra recomendación es usar la siguiente:

mkdir app src tmp 
chmod 1777 

apps: binarios (ej, jboss + liferay) 
src: fuentes usadas para la instalación de paquetes propios o de terceras partes
tmp: carpeta de temporales local en caso de que se tengan múltiples instancias de servidor de aplicaciones y se quieran evitar conflictos con acceso a temporales. 

Paso 4 - Instalación de JDK 7 

El siguiente paso es instalar el JDK. Para el caso se instalará el JDK7. Puede instalarlo usando el siguiente comando:

sudo apt-get install openjdk-7-jdk

Una vez finalice verifique que está correctamente instalado y disponible en el PATH usando:

java -version 

Si tiene problemas verifique la instalación y repita el proceso. 

Paso 5 - Descargar Liferay Portal CE a la instancia 


  • Desde el sitio oficial de Liferay Portal http://www.liferay.com descargue la versión comunitaria o un demo de la versión Enterprise (es la recomendada para aplicaciones en producción). 
  • Para descargarla a la instancia puede usar wget (copiando y pegando el enlace) o descargarla a su máquina y transferirla luego. 
  • Copie el paquete descargado en la carpeta src creada previamente. 
  • Descomprima el paquete con destino a la carpeta tmp: 
          tar xzf liferay-portal-ce-**.tar.gz -C  ~/apps
  • Vaya a la carpeta apps y cree un link simbólico a la carpeta de instalación de Liferay
    ln -s liferay-portal-ce-** liferay61     
         Nota. Este paso no es necesario pero ahorrará tiempo durante la administración   
                    normal.

Paso 7 - Configuración básica e inicio del portal por primera vez 

Dado que el portal por defecto solo escucha en localhost es necesario ajustar la configuración  para que el conector web del servidor de aplicaciones se asocie a todas las interfaces disponibles, para el caso se asume que el bundle de liferay que se está usando es el que incluye JbossAS.  Una forma simple de hacerlo es crear un script del shell adicional que envíe el parámetro de binding al script de arranque del dominio así:

cd ~/apps/liferay61/jboss*/bin
echo "#!/bin/bash" >> start-liferay.sh 
echo "./standalone.sh -b 0.0.0.0 1> ../standalone/log/ \\
       mi-liferay.log &" >> start-liferay.sh 
chmod +x start-liferay.sh 
./start-liferay.sh & 

Puede verificar el inicio del portal usando tail así:

tail -f ~/apps/liferay61/jboss*/standalone/log/mi-liferay.log 

Una vez haya iniciado puede continuar con el paso siguiente. 

Nota. Se incluye la redirección para poner el portal en background y que no se caiga si cerramos la consola. 

Paso 8 - Configuración de firewall para acceso al servicio 

El portal escucha por defecto en el puerto 8080 por lo que será necesario adicionar una regla al firewall de la instancia para admitir conexiones a dicho puerto. Para el caso se asume que es un servicio público pero bien podría estar limitado a una IP o red específica. 

Para agregar la regla vaya al panel de control de Google Cloud, haga click en el proyecto que crearon, luego click en el menú lateral "Networks". En la sección "Firewalls" seleccione "Create new". 

Una vez allí ponga un nombre a la regla, ej "liferay", una descripción, en la sección de "Protocols & ports" escriba "tcp:8080". Finalmente de click en "Create".

Paso Final. Conectarse a la instancia 

Una vez creada la regla de firewall ya podrá conectarse desde el navegador usando la IP pública de la instancia y apuntando al puerto 8080. El primer paso será configurar Liferay para el inicio (el proceso es muy sencillo y no vale la pena entrar en detalles aquí). Y eso es todo!. El proceso completo puede tardar menos de treinta minutos lo que nos da un nivel de maniobra impresionante a la hora de configurar sitios de prueba, demos para clientes e incluso nuevos sitios. 

Notas finales y recomendaciones 


  • Si la instancia se reinicia o inactiva los datos se perderán. Es importante crear discos con almacenamiento permanente que se monten al inicio de la instancia(s) y que contengan el portal y el JDK aislados. Esto con el fin de reducir los tiempos. 
  • Si se requiere el uso de múltiples instancias con propósito específico vale la pena usar una herramienta de gestión que facilite el trabajo como  RightScale (http://www.rightscale.com)
  • Si se requiere el uso de balanceadores puede utilizarse nginx (http://www.nginx.org ) en un nodo de balaceo y un grupo de nodos adicionales "atrás". 
  • Si se requiere el uso de bases de datos externas lo mejor es usar Google Cloud SQL que es enganchable directamente y ofrece driver jdbc compatible con el servidor de aplicaciones (tomcat, jboss etc). 


viernes, 27 de junio de 2008

Liferay Portal en JBoss AS 4.2.2 GA

Liferay Portal es distribuido por defecto como un paquete pre-armado(bundle) que incluye la configuración completa de un servidor de aplicaciones dado (Jboss, BEA, Glassfish etc). No obstante, en un entorno de producción es probable que sea necesario utilizar el portal, pero solo como una aplicación más que comparte los recursos con otras aplicaciones y servicios. Otra razón para usar Liferay Portal como una aplicación más dentro de un servidor de aplicaciones existente, es si existe, por ejemplo, la necesidad de utilizar EJBs, pues esta no está disponible en el paquete prearmado distribuido por Liferay.

A continuación se presentan los pasos para llevar a cabo la configuración y el despliegue de Liferay en JBoss 4.2.2 GA.

Nota. Este procedimiento presume que se está usando alguna distribución de Linux / Solaris y que se está usando el JDK 1.5

1. Descargar los paquetes necesarios

+ Liferay-portal
+ Liferay-portal-dependencies
+ JBoss 4.2.2GA


2. Crear directorios de trabajo

mkdir -p ~/apps/tmp

3. Configurar variables de entorno

export JAVA_HOME=<ruta al jdk instalado >
export PATH=$JAVA_HOME/bin:$PATH

4. Instalar y configurar JBoss AS 4.2.2GA

a. Descomprimir e instalar paquete

unzip jboss-4.2.2.GA.zip -d ~/apps
cd ~/apps
ln -s jboss-4.2.2.GA jboss


b. Configurar opciones de memoria para JBoss

cd jboss/bin
vi run.conf

Modificar la línea de JAVA_OPTS que está sin comentar así:

JAVA_OPTS="-Xms512m -Xmx1204m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 \ -Dsun.rmi.dgc.server.gcInterval=3600000"

5. Probar la instalación de JBoss

cd ~apps/jboss/bin
./run.sh -c default

Una vez haya iniciado probar la conexión desde un browser a la dirección de la máquina, puerto 8080, ej http://192.168.0.2:8080

Detener luego el proceso usando CTRL+C en la consola donde fue lanzado el script run.sh.

6. Configurar una base de datos para Liferay
En este caso el ejemplo está con hypersonic, no obstante aplica para cualquier otra base de datos.

a. Configurar un datasource en JBoss para Liferay

cd ~/apps/jboss/server/default/deploy
vi liferay-ds.xml

Pegar el texto a continuación:

<datasources>
<local-tx-datasource>
<jndi-name>jdbc/LiferayPool</jndi-name>
<connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}liferayDB</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<user-name>sa</user-name>
<password></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<metadata>
<type-mapping>Hypersonic SQL</type-mapping>
</metadata>
<depends>jboss:service=Hypersonic,database=liferayDB</depends>
</local-tx-datasource>

<!-- For hsqldb accessed from jboss only, in-process (standalone) mode -->
<mbean code="org.jboss.jdbc.HypersonicDatabase"
name="jboss:service=Hypersonic,database=liferayDB">
<attribute name="Database">liferayDB</attribute>
<attribute name="InProcessMode">true</attribute>
</mbean>
</datasources>


b. Iniciar y detener JBoss para que cree los archivos correspondientes a la nueva base en hypersonic.

7. Configurar e Instalar Liferay Portal 5

a. Descomprimir el paquete de Liferay en el directorio temporal


cp liferay-portal-5.0.1.war ~/apps/tmp
cd ~/apps/tmp
mkdir tmp-war
jar xvf liferay-portal-5.0.1.war -C tmp-war

b. Liferay por defecto trata de correr en la raiz del servidor de aplicaciones, pero en este caso queremos que responda a una URL diferente, por ejemplo /portal. Para ello debemos modificar algunos archivos de configuración así:

cd tmp-war
cd WEB-INF

+ web.xml
Editar web.xml y agregar después del primer elemento lo siguiente:

<context-param>
<param-name>root_path</param-name>
<param-value>/portal</param-value>
</context-param>


+ jboss-web.xml
Editar jboss-web.xml y cambiar el context-root a /portal

<context-root>/portal</context-root>


+ portal-ext.properties
Crear el archivo portal-ext.properties en ~/apps/tmp/tmp-war/WEB-INF/classes
y digitar los siguientes datos:

#portal-ext.properties
portal.ctx=/portal
auto.deploy.dest.dir=../server/default/deploy
company.security.strangers=false
locales=es_ES,en_US
auto.deploy.deploy.dir=../liferay/deploy
# fin -portal-ext.properties.

c. Instalar las dependencias adicionales
Es necesario copiar las algunas librerías adicionales al lib de JBoss para que el portal pueda iniciar sin problemas.

unzip -j liferay-portal-dependencies-5.0.1.zip -d ~/apps/jboss/server/default/lib

d. Copiar Liferay Portal como WAR expandido en JBoss

mv ~/apps/tmp/tmp-war ~/apps/jboss/server/default/portal.war


8. Eso es todo!
Ahora basta con iniciar el servidor de aplicaciones para tener Liferay operando en JBoss y con la posibilidad de usar todas las herramientas adicionales proveídas por el servidor de aplicaciones como por ejemplo los EJB.


Referencias

1. http://www.liferay.com/web/guest/community/forums/-/message_boards/message/769405;jsessionid=1B48FB7B19DE2F6669A4CB44C5500AC6

2. http://wiki.liferay.com/index.php/Liferay_with_EJB3_and_JBoss%2C

Marcas y derechos


Liferay ®, Liferay Portal son marcas registradas de Liferay Inc.
JBoss ®es una marca registrada de Red Hat Inc.
Java ®es una marca registrada de Sun Microsystems
Linux ®es una marca registrada de Linus Torvalds.