Web para la compra de ordenadores a piezas y perifericos.
- Configurador que permite al usuario elegir las piezas y comprueba que estas sean compatibles entre si.
- Venta de ordenadores montados con piezas preconfiguradas.
- Venta de periferícos y otros accesorios
- No hace falta estar registrado para ver los productos
- Productos: tienen un precio, características y piezas compatibles.
- Configuración: Ordenadores ya montados que el usuario podrá editar.
- Venta: Guarda los datos de la venta (Dirección de envío,total a pagar, fecha de la compra, productos comprados).
- Usuario: usuarios con distintos roles (Comprador, comprador VIP, vendedor, administrador).
- Comprador: puede adquirir productos.
- Comprador VIP: puede adquirir productos con descuentos especiales y sin gastos de envio.
- Vendedor: puede poner añadir, retirar y editar sus productos.
- Administrador: acceso completo a la web puede añadir, retirar y editar productos.
- Item: para el carrito.
- Carrito: para los productos que se desean comprar.
- Genera factura en pdf y la envía por mail al comprador.
- Si el producto no es de PcPiezas se le evnía un mail al vendedor de los productos que tiene que enviar.
- Envía un correo con estado del producto (Enviado, en reparto...).
- Gestión de usuarios.
- Gestión de productos.
- Ver el historial de ventas.
- Seguimiento de producto comprado.
- Comprar
- Vender
- Usar el configurador
- Añadir eliminar y ver productos
- Consultar y gestionar el inventario para todos los productos o un producto en concreto
- Añadir elementos al carrito para realizar una compra
- Gestión de usuarios
- Comunicacion con RabbitMq entre la aplicacion y el servicio de envio de correo electronica
Clonar el repositorio
git clone https://github.com/Alvar0P/PcPiezas --tag FASE-3
Ir a la ruta de la aplicaion principal
cd PcPiezas/PcPiezasIJ/
Compilar con maven
mvn clean package
Ir a la ruta del servicio de correo
cd PcPiezas/PcPiezasMailService/
Compilar con maven
mvn clean package
#Transferir los ejecutables al servidor
scp PcPiezas-0.0.1-SNAPSHOT.jar (usuario)@(direccion-ip):/PcPiezasEjecutables
scp PcPiezasMailService-0.0.1-SNAPSHOT.jar (usuario)@(direccion-ip):/PcPiezasEjecutables
Instalacion mysql Añadimos el repositorio
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
sudo dpkg -i mysql-apt-config*
Instalamos mysql-server siguiendo los pasos del instalador
sudo apt update
sudo apt install mysql-server
Abrimos la consola mysql
mysql -u root -p
Configuramos la base de datos
create database pcpiezas;
CREATE USER 'PcPiezasAdmin'@'localhost' IDENTIFIED BY 'bgnkwekwgrkqjvfq';
GRANT ALL PRIVILEGES ON * . * TO 'PcPiezasAdmin'@'localhost';
FLUSH PRIVILEGES;
quit
Iniciar Rabbitmq en un contenedor Docker
docker run --rm -it -p 15672:15672 -p 5672:5672 rabbitmq:3-management&
Ejecutar ambas aplicaciones en segundo plano
java -jar PcPiezas-0.0.1-SNAPSHOT.jar
java -jar PcPiezasMailService-0.0.1-SNAPSHOT.jar
- haproxy-rabbitmq: ejecuta 2 contenedores uno con el balanceador de carga haproxy y otra con rabbitmq, esta es la unica máquina con su ip publica expuesta para recibir conexiones por parte de los clientes
- PcPiezasApp1/2: estas máquinas son identicas y cada una ejecuta 4 instancias de la aplicación web principal
- PcPiezasMailService: esta máquina ejecuta dos instancias del servicio interno
- mysql: esta máquina ejecuta una instancia de la base de datos sql
Primero debemos crear las 5 máquinas virtuales en openstack y instalar docker en estas Para hacer este proceso mas facil podemos docker en una máquina y despues crear un snapshot de esta para crear el resto Para instalar docker ejecutaremos los siguientes comandos:
curl https://get.docker.com > dockerInstall.sh
chmod +x ./dockerInstall.sh
sudo ./dockerInstall.sh
Ahora compialremos las imagenes de docker del servicio interno y la aplicacion principal y las subiremos a dockerhub
Empezaremos por clonar el repositorio
git clone https://github.com/Alvar0P/PcPiezas
Despues nos dirijiremos al directorio ./PcPiezasIJ, construimos y subimos la imagen con los siguientes comandos
sudo docker build . -t <usuario>/pcpiezas-app:latest -f ./docker/buildImage-dockerfile
sudo docker push <usuario>/pcpiezas-app:latest -f
en nuestro caso
sudo docker build . -t alvaromz/pcpiezas-app:latest -f ./docker/buildImage-dockerfile
sudo docker push alvaromz/pcpiezas-app:latest -f
Despues nos dirijiremos al directorio ./PcPiezasMailService, construimos y subimos la imagen con los siguientes comandos
sudo docker build . -t <usuario>/pcpiezas-mail:latest -f ./docker/buildImage-dockerfile
sudo docker push <usuario>/pcpiezas-mail:latest -f
en nuestro caso
sudo docker build . -t alvaromz/pcpiezas-app:latest -f ./docker/buildImage-dockerfile
sudo docker push alvaromz/pcpiezas-app:latest -f
Ahora debemos transferir los archivos docker compose a los servidores correspondientes
- ./docker/mysql/docker-compose.yml -> mysql
- ./docker/haproxy-rabbitmq/ -> haproxy rabbitmq
- -/PcPiezasIJ/docker/docker-compose.yml -> PcPiezasApp
- -/PcPiezasIJ/docker/docker-compose.yml -> PcPiezasMail
Antes de transferir los archivos se recomienda editarlos para poner las IPs correspondientes de cada maquina, ademas de el login del correo en el caso de PcPiezasMailService y el archivo haproxy.cfg para indicar las IPs de los nodos
Para esto usaremos scp ejecutando los siguientes comandos en nuestra maquina local
scp -i sshFile -r ./docker/mysql/docker-compose.yml debian@<ip-addres>:/home/debian/
scp -i sshFile -r ./docker/haproxy-rabbitmq/ debian@<ip-addres>:/home/debian/
scp -i sshFile -r ./docker/PcPiezasIJ/docker/docker-compose.yml debian@<ip-addres>:/home/debian/
scp -i sshFile -r ./docker/PcPiezasMailService/docker/docker-compose.yml debian@<ip-addres>:/home/debian/
Por ultimo debemos ejecutar
sudo docker compose up
En todas las maquinas virtuales y ya tendriamos la aplicacion desplegada
Para iniciar varias instancias en el caso de la maquína PcPiezasApp
sudo docker compose up --scale pcpiezasapp=4














