Instalacion OXP Suse Linux

De openXpertya Wiki

Tabla de contenidos

Guía para instalar openXpertya en Suse Linux 10.2 (OpenSUSE)

  • Software utilizado:
    • SuSE Linux 10.2 (http://www.opensuse.org/)
    • Java de Sun 1.5.0_update10-2.1 (Incluida en la distribución de Suse Linux)
    • Sistema gestor de Bases de Datos PostgreSQL 8.1.5-13 (Incluida en la distribución de Suse Linux)
    • Pgadmin III (http://pgadmin.org/)
    • Pl/Java para PostgreSQL (PL/Java)
    • Binarios de la aplicación openXpertya


Instalación del Java de Sun

Desde el Centro de control: YaST -> Software -> Instalar/desinstalar software, seleccionar los paquetes :

java-1_5_0-sun
java-1_5_0-devel
java-1_5_0-jdbc
java-1_5_0-plugin

Estos vienen con el Cd: "Non-OSS Add On CD" de la version OpenSUSE 10.2 y con el DVD de la versión comercial.


Preparación de la Base de Datos

Instalación de la Base de Datos

Desde el Centro de control: YaST -> Software -> Instalar/desinstalar software, seleccionar los paquetes :

postgresql
postgresql-contrib
postgresql-devel
postgresql-libs
postgresql-pl
postgresql-server

Arrancamos el servicio, puede ser desde YaST o desde la shell:

  • Desde el Centro de control YaST:
YaST -> Sistema -> Editor de niveles de ejecución

Seleccionamos servicio: postgresql y pulsamos el botón "Activar"
  • Desde una ventana de la shell, como root:
root@servidor # rcpostgresql start
 ó
root@servidor # service postgresql start

Instalación del programa Pgadmin III

Para administrar la base de datos PostgreSQL utilizamos el cliente gráfico Pgadmin III (http://pgadmin.org/) que se puede bajar para la versión de Suse 10.2 desde: http://www.postgresql.org/ftp/pgadmin3/release/v1.6.3/opensuse/ . Lo instalamos desde una ventana de la shell, como root:

root@servidor # rpm -ivh pgadmin3-1.6.3-1.i586.rpm

Modificación de los archivos de configuración del PostgreSQL

Para conectar sin problemas desde este programa necesitaremos modificar el fichero pg_hba.conf, ubicado en /var/lib/pgsql/data :

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               		trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          		trust
host    all         all         192.168.1.0	255.255.255.0	trust       # o la IP de tu equipo
# IPv6 local connections:
host    all         all         ::1/128               		trust

y para aceptar todas la conexiones entrantes debemos modificar el fichero: posgresql.conf, ubicado en /var/lib/pgsql/data :

# - Connection Settings -

#listen_addresses = 'localhost'		# what IP  to listen on; 
					# comma-separated list of localhos;
					# defaults to 'localhost', '*' = all
					# (change requires restart)
listen_addresses = '*'

Reiniciamos el servicio PostgreSQL desde una ventana de la shell, como root:

root@servidor # rcpostgresql restart
 ó
root@servidor # service postgresql restart

Cambio de contraseña del usuario postgres

Una vez reiniciado el servicio lo primero que debemos es cambiar la contraseña del administrador de la base de datos PostgreSQL pues en la instalación es creado sin ninguna contraseña, esto es con el fin de protegerlo de accesos no autorizados, y además en la configuración del OpenXpertya es requerido para la validación del superusuario postgres. Se puede realizar desde la shell o por Pgadmin:

Desde una ventana de la shell, como root:

root@servidor # su - postgres
postgres@servidor # psql -d template1 -U postgres
template1=# alter user postgres with password 'xxxxxxxx'

Desde el Pgadmin III:

 
Lanzamos pgAdmin III:

Menu K -> Aplicaciones -> Desarrollo -> Mas Programas -> pgAdmin III
 ó 
Menu K -> Buscar (anteriormente: Ejecutar comando): pgadmin3

Realizada con éxito la conexión, en el árbol desplegado a la izquierda elegimos:
Roles de login -> postgres -> Propiedades y  le colocamos la contraseña.

Creación de la base de datos y el usuario para la base de datos de OpenXpertya

Es necesario crear una nueva base de datos en PostgreSQL para la aplicación OpenXpertya que llamaremos openxp. También necesitaremos un usuario propietario de dicha base de datos, que también denominaremos openxp. Para esto lo podemos hacer desde la shell o por medio del Pgadmin III.

Primero creamos el usuario openxp para la base de datos:

  • Desde una ventana de la shell, como root:
root@servidor # psql -U postgres -c "CREATE ROLE root LOGIN ENCRYPTED PASSWORD 'yyyyyyyyyyyy';
SUPERUSER CREATEDB CREATEROLE VALID UNTIL 'infinity' IN ROLE postgres;
UPDATE pg_authid SET rolcatupdate=true WHERE rolname='openxp';"
  • Desde el Pgadmin III:
 
Lanzamos pgAdmin III:

Menu K -> Aplicaciones -> Desarrollo -> Mas Programas -> pgAdmin III
 ó 
Menu K -> Buscar (anteriormente: Ejecutar comando): pgadmin3

Realizada con éxito la conexión, en el árbol desplegado a la izquierda elegimos:
Roles de login -> Nueva Rol de login y creamos uno con el nombre openxp, le colocamos contraseña y 
marcamos todos los privilegios de rol.

El siguiente paso es crear la base de datos openxp:

  • Desde una ventana de la shell, como root:
root@servidor # psql -U postgres -c "CREATE DATABASE openxp WITH ENCODING='UTF8' OWNER=openxp;"
  • Desde el Pgadmin III:
 
Lanzamos pgAdmin III:

Menu K -> Aplicaciones -> Desarrollo -> Mas Programas -> pgAdmin III
 ó 
Menu K -> Buscar (anteriormente: Ejecutar comando): pgadmin3

Realizada con éxito la conexión, en el árbol desplegado a la izquierda elegimos:
Base de Datos -> Nueva Base de Datos y la creamos con el nombre openxp, con el propietario openxp 
.

Instalando PL/Java

Para el funcionamiento de openXpertya se necesita que el motor de la base de datos soporte la ejecución de procedimientos escritos en java. Para esto, vamos a añadir el soporte para el lenguaje PL/Java.

La pagina oficial del proyecto PL/Java es http://wiki.tada.se/wiki/display/pljava/Home. Todo lo explicado a continuación se ha extraído de sus contenidos y debe ser el sitio de referencia para mantenerse actualizado sobre las novedades con dicha herramienta.

  • Descomprimimos la descarga en el directorio: /var/lib/, en una carpeta que llamaremos pljava.
  • Copiamos el archivo pljava.so extraido de la descarga en el directorio: /usr/lib/postgresql.
  • La configuración la realizaremos desde la shell con el usuario root, y para esto debemos revisar su entorno para completar lo que falte a nivel de variables:
root@servidor # export OXP_HOME=/ServidorOXP
root@servidor # env                    #Para verificar que estén todas las variables definidas

Verificamos que las variables: JAVA_HOME, JRE_HOME y OXP_HOME existan.

  • Modificamos el fichero: /var/lib/pgsql/data/postgresql.conf:
dynamic_library_path = '$libdir:/var/lib/pljava'
custom_variable_classes = 'pljava'		# list of custom variable class names
pljava.classpath='/var/lib/pljava/pljava.jar'
  • Establecemos la variable LD_LIBRARY_PATH:

Modificamos los ficheros: /etc/profile.d/alljava.sh y /etc/profile.d/alljava.csh con el siguiente contenido, agregando al final:


LD_LIBRARY_PATH="/usr/lib/jvm/java/jre/lib/i386:/usr/lib/jvm/java/jre/lib/i386/client:
/usr/lib/jvm/java/jre/lib/i386/native_threads"
export LD_LIBRARY_PATH

  • Creamos el fichero postgresql.conf en /etc/ld.so.conf.d con el siguiente contenido:
/usr/lib/jvm/java/jre/lib/i386
/usr/lib/jvm/java/jre/lib/i386/client
/usr/lib/jvm/java/jre/lib/i386/native_threads
/var/lib/pljava
  • Creamos tambien el fichero jvm.conf en /etc/ld.so.conf.d con el siguiente contenido:
/usr/lib/jvm/java/jre/lib/i386/server
  • Aplicamos configuraciones:
root@servidor # /sbin/ldconfig
  • Reiniciamos el servidor postgres.
root@servidor # rcpostgresql restart
 ó
root@servidor # service postgresql restart
  • Carga del lenguaje PL/Java:

Por último debemos ejecutar en el servidor de postgres el código necesario para implementar el lenguaje. El código necesario se encuentra el el fichero “install.sql” incluido el el paquete. Nos vamos por tanto a la carpeta donde descomprimimos el PL/Java y ejecutamos el script:

root@servidor # cd /var/lib/pljava
root@servidor # psql -d openxp -U openxp -f install.sql 1>/tmp/salida_pj.log 2>/tmp/error_pj.log

(Se ha redireccionado la salida estándar para ver los posibles errores, fichero: error_pj.log)

Ahora debemos cargar dentro del esquema SQLJ los datos de la pasada compilación obtenidos del fichero precompilado sqlj.jar, que está ubicado tras la compilación en la carpeta /ServidorOXP/lib. Para esto desde root hacemos:

root@servidor # psql -d openxp -U openxp
Bienvenido a psql 8.1.5, la terminal interactiva de PostgreSQL.

Digite:  \copyright para ver los términos de distribución
       \h para ayuda de comandos SQL
       \? para ayuda de comandos psql
       \g o or termine con punto y coma para ejecutar una consulta
       \q para salir

openxp=#
openxp=# CREATE schema openxp;
CREATE SCHEMA
openxp=# select sqlj.install_jar('file:///ServidorOXP/lib/sqlj.jar','sqlj',true);
 install_jar
-------------

(1 fila)

openxp=# SELECT sqlj.set_classpath('openxp', 'sqlj');
 set_classpath
---------------

(1 fila)

openxp=# SET search_path TO openxp,public;
SET
openxp=# \q
root@servidor #

Podemos verificar desde el pgAdmin III que el esquema sqlj esta bien si contiene 11 funciones, 3 secuencias y 4 tablas


Instalación de openXpertya

La última versión la podemos descargar de: http://www.openxpertya.org/index.php?option=com_remository&Itemid=24 Es el momento de descomprimir los binarios de openXpertya. En nuestro caso lo haremos en el root: /ServidorOXP., aunque podemos hacerlo en cualquier directorio (/opt, /var/www, /home, etc), lo único que hay que tener en cuenta es darle a la variable OXP_HOME la ruta en donde va a estar la aplicación.

Carga de la Base de Datos

En el subdirectorio “data” de esta nueva carpeta se encuentra el script de creación de la base de datos. (en el ejemplo: /ServidorOXP/data/openxpdb.sql o la versión más reciente).

Nota: Para la versión 2.1 el archivo más reciente a cargar es: estandar02_07_07.sql.

Lo cargamos igual que en el caso anterior:

  • Nos vamos a dicho subdirectorio:
root@servidor # cd /ServidorOXP/data/
root@servidor # psql -d openxp -U openxp -f openxpdb.sql 1>/tmp/salida_bd.log 2>/tmp/error_bd.log

(Se ha redireccionado la salida standard para ver los posibles errores, fichero: error_bd.log)

Ajustando la configuración

En el directorio de instalación tenemos un script de shell: Configurar.sh, que debemos ejecutar para comprobar y almacenar el entorno de ejecución del programa.

Nota: Para la versión 2.1, antes de arrancar el script, tenemos que agregar cuatro archivos que faltan y que encontramos en la versión 2.0. Para esto extraemos de la versión 2.0 los siguientes archivos ubicados en el directorio /ServidorOXP/utils: PlantillaFTPDescargarOXP.txt, PlantillaSubirExportacion.bat, PlantillaSubirExportacion.sh, PlantillaSubirExportacion.txt, a nuestro directorio actual /ServidorOXP/utils.

root@servidor # cd /ServidorOXP
root@servidor:/ServidorOXP # sh Configurar.sh

Aparecerá una ventana con la siguiente información:

*Directorio base de Java: /usr/lib/jvm/java-1.5.0-sun
*Tipo de Java: sun
*Directorio base de OpenXpertya: /ServidorOXP (en nuestro ejemplo)
*Contraseña de keystore: xxxxxxxx (es generada al momento de comprobar)
*Servidor de Aplicaciones: servidor (el nombre del servidor ó su IP)
*Tipo de Servidor: jboss
*Tipo de despliegue: (se deja asi)
*Puerto JNP: 1099 (por defecto)
*Puerto web: 80 (por defecto y si por algún motivo no podemos acceder, relacionado con la seguridad
 o porque esta ocupado por otro sevicio, utilizamos el 8088)
*Puerto SSL: 443 (por defecto o, 4443 si tenemos problemas)
*Servidor de base de datos: servidor (el nombre del servidor ó su IP)
*Tipo de base de datos: PostgreSQL (por defecto)
*Nombre de la base de datos: openxp (en nuestro ejemplo)
*Nombre TNS: (se deja asi)
*Puerto de la base de datos: 5432 (por defecto)
*Contraseña del superusuario: xxxxxxx (la que se cambió para el usuario postgres)
*Usuario de la base de datos: openxp (en nuestro ejemplo)
*Contraseña de la base de datos: xxxxxxx (la que se dio al usuario openxp)
*Servidor de correo: pop.empresa.com (en nuestro ejemplo. Poner uno válido, que puede ser la propia
 máquina si ejecutas sendmail o también sirve con el servidor de correo de tu ISP)
*Correo del administrador: info@empresa.com (en nuestro ejemplo. Poner uno valido)
*Usuario de correo: info (en nuestro ejemplo. Poner uno valido)
*Contraseña de correo: xxxxxxx (la asignada en tu cuenta)

Comprobaremos la configuración (pulsando en el botón "Comprobar") y si todo va bien (todas las casillas en verde), la guardamos (pulsando en el botón "Guardar") . El programa nos debe notificar que los cambios se han guardado y que ya podemos arrancar el servidor de aplicaciones. (si no lo hace, algo ha ido mal: revisar el log ubicado en el mismo directorio).


Iniciando el Servidor de Aplicaciones

El script que se encarga de iniciar el servidor de aplicaciones se encuentra el el subdirectorio "utils" de la instalación.

root@servidor:/ServidorOXP # cd /ServidorOXP/utils
root@servidor:/ServidorOXP/utils # sh IniciarServidor.sh

Transcurrido 1 minuto más o menos, tendremos el servidor escuchando peticiones. Lo comprobaremos desde el navegador, escribiendo, según el ejemplo, la siguiente url: http://servidor:1099

  • Firefox no sabe muy bien lo que hacer un un fichero JNLP, de modo que debemos decírselo. Cuando nos pregunte con qué aplicación lo abrimos, debemos buscar el programa "javaws" del subdirectorio "/usr/lib/jvm/bin" de nuestra instalación de java.

Si deseamos arrancar directamente el cliente de la aplicación ejecutaremos el script que se encuentra en el directorio principal.

root@servidor: # cd /ServidorOXP
root@servidor:/ServidorOXP # sh OpenXP.sh

Configurando Openxpertya como servicio

Si deseamos que Openxpertya arranque como un servicio al iniciar Suse Linux debemos tener en cuenta las siguientes indicaciones:

Creación del grupo y usuario openxp

  • Creación del Grupo openxp:
    • Desde una ventana de la shell, como root:
root@servidor # groupadd -r openxp
    • Desde el Centro de control YaST creamos un grupo llamado openxp:
YaST -> Seguridad y usuarios -> Gestionar de Grupos
Seleccionamos Añadir
Nombre del Grupo: openxp
Pulsamos el botón "Aceptar" y luego "Finalizar"
  • Creación del Usuario openxp:
    • Desde una ventana de la shell, como root:
root@servidor # useradd -c openxp -G openxp,users -s /bin/bash -p xxxxx -m openxp
    • Desde el Centro de control YaST creamos un usuario llamado openxp:
YaST -> Seguridad y usuarios -> Gestionar usuarios
Seleccionamos Añadir
Nombre completo del Usuario: openxp
Nombre de usuario: openxp
Contraseña: ********
Confirmar Contraseña: *******
En la Pestaña: Detalles, Grupos, marcamos el grupo: openxp
Pulsamos el botón "Aceptar" y luego "Finalizar"

Creación del archivo de inicio y adición de variables

  • Editamos el archivo .bashrc en /home/openxp:
root@servidor: # cd /home/openxp
root@servidor:/home/openxp #  vi .bashrc

Agregando al final:

OXP_HOME=/ServidorOXP
export OXP_HOME
  • Creamos un archivo en /etc/init.d llamado openxpertya:
root@servidor:/home/openxp # cd /etc/init.d
root@servidor:/etc/init.d #  vi openxpertya

Con el siguiente contenido:

#! /bin/sh
# Copyright (c) 2002-2007 Fundesle
#
# Author: FUNDESLE
# Modificado: Aseglobal System 2007
#
# init.d/openxpertya
#
### BEGIN INIT INFO
# Provides:			openxpertya
# Required-Start:		$network $postgresql
# X-UnitedLinux-Should-Start:
# Required-Stop:		
# X-UnitedLinux-Should-Stop:
# Default-Start:		3 5
# Default-Stop:			0 1 2 6
# Short-Description:		Servidor OpenXpertya
# Description:			Control del servicio openXpertya v2
### END INIT INFO

OXP_DIR=/ServidorOXP
OXP_BIN=$OXP_DIR/utils
OXP_LOG=/var/log/openxpertya.log
OXP_ENV=/home/openxp/.bashrc
RETVAL=0

. /etc/rc.status
rc_reset

if [ ! -x $OXP_DIR ] ; then
    echo "El servidor Openxpertya no esta instalado ! "
    exit 5
fi

case "$1" in
    start)
	echo -n "Iniciando el Servidor OpenXpertya ..."
	if checkproc $OXP_BIN/IniciarServidor.sh ; then
           echo
	   echo -n "Advertencia: el Servidor se encuentra funcionando ! "
	   rc_failed
	else
           source $OXP_ENV
	   su -c "$OXP_BIN/IniciarServidor.sh &> $OXP_LOG &"
           RETVAL=$?
	   if [ $RETVAL -eq 0 ] ; then
	       # esperar a que el servidor confirme su arranque en el fichero de log
	       STATUSTEST=0
	       while [ $STATUSTEST -eq 0 ] ; do
   	          tail -n 1 $OXP_LOG | grep 'INFO.*\[Server\].*Started in' &> /dev/null && STATUSTEST=1
      	       done
	       # evita condiciones y/o fallos debidos a desincronizaciones
           else
	       rc_failed
           fi
        fi
	rc_status -v
       ;;
    stop)
	echo -n "Parando el Servidor OpenXpertya ..."
	if checkproc $OXP_BIN/IniciarServidor.sh ; then
           source $OXP_ENV
	   su -c "$OXP_BIN/DetenerServidor.sh &> /dev/null &"
           RETVAL=$?
           if [ $RETVAL -eq 0 ] ; then
	       # esperar a que el servidor confirme que esta parado en el log
	       STATUSTEST=0
	       while [ $STATUSTEST -eq 0 ] ; do
	          tail -n 1 $OXP_LOG | grep 'Halting VM' &> /dev/null && STATUSTEST=1
	       done
	       # evita condiciones y/o fallos debidos a desincronizaciones
	       sleep 5
           else
	       rc_failed
           fi
	else
           echo
	   echo -n "Advertencia: El servidor se encuentra parado !"
	   rc_failed
	fi
	rc_status -v
        ;;
   restart)
	$0 stop
	$0 start
	rc_status -v
	;;
    condrestart)
	checkproc $OXP_BIN/IniciarServidor.sh
	if [ $? -eq 0 ] ; then
	   $0 restart
	fi
	;;
    reload)
	$0 restart
	;;
     status)
	echo -n "El servidor de openXpertya se encuentra:"
    	checkproc $OXP_BIN/IniciarServidor.sh
    	rc_status -v
	ps ax | grep -v grep | grep $OXP_DIR | sed 's/^[[:space:]]*\([[:digit:]]*\).*:[[:digit:]][[:digit:]][[:space:]]\(.*\)/\1 \2/'
	;;
    *)
        echo $"Usage: $0 {start|stop|reload|restart|condrestart|status}"
        exit 1
	;;
esac
rc_exit

Preparando el Archivo de inicio

  • Cambiamos los permisos del archivo para que sea ejecutable:
root@servidor:/etc/init.d # chmod 744 /etc/init.d/openxpertya
  • Creamos un enlace simbólico en /sbin:
root@servidor:/etc/init.d # ln -s /etc/init.d/openxpertya /sbin/rcopenxpertya

Arrancando el servicio openxpertya

Arrancamos el servicio, puede ser desde YaST o desde la shell:

  • Desde el Centro de control YaST:
YaST -> Sistema -> Editor de niveles de ejecución

Seleccionamos servicio: openxpertya y pulsamos el botón "Activar"
  • Desde una ventana de la shell, como root:
root@servidor # rcopenxpertya start
 ó
root@servidor # service openxpertya start

El servicio iniciará inmediatamente y arrancará en el nivel 3 y 5 al iniciar Suse la próxima vez. Si desea ver el registro de servicio openxpertya puede consultarlo en el archivo: opnxpertya.log ubicado en /var/log.

Parando el servicio openxpertya

Podemos detener el servicio, puede ser desde YaST o desde la shell:

  • Desde el Centro de control YaST:
YaST -> Sistema -> Editor de niveles de ejecución

Seleccionamos servicio: openxpertya y pulsamos el botón "Desactivar"
  • Desde una ventana de la shell, como root:
root@servidor # rcopenxpertya stop
 ó
root@servidor # service openxpertya stop
Herramientas personales