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
- 1.1 Instalación de Ubuntu Server 14.04 LTS en Virtual Box
- 1.2 Instalación del JDK 6u45
- 1.3 Instalación de Tomcat 6.0.44
- 1.4 Instalación de MySQL 5.5.43
- 1.5 Instalación de phpMyAdmin
- 2. Configuración del entorno de despliegue
- 3. Despliegue
- 4. Primer acceso: migración
- 5. Conclusiones
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
- Otorgar al instalador permiso de ejecución
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:
sudo chmod a+x [version]-linux-i586.bin
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.
-
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
- Acceder a la página de descarga de MySQL APT
- Descargar en la máquina anfitrión el fichero Ubuntu Linux 14.04 (Architecture Independent), DEB. Es necesario estar logueado con la cuenta de Oracle
- Transferir el fichero a la máquina virtual
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.
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:
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:
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:
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:
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.
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.