Saltar a contenido

Ejecutando el proyecto manualmente

Prerrequisitos

Antes de iniciar, necesita tener las siguientes herramientas instaladas en su máquina:

  • Java JDK (versión 17 o superior)
  • Maven
  • Node.js (versión 18 o superior)
  • Python (versión 3.12 o superior)
  • PostgreSQL

Nota

Siga la guía de instalación para su máquina incluida en esta documentación: Windows, Ubuntu o MacOS

Instalando PostgreSQL

Windows

Vía Chocolatey

  1. Abra la terminal como Administrador.
  2. Ejecute el siguiente comando:
    choco install postgresql
    

Vía MSI

  1. Acceda a la página de descargas de PostgreSQL.
  2. Descargue el instalador MSI.
  3. Siga las instrucciones del asistente para completar la instalación.

Linux

Vía APT (Debian/Ubuntu)

  1. Abra la terminal.
  2. Actualice el índice de paquetes:
    sudo apt update
    
  3. Instale PostgreSQL:
    sudo apt install postgresql postgresql-contrib
    

macOS

Vía Homebrew

  1. Abra la terminal.
  2. Instale PostgreSQL usando Homebrew:
    brew install postgresql
    
  3. Inicie el servicio de PostgreSQL:
    brew services start postgresql
    

Docker

  1. Abra la terminal bash (WSL en Windows).
  2. Ejecute el comando que inicia postgres:
    docker run -d --name pgfeedback -e POSTGRES_PASSWORD=root -e POSTGRES_DB=feedback -p 5432:5432 postgres 
    
  3. El comando solo se usa la primera vez que se ejecuta el contenedor. En las veces siguientes, use el comando:
    docker start pgfeedback
    

En caso de instalar PostgreSQL fuera del entorno de Docker, será necesario usar una herramienta de gestión de bases de datos como dbeaver para configurar la base de datos inicial del sistema feedback.

Ejecutando el Proyecto Manualmente

1. Configurar la Base de Datos

Asegúrese de que PostgreSQL esté en ejecución. Puede iniciar el servicio según las instrucciones anteriores, dependiendo de su sistema operativo.

2. Configurar Variables de Entorno

Defina las siguientes variables de entorno:

  • Linux y Mac OS

    export DB_HOST=localhost
    export DB_PORT=5432
    export DB_USER=postgres
    export DB_PASS=root
    export JWT_SECRET_KEY=4Z^XrroxR@dWxqf$!@#qGr4P
    export JWT_ISSUER=user-api
    export DATABASE_URL=postgresql://postgres:root@localhost:5432/feedback
    
  • Windows

    $env:DB_HOST="localhost"
    $env:DB_PORT="5432"
    $env:DB_USER="postgres"
    $env:DB_PASS="root"
    $env:JWT_SECRET_KEY="4Z^XrroxR@dWxqf$!@#qGr4P"
    $env:JWT_ISSUER="user-api"
    $env:DATABASE_URL="postgresql://postgres:root@localhost:5432/feedback"
    

3. Ejecutar los Microservicios de Java

Acceda al directorio de cada microservicio, construya e inicie los servicios:

Entrar a la carpeta de los proyectos de JAVA

cd java_backend

Construir los proyectos

mvn clean install -DskipTests
Ejecutar usermanagement
mvn -pl microservices/usermanagement spring-boot:run

Ejecutar feedbackrequest

mvn -pl microservices/feedbackrequest spring-boot:run

Ejecutar feedbackresponse

mvn -pl microservices/feedbackresponse spring-boot:run

4. Ejecutar el Microservicio de Python

Entrar a la carpeta del proyecto

# Ejecutar feedbackresponseview
cd python_backend/feedbackresponseview

Instale las dependencias

poetry install

Ejecutando el proyecto

poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

5. Ejecutar el API Gateway (Node.js)

cd node_backend/api_gateway
npm install
npm run start

6. Ejecutar Nginx

Ubuntu

  1. Prerrequisitos
    Asegúrese de que Nginx esté instalado en Ubuntu. Si no lo está, instálelo con:

    sudo apt update
    sudo apt install nginx
    
  2. Copiar el Archivo de Configuración
    Suponiendo que el archivo de configuración local está en una carpeta gateway y se llama nginx.conf, cópielo al directorio de configuración de Nginx:

    sudo cp gateway/nginx.conf /etc/nginx/sites-enabled/default
    
  3. Alterar la Configuración con sed
    Si es necesario reemplazar valores (por ejemplo, cambiar el host a localhost en alguna línea de configuración), use:

    sudo sed -Ei 's/(server\s+)[^:]+(:[0-9]+;)/\1localhost\2/g' /etc/nginx/sites-enabled/default
    
    Explicación del comando:
  4. sed -Ei activa el modo de edición in-place con expresión regular extendida.
  5. El comando busca una línea que contenga server seguido de algún espacio y luego cualquier valor hasta encontrar un número de puerto (por ejemplo, :80;) y reemplaza ese valor por localhost manteniendo el puerto.

  6. Reiniciar Nginx
    Después de las alteraciones, reinicie el servicio para que los cambios entren en vigor:

    sudo service nginx restart
    

macOS

En macOS, hay algunas consideraciones, principalmente el hecho de que sed puede tener diferencias (macOS usa BSD sed). Además, Nginx puede ser instalado vía Homebrew.

  1. Instalar Nginx
    Utilice Homebrew para instalar Nginx (si aún no está instalado):

    brew install nginx
    
    El archivo de configuración por defecto de Nginx en macOS (vía Homebrew) generalmente se encuentra en /usr/local/etc/nginx/nginx.conf. Si está usando un archivo de sitios, puede ser necesario adaptar la ruta, por ejemplo:
    /usr/local/etc/nginx/servers/default.conf
    
  2. Copiar el Archivo de Configuración
    Suponiendo que desea reemplazar el archivo de configuración de un sitio:

    sudo cp gateway/nginx.conf /usr/local/etc/nginx/servers/default.conf
    
  3. Alterar la Configuración con sed
    Debido a las diferencias de BSD sed, la sintaxis puede necesitar la bandera -E y el uso de una extensión de respaldo (por ejemplo, .bak). Un ejemplo:

    sudo sed -i.bak -E 's/(server\s+)[^:]+(:[0-9]+;)/\1localhost\2/g' /usr/local/etc/nginx/servers/default.conf
    
    Este comando crea una copia de seguridad del archivo original con la extensión .bak. Si lo prefiere, puede eliminar esta copia de seguridad posteriormente.
  4. Reiniciar Nginx
    Si Nginx fue instalado vía Homebrew, reinícielo con:

    brew services restart nginx
    

Windows

En Windows, hay dos enfoques que puede adoptar para ejecutar estas tareas:

Usando Chocolatey

Chocolatey es un gestor de paquetes para Windows. Puede utilizarlo para instalar Nginx y ejecutar scripts en PowerShell.

Pasos:

  1. Instalar Nginx vía Chocolatey
    Abra PowerShell con privilegios de administrador y ejecute:

    choco install nginx -y
    
    Generalmente, Nginx instalado vía Chocolatey quedará en:
    C:\tools\nginx\conf\nginx.conf o en una ruta similar. Verifique la documentación del paquete.
  2. Copiar el Archivo de Configuración
    Si su archivo local está, por ejemplo, en C:\proyectos\gateway\nginx.conf, ejecute:

    Copy-Item -Path "C:\proyectos\gateway\nginx.conf" -Destination "C:\tools\nginx\conf\nginx.conf" -Force
    
  3. Alterar la Configuración
    Para alterar el archivo usando una herramienta similar a sed en Windows, puede usar PowerShell con expresiones regulares. Por ejemplo:

    (Get-Content "C:\tools\nginx\conf\nginx.conf") -replace '(server\s+)[^:]+(:[0-9]+;)', '$1localhost$2' |
      Set-Content "C:\tools\nginx\conf\nginx.conf"
    
  4. Reiniciar Nginx
    Depende de cómo Nginx fue configurado para ser ejecutado. Si está corriendo como un servicio, reinícielo. Si no, ciérrelo y vuelva a iniciarlo usando el acceso directo o script del propio Nginx, por ejemplo:

    # Suponiendo que tiene un script para detener e iniciar:
    Stop-Process -Name nginx -Force
    Start-Process "C:\tools\nginx\nginx.exe"
    

WSL (Windows Subsystem for Linux)

Siga las instrucciones para Ubuntu.

7. Acceder a la Aplicación

Dependiendo de los puertos donde configuró los servicios, tendrá que acceder por los puertos elegidos. Tenga cuidado al ejecutar múltiples aplicaciones de Spring, ya que pueden terminar iniciándose en el mismo puerto. Altere las propiedades de la aplicación (application property) para cambiar el puerto deseado de cada una.