Instalar aplicación en Java, dependiente de base de datos, en Tomcat dependiente de Nginx

 Ya se ha visto en entradas anteriores cómo instalar un entorno apropiado para el despliegue de una aplicación en Java simple. Este entorno consistía en el empleo de un servidor de red Nginx como servidor de proxy inverso y un contenedor de red Tomcat.
  En esta ocasión se va a añadir una variable más a la "ecuación" que constituye el mencionado entorno, y se va a instalar también una base de datos que formará parte del mismo.
  En primer lugar, comentar que Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos, que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo, lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Esto lo hace idóneo para la creación de aplicaciones de red y, de hecho, muchas aplicaciones de red de la actualidad están hechas, en mayor o menor parte, con este lenguaje.
  Los ejemplos de la siguiente explicación se han probado con éxito en  un sistema operativo Debian 9, que tiene alojados en él un servidor Nginx 1.14 como servidor de proxy inverso, un Tomcat 8 como contenedor de red, y una base de datos PostgreSQL 10.5.
  Con todo lo necesario instalado, y debidamente configurado de base, es necesario, primeramente, detener el servicio de Tomcat (en este ejemplo se llamará "tomcat2") utilizando el comando systemctl stop tomcat2 (anteponiendo sudo si no se está en el sistema como administrador).


CONFIGURACIÓN DE TOMCAT

  En primer lugar, como se desplegará manualmente la aplicación desde un archivo comprimido tar, se accederá al directorio donde se encuentra y se empleará el comando tar -xvf <archivo.tar.xz> (anteponiendo sudo si no se está en el sistema como administrador), lo que dará como resultado un directorio "ROOT".
  A continuación, se accede a la ruta donde se encuentra el directorio para aplicaciones del Tomcat (en este ejemplo, "/opt/tomcat2/srv/") y se crea un directorio (mejor con un nombre representativo) para alojar el directorio "ROOT", que se copiará seguidamente en el interior del primero (en este ejemplo, se llamará "enxe1801.cli.enxenio.net"). Luego, se cambian de propietario tanto el directorio recién copiado, como todos sus archivos y subdirectorios para que este sea el usuario "tomcat", del grupo "tomcat" [comando chown -R tomcat:tomcat ROOT (anteponiendo sudo si no se está en el sistema como administrador)].
  Acto seguido, se edita el archivo "server.xml" y se añade el nuevo anfitrión virtual del modo habitual (en el siguiente enlace de la presente bitácora se explica el modo), teniendo que quedar de manera similar a la siguiente imagen (en este ejemplo, el nuevo dominio para la aplicación se llama "enxe1801.cli.enxenio.net", y todos los nombres representativos hacen referencia a este):
  En el caso de que no sea el primer Tomcat en el mismo anfitrión (sea máquina física o virtual), se deben cambiar también el valor de la directiva "<Server port>" por otro diferente a cualquier otro Tomcat instalado en ese mismo anfitrión, y que no represente un número de puerto ocupado por nada en dicho anfitrión (en el ejemplo, "8010")...
... y el valor del parámetro "port" de la directiva "<Connector>" por otro que represente a un puerto libre en el anfitrión (en este ejemplo es "8080").
  Pueden verse los puertos abiertos mediante el comando netstat -tulpn | grep LISTEN (aquellos que aparezcan son los que está ocupados).

  A continuación, se debe crear el directorio "properties" dentro del directorio donde está instalado el Tomcat, y los directorios "enxe1801-tmp" y "enxe1801-persistentes" dentro del directorio "srv" del directorio antes mencionado del programa. En el interior del directorio"properties", se incluirá un archivo yaml (llamado "enxe1801-prod.yml" en este ejemplo) con la configuración entre Tomcat y su base de datos en PostgreSQL, cuyo texto es:
spring:
    datasource:
        url: jdbc:postgresql://localhost:<puerto de PostgreSQL>/<base de datos>
        username: <usuario de base de datos>
        password: <contraseña para base de datos>

management:
    endpoint:
        logfile:
            external-file: /opt/tomcat2/logs/<archivo de registro>.log

jhipster:
    mail:
        base-url: <uRL de la aplicación>

ficheros:
    carpeta-ficheros-temporales: "/opt/tomcat2/srv/<directorio>-tmp"

    carpeta-ficheros-persistentes: "/opt/tomcat2/srv/<directorio>-persistentes"

  Todos estos nuevos directorios y archivos deben tener el propietario "tomcat" y estar en el grupo "tomcat".
  Finalmente, se debe editar el archivo ".service" de Tomcat (en este ejemplo, "tomcat2.service"), alojado en la ruta "/etc/systemd/system", y añadir la línea "-Dspring.config.additional-location=<ruta al archivo yaml>" al final de la línea de parámetros "Environment" referente a "JAVA_OPTS".


CONFIGURACIÓN DEL NGINX

  Ahora se debe configurar un dominio específico para la aplicación (en este ejemplo, "enxe1801.cli.enxenio.net"), mediante el método explicado con detalle en una  entrada anterior, pero que aquí se resumirá de un modo más exacto y concreto.
  En primer lugar, se creará el directorio "enxe1801.cli.enxenio.net" y su subdirectorio "log", dentro del cual se crearán los archivos "enxe1801.cli.enxenio.net.access.log" y "enxe1801.cli.enxenio.net.error.log", en la ruta "/var/www/". Seguidamente, se  cambian el propietario y el grupo de estos nuevos directorios y archivos para que este no sea el administrador (lo mejor es cambiarlos a "www-data" en ambos casos), y sus permisos a "755".
  A continuación, se creará el archivo de configuración con el proxy inverso en el directorio "sites-available" de Nginx (en este ejemplo se llamará como el dominio para la aplicación).




LA BASE DE DATOS

  Lo que hay que hacer en PostgreSQL es crear la base de datos a la que se va a asociar la aplicación en Java, así como su usuario y su rol.
  Primeramente, tras activar el programa, se creará el usuario mediante el comando de SQL CREATE USER enxe1801user WITH CREATEDB PASSWORD 'enxe1801';, lo que creará su rol al mismo tiempo. A continuación, se comenta el rol utilizando el comando COMMENT ON ROLE enxe1801user IS 'enxe1801';.
  Acto seguido, se crea la base de datos empleando el comando CREATE DATABASE enxe1801;, y se cambia su propietario al usuario antes creado empleando el comando ALTER DATABASE enxe1801 OWNER TO enxe1801user;.
  Se debe recordar cambiar los nombres de usuario, de rol, de la base de datos, y del propietario, y la contraseña del este ejemplo por los deseados por el usuario.
  Puede verse la nueva base de datos utilizando el comando \l, y luego salir mediante el comando \q.


OTRAS CONFIGURACIONES

  Ahora sólo queda editar el archivo "hosts" (alojado en el directorio "etc") y añadir la dirección IP y el nombre del nuevo dominio a la lista que haya antes de la sección para IPv6.
  Finalmente, hay que reiniciar la red de la máquina utilizando el comando systemctl restart networking (anteponiendo sudo si no se está en el sistema como administrador), reiniciar el Nginx [comando systemctl restart nginx (anteponiendo sudo si no se está en el sistema como administrador)], y arrancar el Tomcat con el comando systemctl start tomcat2 (anteponiendo sudo si no se está en el sistema como administrador).

  Puede verse el resultado de todas estas configuraciones en el navegador de red, escribiendo en la barra de direcciones el nombre del dominio de la aplicación.

  Aguardo que esta entrada haya sido del gusto del lector. En caso afirmativo, espero que el lector la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.