Instalación Debian GNU/Linux

De openXpertya Wiki

Tabla de contenidos

Guía para instalar openXpertya en Debian GNU/Linux 4.0 y PostgreSQL 8.1

Este documento tiene la finalidad de mostrar el procedimiento de instalación de OpenXpertya utilizando la distribución Debian GNU/Linux 4.0 (etch).

  • Software requerido para la instalación
    • Debian GNU/Linux [1]
    • Java de Sun (está incluida en la paquetería de Debian)
    • Sistema gestor de bases de datos PostgreSQL 8.1 (está incluida en la paquetería de Debian)
    • Soporte Java para la base de datos PostgreSQL 8.1 [2]
    • Binarios de openXpertya
    • JBOSS JBOSS (está incluida en la aplicación OpenXpertya)
    • Tomcat Apache Tomcat (también está incluido en el JBOSS, incluido en openXpertya, pero se puede instalar para usar otros paquetes más recientes)

Instalando Java

En Debian etch el Java de Sun ha pasado a formar parte de las aplicaciones "non-free", por lo que si modificamos el fichero sources.list para incluir este tipo de aplicaciones podemos utilizar la herramienta apt-get para su instalación.

openxp# nano /etc/apt/sources.list

Incluye los términos "contrib" y "non-free" detrás del término "main".

p.e.

deb http://ftp.es.debian.org/debian/ etch main contrib non-free

Ahora, podremos instalar la versión 1.5 del Java de Sun.

openxp# apt-get update
openxp# apt-get install sun-java5-jdk

Ahora, los paquetes JAVA se encuentra en la siguiente ruta /usr/lib/jvm/java-1.5.0-sun-1.5.0.10. Para facilitar su localización creamos un vínculo simbólico:

openxp# ln -s /usr/lib/jvm/java-1.5.0-sun-1.5.0.10 /usr/lib/java

Finalmente, debemos comprobar que la versión de JAVA que el sistema está utilizando es la que hemos instalado.

openxp# java -version
java version "1.5.0_10"
Java(TM) 2 Runtime Environment. Standard Edition (build 1.5.0_10-b03)
Java Hotspot(TM) Client VM (build 1.5.0_10-b03, mixed mode, sharing)

En el caso en que no sea la que acabamos de instalar deberemos ejecutar el comando:

openxp# update-alternatives --config java

Y seleccionar la opción correcta.

Descarga OpenXpertya 2.1

Es necesario descomprimir el binario, el mismo podrá colocarlo en el siguiente directorio:

openxp# cp ServidorOXP_v2_1.tar.gz /var/www/
openxp# cd /var/www/
openxp# tar zxfv ServidorOXP_v2_1.tar.gz
openxp# cd ServidorOXP/
openxp# find . -name '*.sh' -exec chmod a+x '{}' \;

Variables de Entorno

Ahora se deben configurar las variables que se necesitarán mas adelante cuando se configure OpenXpertya.

openxp# export OXP_HOME=/var/www/ServidorOXP
openxp# export JAVA_HOME=/usr/lib/java
openxp# env # para verificar que estén las rutas creadas.

Instalación de Tomcat (opcional)

Tomcat es un servidor web con soporte de servlets y JSPs. Incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a menudo se presenta en combinación con el servidor web Apache o JBOSS.

openxp# apt-get install tomcat5.5

Instalación de PostgreSQL 8.1

Para la instalación de la Base de Datos PostgreSQL se deben realizar los siguientes pasos.

openxp# apt-cache search postgresql
openxp# apt-get install postgresql-8.1 postgresql-contrib-8.1 pgadmin3

El paquete "pgadmin3" (PgAdmin III) se instala para administrar las bases de datos en un entorno gráfico.


Para aumentar la seguridad del sistema de bases de datos se recomienda establecer una contraseña para el superusuario (postgres).

openxp# su postgres 
openxp$ psql --command "ALTER USER postgres PASSWORD '<tu_password>'"
openxp$ exit

Recuerda esta contraseña puesto que vas a necesitarla para acceder al servidor SQL desde PgAdmin III, y para realizar la configuración de openXpertya.


Ahora, informamos a PostgreSQL de la localización de la JVM.

openxp# nano /etc/postgresql/8.1/main/environment

Añadimos la linea:

JAVA_HOME='/usr/lib/java'

Configuración de la Base de Datos

Una vez instalados los paquetes se procederá a crear el usuario en la Base de Datos, este será el propietario de la misma.

openxp# su postgres
openxp$ createuser --no-createdb --no-superuser --no-createrole --pwprompt openxp
openxp$ exit

El siguiente paso es para crear la Base de Datos.

openxp# su postgres
openxp$ createdb --owner openxp --encoding UNICODE openxp # Crear la bd openxp
openxp$ exit

Instalación y configuración de PL/Java

Antes de importar la base de datos de openXpertya deberíamos habilitar el soporte pljava en postgresql. El paquete etch de pljava esta preparado para gcj, no para la VM de Sun. Además, existe un bug en este paquete que impide que la aplicación funcione.

xpertya# apt-cache search pljava
postgresql-8.1-pljava-gcj - Java procedural language for PostgreSQL

Deberíamos bajarnos entonces e instalar pljava: http://pgfoundry.org/frs/download.php/967/pljava-i686-pc-linux-gnu-pg8.1-1.3.0.tar.gz Descomprimimos y copiamos los contenidos de tal manera que estos ficheros queden en estos sitios:

/usr/lib/postgresql/8.1/lib/pljava.so
/usr/lib/postgresql/8.1/lib/pljava.jar
/usr/share/postgresql-8.1-pljava/install.sql
/usr/share/postgresql-8.1-pljava/uninstall.sql

Añadimos al final de /etc/postgresql/8.1/main/postgresql.conf

dynamic_library_path = '$libdir:/usr/lib/postgresql/8.1/lib/'
custom_variable_classes = 'pljava'              # list of custom variable class names
pljava.classpath='/usr/lib/postgresql/8.1/lib/pljava.jar'

Creamos un vínculo simbólico para libjvm.so:

openxp# ln -s /usr/lib/java/jre/lib/i386/server/libjvm.so /usr/lib/libjvm.so

Para finalizar, creamos y ejecutamos este script:

#!/bin/bash

echo "
CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS
 '/usr/lib/postgresql/8.1/lib/plpgsql.so' LANGUAGE 'C';
 CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
  HANDLER plpgsql_call_handler
    LANCOMPILER 'PL/pgSQL';
" > /tmp/.buffer

cat /usr/share/postgresql-8.1-pljava/install.sql /usr/share/postgresql/8.1/contrib/tsearch2.sql >> /tmp/.buffer

echo "
CREATE schema openxp;
SELECT sqlj.install_jar('file:/var/www/ServidorOXP/lib/sqlj.jar','sqlj',true);
INSERT INTO sqlj.classpath_entry (schemaname, ordinal, jarid) VALUES ('openxp', 1, 1);
" >> /tmp/.buffer
psql -d openxp -U openxp -h localhost -f /tmp/.buffer
rm /tmp/.buffer


Si este script falla, posiblemente necesites ejecutarlo como usuario postgres, reemplaza la linea:

psql -d openxp -U openxp -h localhost -f /tmp/.buffer

por

psql -d openxp -U postgres -h localhost -f /tmp/.buffer

Esto sirve para:
a) Habilitar el lenguaje pgSQL en la base de datos
b) Habilitar las funciones de instrumentación
c) Instalar el repositorio sqlj.jar implementado en openXpertya


Para finalizar con la configuración de la base de datos se deberán cargar las tablas necesarias para que la aplicación funcione correctamente.

openxp# su postgres
openxp$ psql --username openxp --password --host localhost --dbname openxp < $OXP_HOME/data/openxpdb.sql 
a mi me marcaba un error por que no encontraba el archivo (open xpertya 2.1)
openxp$ psql --username openxp --password --host localhost --dbname openxp < $OXP_HOME/data/openxp_db.sql
openxp# exit


Para que las aplicaciones se conecten con la Base de Datos sin problema debe modificar los siguientes parámetros en el archivo pg_hba.conf ubicado en la siguiente ruta: /etc/postgresql/8.1/main/ .

openxp# nano /etc/postgresql/8.1/main/pg_hba.conf

Al final del archivo agregar las siguientes líneas.

local all postgres trust
#
# All other connections by UNIX sockets
local all all trust
#
# All IPv4 connections from localhost
host all all 127.0.0.1 255.255.255.255 trust
host all all [tu IP asignada a eth0] 255.255.255.255 trust
#
# reject all other connection attempts
host all all 0.0.0.0 0.0.0.0 reject

En mi caso también tuve que modificar el archivo /etc/postgresql/8.1/main/postgresql.conf

listen_addresses = '*'

Una vez que agregadas las líneas en el archivo debe reiniciar el servicio de PostgreSQL desde la consola:

openxp# /etc/init.d/postgres8.1 reload

En mi caso(Debian 4.0) era :
openxp# /etc/init.d/postgresql-8.1 reload

Configuración de OpenXpertya

Para configurar la aplicación deberá realizar los siguientes pasos:

openxp# cd /var/www/ServidorOXP/
openxp# ./Configurar.sh

En este ultimo paso debe colocar los parámetro solicitados y los mismos se podrán comprobar si están correctos al colocarse todo en verde, una vez comprobado que todos este bien se procede a guardar los cambios y desde este momento se instalará la aplicación.


Posibles problemas en este paso:

1) Si el locale por defecto no está configurado como es_ES, la pantalla de configuración no arranca. El error que aparece es: java.util.MissingResourceException: Can't find resource for bundle. Deberán ejecutar el siguiente comando; en la primer pantalla elegir es_ES, y en la segunda volver a elegirlo.

openxp# dpkg-reconfigure locales

2) Si el puerto 80 está siendo utilizado (p.e. Apache), utiliza otro alternativo (p.e. 8081).

3) Si obtienes un error relacionado con template1, revisa la variable listen_addresses = '*', de postgresql.conf.

4) Si obtienes un error relacionado con el JDBC, revisa la configuración del pg_hba.conf.

5) Al final se debe ver un mensaje de este estilo:

BUILD SUCCESSFUL
Total time: 46 seconds
Mapped windows:
54525958->sun.awt.X11.XFramePeer@16cd7d5(3400006)

Si aparece algo como

BUILD FAILED
/home/openxp_21/ServidorOXP/build.xml:230: Warning: Could not find file /home/openxp_21/ServidorOXP/utils/PlantillaFTPDescargarOXP.txt to copy

Es que hacen falta los siguientes archivos que se encuentran en el tar.gz de la versiòn 2.0

/ServidorOXP/utils/PlantillaFTPDescargarOXP.txt
/ServidorOXP/utils/PlantillaSubirExportacion.bat
/ServidorOXP/utils/PlantillaSubirExportacion.sh
/ServidorOXP/utils/PlantillaSubirExportacion.txt 

Iniciando el Servidor de Aplicaciones

En el sub-directorio utils se encuentra un script, debe ejecutar el script para iniciar el servicio.

openxp# cd /var/www/ServidorOXP/utils
openxp# ./IniciarServidor.sh

El siguiente mensaje indica que esta arriba el servicio:

22:54:47,252 INFO  [Server] JBoss (MX MicroKernel) [4.0.2 (build: CVSTag=JBoss_4_0_2 
date=200505022023)] Started in 1m:16s:726ms

Una vez finalizado este paso usted ya podrá hacer uso de la herramienta.

http://localhost:puerto/


En la versión 2.1 despues de realizar todos los pasos de la instalación, es posible que tenga el siguiente error en la interfaz JAVA.

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.StringIndexOutOfBoundsException: String index out of range: 2
    java.lang.String.charAt(String.java:558)
    org.openXpertya.model.MRole.canView(MRole.java:1825)
    org.openXpertya.model.MTabVO.loadTabDetails(MTabVO.java:351)
    org.openXpertya.model.MTabVO.create(MTabVO.java:197)
    org.openXpertya.model.MWindowVO.createTabs(MWindowVO.java:312)
    org.openXpertya.model.MWindowVO.create(MWindowVO.java:272)
    org.openXpertya.www.WWindow.doGet(WWindow.java:193)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.openXpertya.www.WFilter.doFilter(WFilter.java:172)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)

La solución es la respuesta de jorgev en el foro, y la solución que me funcionó.

Parece que hay un dato mal en la tabla MRole y que por eso da el error que mencionás. En la tabla ad_role, debes modificar la columna userlevel para que los datos contengan siempre siempre 3 caracteres con espacios: "S " " C " " O" Además, antes de generar una compañía en el sistema, se debe modificar la tabla ad_ref_list con este esquema donde sea necesario en las filas correspondientes (ad_ref_list_id: 451, 452, 453, 454).

Todo esto lo puedes hacer utilizando el pgAdmin.


Como podria hacer para separar en tres capas openxpertya: en un servidor el tomcat, en otro servidor la base de datos y en otro servidor el jboss. De antemano muchas gracias.

Herramientas personales