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.
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.
