Desplegando TNT Concept en Ubuntu Server 14.04 LTS: compatibilizando versiones

0
5618

TNT Concept es una herramienta de gestión administrativa y de seguimiento de trabajo diario desarrollada en Autentia. Vamos a ver cómo instalarla teniendo en cuenta que está desarrollada en una versión antigua de Java.

Desplegando TNT Concept en Ubuntu Server 14.04 LTS: compatibilizando versiones

La motivación para realizar TNT Concept proviene de las siguientes necesidades, las cuales son recurrentes en la mayoría de las empresas:

  • Crear el esquema funcional de la empresa permitiendo mantener un repositorio con la ficha de cada empleado, los departamentos, las categorías y los convenios laborales.
  • Gestionar la contabilidad de la empresa, permitiendo llevar un control de las facturas, pagarés, cuentas y asientos.
  • Gestionar los proyectos de la empresa, permitiendo dar de alta los nuevos y mantener la relación de colaboradores, interacciones y ofertas.
  • Reflejar el trabajo de los empleados mediante una bitácora. Cada empleado puede imputarse las actividades realizadas cada día y diferenciar si las horas son facturables o no, en qué franja de tiempo, para qué proyecto se han realizado y bajo qué rol.
  • Gestionar la disponibilidad de los empleados en base a los proyectos a los que están asignados y el tiempo que les ocupa.
  • Generar informes de actividad, de facturación, de proyectos, de interacciones, de ofertas, de pedidos y de personal.
  • Gestionar las vacaciones de los empleados, permitiendo que éstos hagan solicitudes y facilitando a recursos humanos la concesión.

0. Índice de contenidos

1. Instalación del entorno de despliegue

TNT Concept está disponible para ser descargado desde el perfil de usuario de Autentia en Github. La release actual de TNT Concept es la 0.25.

TNT Concept fue desarrollado para correr bajo:

  • Java Development Kit, versión 1.6
  • Tomcat 6.0.X o JBoss 4.2.3 JDK6
  • MySQL 5.0 o superior (recomendando emplear 5.1.X)
  • GUI Tools para MySQL

Como se puede apreciar, las versiones son antiguas. El objetivo de este tutorial es instalar sobre un sistema operativo actual, como Ubuntu 14.04 LTS, las versiones recomendadas de lo que consideremos crítico, como el JDK 1.6, y las versiones actualizadas de lo que consideremos menos crítico, que exista una compatibilidad probada o que sea accesorio.

En este tutorial por tanto vamos configurar el siguiente entorno de despliegue para TNT Concept:

  • Oracle Virtual Box 4.3.28
  • Ubuntu Server 14.04 LTS
  • Java SE 6 (JDK 6u45)
  • Apache Tomcat 6.0.44
  • Oracle MySQL 5.5.43
  • phpMyAdmin 4.0.10deb1

Como apuntes, decir que:

  • Es posible levantar TNT Concept en una máquina con Java 8, MySQL 5.1.X y Tomcat 6.
  • Para compilar TNT Concept desde el código fuente, es necesario Maven 2.2 y que la versión del JDK sea menor que 8.

1.1 Instalación de Ubuntu Server 14.04 LTS en Virtual Box

Nuestro compañero Rodrigo de Blas nos ha explicado en un tutorial anterior cómo instalar Ubuntu Server 14.04 LTS en Virtual Box. En lugar de utilizar la imagen que él ha utilizado, podemos descargarnos una imagen limpia desde el sitio oficial de Ubuntu. El resto de pasos a seguir son los mismos que describe en su tutorial.

1.2 Instalación del JDK 6u45

Como ya es conocido, aunque a algunos les puede pillar por sorpresa, Canonical no incluye Java Oracle en Ubuntu desde la distribución 11.10. Desde que apareció Java 7, no se actualizaron más versiones de Java 6 y poco a poco han ido desapareciendo del gestor de paquetes (apt-get), por lo que la instalación de Java en Ubuntu se nos puede complicar.

A continuación se describen los pasos para instalar Java 6 en Ubuntu 14.04.

  • 1) Descargar el JDK
    • Crear una cuenta de Oracle
    • Acceder desde la máquina anfitrión a la página de descargas de Java SE 6. Aceptar el contrato de licencia y seleccionar jdk-6u45-linux-i586.bin.
    • Transferir, por ejemplo por ssh, de la máquina anfitrión a la máquina virtual el binario a la home.
  • 2) Instalar el JDK
    • Para lograr instalar el JDK y configurar la instalación adecuadamente, se ha hecho una síntesis aunando diferentes propuestas aportadas por la comunidad las cuales se complementan.

      Para instalar:

    • Otorgar al instalador permiso de ejecución
    • sudo chmod a+x [version]-linux-i586.bin
    • Ejecutar el instalador
    • sudo ./[version]-linux-i586.bin

      Tras la instalación, se genera una carpeta denominada jdk1.6.0.45, la cual contiene los ficheros y carpetas del JDK instalado. Si se desea, renombrar la carpeta jdk1.6.0.45 a java-6-oracle o a otro nombre que sea significativo.

  • 3) Configurar la instalación
    • Mover la carpeta jdk1.6.0.45 a /usr/lib/jvm

      sudo mv jdk1.6.0.45 /usr/lib/jvm
    • Añadir la nueva versión de java, javac y javaws como links simbólicos de sistema (system alternative) y otorgarles prioridad 1

      sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.6.0.45/bin/java" 1
      sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.6.0.45/bin/javac" 1
      sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.6.0.45/bin/javaws" 1
    • Marcar las nuevas alternatives para que sean utilizadas

      sudo update-alternatives --config java
      sudo update-alternatives --config javac
      sudo update-alternatives --config javaws
    • Probar que se han creado y actualizado las alternatives para java y javac

      $ java -version

      java version "1.6.0_45"
      Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
      Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
      $ javac -version
      javac 1.6.0_45
    • Editar el bash profile para añadir, al final del fichero, las variables de entorno.

      sudo vim /etc/profile
      # Java environment variables
      JAVA_HOME=/usr/lib/jvm/jdk1.6.0.45
      JAVA_BIN=$JAVA_HOME/bin
      PATH=$PATH:$JAVA_HOME:$JAVA_BIN
      export JAVA_HOME
      export JAVA_BIN
      export PATH
    • Comprobar que las variables de entorno se han exportado correctamente

      echo $JAVA_HOME
      /usr/lib/jvm/jdk1.6.0.45
      echo $JAVA_BIN
      /usr/lib/jvm/jdk1.6.0.45/bin
    • Recargar las variables de entorno de alcance del sistema

      . /etc/profile

1.3 Instalación de Tomcat 6.0.44

Para instalar la última versión de Tomcat 6 podemos utilizar el gestor de paquetes de Ubuntu:

sudo apt-get install tomcat6

Como previamente hemos instalado y configurado Java, no es necesario hacer más configuraciones en Tomcat como por ejemplo indicarle la ruta de $JAVA_HOME. En tal caso, podemos indicar a Tomcat que use la máquina virtual de Java que convengamos, editando el fichero defaults de Tomcat /etc/default/tomcat6:

sudo vim /etc/default/tomcat6
JAVA_HOME=/usr/lib/jvm/jdk1.6.0.45

1.4 Instalación de MySQL 5.5.43

Para instalar MySQL en Ubuntu primero es necesario instalar el repositorio de paquetes de MySQL, MySQL APT. Después, haciendo uso del comando apt-get podremos instalar la versión 5.5 de MySQL.

Descargar MySQL APT
Instalar MySQL APT
  • Siguiendo los pasos de la guía de uso de MySQL APT, extraemos que hay que añadir el repositorio
    dpkg -i mysql-apt-config_0.35-1ubuntu14.04_all.deb

    y obtener la información de las últimas versiones de los paquetes del repositorio MySQL APT

    sudo apt-get update
  • Mientras se añade el repositorio, el instalador preguntará qué versión de MySQL server va a ser la que esté disponible así como otras utilidades.
Instalar MySQL server 5.5
  • Tras tener disponibles los paquetes de MySQL mediante el repositorio MySQL APT, instalamos MySQL server

    sudo apt-get-install mysql-server-5.5

1.5 Instalación de phpMyAdmin

Para facilitar la administración de la base de datos si se desea, se puede instalar una herramienta que nos facilite las tareas las tareas relacionadas. En este caso se ha decidido utilizar phpMyAdmin. Para instalar phpMyAdmin introducir el comando:

sudo apt-get install phpmyadmin

La versión en el momento de escribir este tutorial que por defecto instala el gestor de paquetes es la 4.0.10deb1.

Para acceder a la herramienta, introducir en el navegador

{URL_MV}/phpmyadmin

2. Configuración del entorno de despliegue

2.1 Base de datos

Configurar instalación de MySQL

En el caso de TNT Concept, antes de hacer la importación de la base de datos, es importante modificar el fichero de configuración de MySQL para indicar que en su creación, las tablas de la base de datos sean nombradas en minúscula. De no hacerlo, con la release actual de TNT Concept va a fallar la migración que posteriormente veremos.

  • Abrir el fichero de configuración de MySQL

    sudo vim /etc/mysql/my.cnf
  • Bajo la sección mysqld añadir

    lower_case_table_names=1
Crear base de datos

Desde phpMyAdmin crear la base de datos tntconcept. Para ello, desde la pantalla principal pulsamos en la pestaña Bases de datos. En el apartado Crear base de datos damos el nombre a la base de datos y para finalizar pinchamos en el botón Crear.

1_crear_bbdd

Crear usuario de administración para la base de datos

Desde phpMyAdmin hay que proceder a crear un usuario para la aplicación tnt. Es importante indicar en el campo servidor localhost, de esta manera al usuario le estará permitido acceder únicamente desde el servidor a la base de datos.

Para ello, desde la pantalla inicial pulsamos en la pestaña Usuarios y pinchamos en el link Agregar usuario. Procedemos entonces a crear el usuario tnt:

2_crear_usuario

Para finalizar de crear el usuario, pulsamos en el botón Continuar.

Una vez creado el usuario, hay que configurar los privilegios para que tenga permisos sobre la base de datos tntconcept que se acaba de crear. Para ello, desde la pestaña Usuario, pinchamos en el link Editar los privilegios.

En la sección Privilegios específicos para la base de datos, marcar en el desplegable la base de datos tntconcept:

3_desplegable_privilegios

Aparece automáticamente una vista para asignar privilegios al usuario tnt sobre la base de datos tntconcept. Marcamos todos los privilegios y pulsamos en ello botón Continuar de la sección Privilegios específicos para la base de datos:

4_privilegios_tnt

Importar estructura y datos

En el installer de la distribución, bajo el directorio sql/mysql se encuentra el fichero createTables.sql. Es un script para la creación de la estructura de la base de datos tntconcept y la inserción de datos.

Para importar el script, pulsar en la base de datos tntconcept y en la pestaña SQL, copiar el contenido del script de importación. Para efectuar la importación, pulsar en el botón Continuar:

5_importar_script

2.2 Servidor Tomcat

A la instalación del servidor Tomcat hay que añadirle el conector de Java con la base de datos y especificar el contexto de la aplicación.

Añadir el conector

El conector a utilizar es Connector/J. Con la configuración original del entorno se utilizaba la versión 5.1.X. Comprobamos por tanto si la versión de Connector/J, 5.1.35 en este caso, es compatible con Java 1.6 y MySQL 5.5.43.

Una vez descargado Connector/J, poner el conector en el la carpeta /usr/share/tomcat6/lib.

Finalmente, podría ser necesario añadir el CLASSPATH.

Especificación del contexto

Para que el servidor Tomcat sepa cómo acceder a la base de datos y al directorio de configuración de la aplicación, hay que configurar el contexto de la aplicación. Hay que modificar para ello el fichero /etc/tomcat6/server.xml añadiendo justo antes de la etiqueta </Host>:

				
<Context path="/tntconcept" docBase="tntconcept">
	<Manager pathname=""/>
	<Environment name="TNTConceptConfigDir" type="java.lang.String" value="$CONFIG"/> <Resource name="jdbc/TNTConcept" auth="Container" type="javax.sql.DataSource"
						
	maxActive="100" maxIdle="30" maxWait="10000" driverClassName="com.mysql.jdbc.Driver" username="$DBUSER" password="$DBPASSWD" url="jdbc:mysql://localhost:3306/$DB?autoReconnect=true"/>
						
</Context>				
</Host>

Siendo los campos marcados en rojo:

$CONFIG: directorio de configuración. Recomendado utilizar /etc/tntconcept. Si no existe, crearlo.
$DBUSER: usuario de la base de datos tntconcept
$DBPASSWD: contraseña del usuario de la base de datos
$DB: nombre de la base de datos (tntconcept)

3. Despliegue

Antes de iniciar el servidor Tomcat, hay que configurar los ficheros de propiedades de la aplicación, crear las carpetas de informes y de logs y añadir el war de la aplicación en el servidor Tomcat.

3.1 Propiedades de la aplicación

En el installer comprimido de la distribución, bajo el directorio config se encuentran los ficheros de propiedades de la aplicación. Hay que copiarlos a la carpeta que se haya definido como $CONFIG en la especificación del contexto de la aplicación. Las propiedades que se recomienda cambiar en el manual son las contenidas en los ficheros:

log4j.properties
  • En la sección “# Default file appender”, descomentar la propiedad log4j.appender.file.File correspondiente a la plataforma Unix para especificar el directorio donde se quieran volcar las trazas de la aplicación. Estas trazas se generan durante la ejecución de la aplicación y pueden servir para depurar errores u obtener información de lo que está pasando.
  • En la sección “# Migration log appender”, descomentar la propiedad log4j.appender.migration.File correspondiente a la plataforma Unix para especificar el directorio donde se quieran volcar las trazas de migración de la base de datos de la aplicación. Estas trazas sólo se generan cuando se actualiza la aplicación de una versión a otra.
  • En la sección “# Security log appender”, descomentar la propiedad log4j.appender.security.File correspondiente a la plataforma Unix para especificar el directorio donde se quieran volcar las trazas relacionadas con seguridad.
autentia.properties
  • En la sección “# Uploaded files path”, descomentar la propiedad pathFicheros correspondiente a la plataforma Unix para especificar el directorio donde se quieran almacenar los ficheros anexos de la aplicación. Los ficheros anexos son documentos binarios (ficheros Word, imágenes, PDFs, …) que se pueden subir al servidor asociados a ciertos tipos de registro (por ejemplo, los CVs de los usuarios, los documentos de calidad, etc.)
  • En la sección “# Personal report path”, descomentar la propiedad pathReports correspondiente a la plataforma Unix para especificar el directorio donde se quieran almacenar los ficheros de reportes personales. La aplicación permite emplear reportes propios del usuario (aparte de los ya definidos), que deben crearse con JasperReports y cargarse en este directorio.
  • reportLogoName. Esta propiedad contiene el nombre de la imagen que se usa para los informes. Esta imagen se busca con el nombre indicado aquí y en la ruta de configuración ($CONFIG).
  • isUsingExternalCss. Esta propiedad indica si los ficheros de estilos css se buscan dentro de el directorio $CONFIG (valor true) o se usan los que se incluyen en el .war de la aplicación.
  • documentRoot. Nombre de la carpeta dentro de $CONFIG donde se buscan los ficheros de estilos (.css). Sólo tiene sentido si isUsingExternalCss vale true.

3.2 Carpetas de informes y logs de la aplicación

La aplicación TNT Concept genera informes y permite la subida de documentos. Hay que crear la carpeta

/var/lib/tntconcept/upload

y la carpeta

/var/lib/tntconcept/reports

Los logs de la aplicación se generan en la carpeta

/var/log/tntconcept

que también hay que crear.

Tras crear las carpetas, hay que dar permisos sobre ellas al usuario con el que se ejecuta tomcat

ps aux | grep catalina

en este caso, tomcat6.

Para dar permisos al usuario que ejecuta tomcat para esas carpetas, ejecutar el comando

sudo chown -R tomcat6:tomcat6 /var/lib/tntconcept
sudo chown -R tomcat6:tomcat6 /var/log/tntconcept

También es recomendable dar permisos a la carpeta $CONFIG

sudo chown -R tomcat6:tomcat6 /etc/tntconcept

3.3 Añadir el war

En el installer comprimido de la distribución, bajo el directorio app se encuentra el fichero tntconcept.war. Hay que colocarlo en el directorio de la máquina virtual /var/lib/tomcat6/webapps/.

Para terminar el despliegue, sólo queda iniciar el servidor Tomcat

sudo service tomcat6 start

o

sudo /etc/init.d/tomcat6 start

Los logs del servidor pueden verse en /var/log/tomcat6.

4. Primer acceso: migración

Para acceder a la aplicación TNT Concept, basta con teclear la ruta en el navegador

{URL_MV}:8080/tntconcept/root.jsf

El usuario por defecto es admin y la clave por defecto es adminadmin. A los nuevos usuarios la contraseña que se les asigna por defecto es password. En el primer acceso la aplicación está en modo consola, lo que significa que tiene que actualizar la base de datos. Pulsando sobre el botón Migrar base de datos. Cuando la migración se complete, reiniciar el navegador y volver a entrar en la aplicación. En ese momento estará lista para poder utilizarse.

6_bitacora

5. Conclusiones

En este tutorial no sólo hemos aprendido a instalar una herramienta de gestión, sino que hemos aprendido cómo configurar un entorno que sea compatible para desplegar una aplicación que se desarrolló con versiones anteriores de la tecnología actual.

Se han obtenido además los conocimientos básicos para configurar Java, MySQL y Tomcat en este caso sobre un sistema Ubuntu.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad