Entradas

Instalación de Oracle-XE con Docker.

Imagen
Los contenedores nos dan muchas posibilidades en cuestión de infraestructura y una de las ventajas que ofrecen es poder hacer instalaciones que de otro modo requieren tiempo y configuraciones considerables.

Uno de estos casos es oracle database.

El proceso para levantar un servidor completo de base de datos nos tomará únicamente algunos minutos.

Nota. Listaré únicamente el proceso mínimo para lograrlo, la información completa se encuentra en el repositorio de la imagen:

https://github.com/wnameless/docker-oracle-xe-11g

Hacemos pull de la imagen:
docker pull wnameless/oracle-xe-11g
Una vez descargada la imagen ejecutamos el contenedor, exponiendo los puertos 22 (ssh) y 1521 (oracle) en 49160 y 49161 respectivamente (los puertos destino son únicamente de ejemplo, pueden ser cualesquiera):

docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g
Eso es todo, ahora podemos usar nuestra base de datos con los siguientes datos:

user: sys
password: oracle
SID: xe
Puerto: 49161

Del mism…

Mover directorio de datos de MySQL (mariadb) a otro filesystem en Centos 7

Imagen
Puede darse el caso en el que necesitemos mover el directorio en el cuál una base de datos MySQL almacena la información, por ejemplo, a un filesystem mas grande.

El proceso es sencillo y existen varios tutoriales para realizarlo, por ejemplo: https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16-04https://www.digitalocean.com/community/tutorials/how-to-change-a-mysql-data-directory-to-a-new-location-on-centos-7
Sin embargo, en Centos / RHEL hay un par de detalles a tomar en cuenta, especialmente aquellos que requieren modificar el contexto de seguridad SeLinux de los directorio.
El primer paso es detener la ejecución del servicio, en mi caso el paquete instalado es mariadb-server:

systemctl stop mariadb

Mover el directorio.Ya que detuvimos el servicio vamos a realizar una copia del directorio de datos (/var/lib/mysql en la mayoría de los casos) supongamos que el destino será /disk2/mysql:
sudo rsync -av /var/lib/mysql/ /disk2/mys…

Generar diagrama "Entidad Relación" en workbench.

Imagen
Workbench permite generar el diagrama entidad relación de bases de datos en MySQL, el procedimiento es muy simple:


Hacer click en el menú "Database -> Reverse engineer..." Especificar los datos de conexión de la base de datos de la cuál se desea generar el diagrama. Una vez que workbench compruebe la conexión y obtenga la información necesaria de la base de datos hacer click en continue. Solicitará seleccionar la(s) base(s) de datos. Nos permite elegir también las tablas a exportar, por defecto son todas. Una vez que hagamos click en ejecutar tendremos nuestro diagrama generado.

Apache reverse proxy (Linux)

Imagen
Imaginemos un caso en el cual requerimos publicar aplicaciones que están en diferentes servidores pero por alguna razón solo disponemos de una ip pública y/o dominio y solo podemos usar un puerto.

En este caso podemos apoyarnos de una característica de apache para resolver el problema de manera sencilla, a esta característica se le conoce como "reverse proxy".

Un reverse proxy nos da la posibilidad de que un servidor muestre contenido de otros servidores de manera transparente.

Supongamos que contamos con el escenario es el siguiente:
Dominio: midominio.comPuerto: 80Servidor proxy apache (192.168.1.1)Servidor php apache (192.168.1.2)Servidor java tomcat  (192.168.1.3)Servidor .net iis (192.168.1.4)
Lo que haremos es usar el reverse proxy para publicar las aplicaciones usando el mismo dominio y diferenciándolas por el contexto, es decir, si un usuario teclea en su navegador http://midominio/tomcat se recibirá la petición en el reverse proxy (192.168.1.1) y la redirigirá al…

Grails y weblogic 12c getRealPath

Imagen
Estuve realizando algunos reportes en grails usando el plugin de jasper reports, sin embargo, al momento de desplegar en weblogic, me encontré con que aquellos reportes que incluyen subreportes fallaban debido a que el parámetro que estaba enviando desde la el controller con el path absoluto estaba llegando vacio.

Investigando un poco encontré que el weblogic por defecto no permite usar la función: request.getSession().getServletContext().getRealPath("") o mejor dicho, al usarla regresa null.

Para resolver esto, hay que establecer el atributo: show-archived-real-path-enabled en el archivo web-app/WEB-INF/weblogic.xml de la siguiente manera:


<?xml version="1.0" encoding="UTF-8"?> <wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd h…

Grails y weblogic 12c

Imagen
Estos días he estado trabajando en un proyecto desarrollado en grails el cuál por ciertas razones será desplegado en oracle weblogic 12c.
Al momento de realizar el despliegue me encontré con algunos problemas los cuales explicaré como resolver:
weblogic.xml Como menciona la documentación de grails, es necesario agregar un archivo llamado weblogic.xml dentro del directorio web-app/WEB-INF, en el cual se deben definir los siguientes atributos:


prefer-web-inf-classes: indica a weblogic que en caso debe darle preferencia a las clases encontradas en el paquete de despliegue.cookie-name: establece el nombre de la cockie de sesión.context-root: establece el contexto en el cual será desplegada la aplicación.
Sin embargo, en mi caso, al desplegar de este modo obtenía el siguiente error:



java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
Esto es debido a que dentro de las dependencias groovy de mi aplicac…

Permitir conexiones externas MySQL (GNU/Linux)

Imagen
MySQL ( ó mariadb ) valida el acceso a las bases de datos no solo por usuario, sino que también lo hace por ip de conexión y por defecto solo permite conexiones locales. Para permitir conexiones externas hay que hacer algunas configuraciones.

1. Edición archivo de configuración.

En la mayoría de las distribuciones el archivo de configuración podemos encontrarlo en /etc/mysql/my.cnf ó  /etc/my.cnf. Es necesario editar este archivo agregando la siguiente línea (o editando en caso de existir el parámetro bind-address):
bind-address = 0.0.0.0  Esto indicará al servicio que también puede escuchar peticiones de cualquier dirección ip ( como ya nos habremos imaginado no es lo mejor en cuestiones de seguridad, así que si deseamos realizar desde alguna ip en específico se puede realizar, por ejemplo; bind-address = 192.168.1.2 ).

2. Reiniciar el servicio.

Es necesario reiniciar el servicio de MySQL para que el cambio en la configuración tome efecto:
# systemctl restart mysqld3. Abrir puerto en …