Trabajo pagina web Diseño de Aplicaciones Distribuidas URJC 2023
Sergio Alvarez ScharfhausenMartin Alami Mochi
Eduard Vasile Stancu
Fase 1
- Descripción
- Entidades
- Funcionalidades
- Funcionalidad servicio interno
Fase 2
- Pantallas principales
- Digrama de navegacion
- Diagrama de clases uml
- Diagrama Entidad/Relacion
Fase 3
- Instrucciones de despliegue de aplicacion
- Compilacion
- Creacion instacia OpenStack
- Subida del .jar
- Instalaciones en maquina
- Ejecucion de la aplicación
Fase 4
- Diagrama de conexiones
- Video Se trata de una web de compra/venta de artículos de segunda mano entre particulares. - USUARIO: Representara a las personas registradas en la pagina.
- PRODUCTO: Representa los artículos subidos a la plataforma por parte de los usuarios.
- MENSAJES: Representa los mensajes que se envian entre usuarios cuando quieren realizar una compra.
- CONVERSACIONES: Representa el conjunto de Chats entre usuarios con su correspondiente lista de mensajes. - PÚBLICAS: visualizar productos y perfiles de usuarios.
- PRIVADAS: Subir artículos, realizar comprar/ventas de productos y comunicación entre usuarios. Mensajería entre usuarios y envió de correo de confirmación de creación de cuenta y confirmación transacciones.
Pantalla principal donde se visualizan todos los artículos en venta así como enlaces a: formulario para subir un nuevo producto, acceder al perfil del usuario y poder acceder a sus conversaciones. En todas las páginas habrá una cabecera un un pie de pagina donde, pulsando al logo desde cualquier lugar, volverá a esta pagina principal. Se podrá realizar una búsqueda de productos por nombre.
2.- Desde Eclipse seleccionando el nombre del proyecto -> Run as -> 4 Maven Build y en Goals poner package spring-boot:repackage, de forma que creamos el jar
3.- Repetir proceso para el Servicio Interno
4.- Subir los archivos .jar generados a myR
1.- Acceder a la pagina de OpenStack e introducir las credenciales proporcionadas
2.- Crear una nueva instancia: autogenerar Ip flotante asociada
3.- Crear una nueva llave y asociarla a la instancia creada, asegurase de que tiene el menor numero de permisos(chmod 400)
4.- Crear security group para el puerto de tu aplicación y asociarlo a la instancia
1.-Teniendo los jar en el myR los copiamos a la maquina virtual con este comando: scp -i "RUTA DE LA LLAVE" "RUTA DEL .JAR" ubuntu@"IP FLOTANTE AUTOGENERADA":/home/ubuntu
2.-Entramos en la maquina virtual ssh con el siguiente comando: ssh -i "RUTA DE LA LLAVE" ubuntu@"IP FLOTANTE AUTOGENERADA"
Una vez entramos en la maquina virtual ssh instalamos algunas cosas que nos haran falta para ejecutar los .jar:
1.-Se actualizan los paquetes con el comando: sudo apt update
2.-Instalamos java mediante el comando: sudo apt install openjdk-17-jdk openjdk-17-jre
3.-Comprobamos si se ha instalado java y verificamos su version con: java --version
4.-Instalamos BD mysql mediante el comando: sudo apt install mysql-server
5.-Comprobamos si se ha instalado mysql y verificamos su version con: mysql --version
6.-Entramos en el inicio de sesion de mysql con: mysql -u root -p
- 6.1.- En caso de no poder entrar hacemos este comando: sudo mysql -u root
7.- Una vez dentro, si fuese necesario cambiamos la contraseña del root con lo siguiente: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TU CONTRASEÑA DEL PROPIERTIES';
8.- Nos creamos el esquema que vamos a usar en la BD con lo siguiente: CREATE SCHEMA 'NOMBRE DE TU SCHEMA DEL PROPIERTIES';
9.- Salimos del mysql con exit
Estando dentro de la maquina virtual ssh:
1.-Ejecutamos los .jar con el siguiente comando: java -jar "NOMBRE DEL .JAR"
2.-Abrimos una nueva terminal
3.-Repetir paso 1 con el .jar del servicio interno
4.-Acceder a la pagina con : https://"Ip Flotante":"PUERTO ASOCIADO"
-
Contruir una imgen: sudo docker build -t USUARIO_CREADO_EN_DOCKER / NOMBRE_IMAGEN DIRECCION_DOCKERFILE
-
Visualizar imagenes: sudo docker images
-
Arrancar un contenedor a partir de una imagen: sudo docker run -d -p 8443:8443 NOMBRE_IMAGEN
-
Visualizar estado contenedores: sudo docker ps -a
-
Acceso a MySQL: sudo docker exec -it NOMBRE_SQL mysql -uroot -p
-
Visualizar estado haproxy: sudo systemctl status haproxy
Nuestro programa se ha realizado dentro de contenedores docker, como se ha explicado anteriormente, de manera que su esquema quedaria tal que asi:
Como se puede apreciar en la imagen, los usuarios solo se podran conectarse a la aplicacion a partir de la Ip publica del balanceador de carga, de forma que este se encargara de redirigir las peticiones a traves de las Ip's privadas del programa principal correspondiente.
A su vez el programa principal accedera al servicio interno a traves del balanceador a traves de otro frontend especifico para los servicios internos.
Y por ultimo tenemos una instancia para la Base de datos que es comun para las dos aplicaciones, que se conectan a esta mediante su Ip privada.