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
- Abra la terminal como Administrador.
- Ejecute el siguiente comando:
choco install postgresql
Vía MSI
- Acceda a la página de descargas de PostgreSQL.
- Descargue el instalador MSI.
- Siga las instrucciones del asistente para completar la instalación.
Linux
Vía APT (Debian/Ubuntu)
- Abra la terminal.
- Actualice el índice de paquetes:
sudo apt update - Instale PostgreSQL:
sudo apt install postgresql postgresql-contrib
macOS
Vía Homebrew
- Abra la terminal.
- Instale PostgreSQL usando Homebrew:
brew install postgresql - Inicie el servicio de PostgreSQL:
brew services start postgresql
Docker
- Abra la terminal bash (WSL en Windows).
- Ejecute el comando que inicia postgres:
docker run -d --name pgfeedback -e POSTGRES_PASSWORD=root -e POSTGRES_DB=feedback -p 5432:5432 postgres - 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
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
-
Prerrequisitos
Asegúrese de que Nginx esté instalado en Ubuntu. Si no lo está, instálelo con:
sudo apt update sudo apt install nginx -
Copiar el Archivo de Configuración
Suponiendo que el archivo de configuración local está en una carpetagatewayy se llamanginx.conf, cópielo al directorio de configuración de Nginx:sudo cp gateway/nginx.conf /etc/nginx/sites-enabled/default -
Alterar la Configuración con sed
Si es necesario reemplazar valores (por ejemplo, cambiar el host alocalhosten alguna línea de configuración), use:Explicación del comando:sudo sed -Ei 's/(server\s+)[^:]+(:[0-9]+;)/\1localhost\2/g' /etc/nginx/sites-enabled/default sed -Eiactiva el modo de edición in-place con expresión regular extendida.-
El comando busca una línea que contenga
serverseguido de algún espacio y luego cualquier valor hasta encontrar un número de puerto (por ejemplo,:80;) y reemplaza ese valor porlocalhostmanteniendo el puerto. -
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.
-
Instalar Nginx
Utilice Homebrew para instalar Nginx (si aún no está instalado):El archivo de configuración por defecto de Nginx en macOS (vía Homebrew) generalmente se encuentra enbrew install nginx/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 -
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 -
Alterar la Configuración con sed
Debido a las diferencias de BSD sed, la sintaxis puede necesitar la bandera-Ey el uso de una extensión de respaldo (por ejemplo,.bak). Un ejemplo:Este comando crea una copia de seguridad del archivo original con la extensiónsudo sed -i.bak -E 's/(server\s+)[^:]+(:[0-9]+;)/\1localhost\2/g' /usr/local/etc/nginx/servers/default.conf.bak. Si lo prefiere, puede eliminar esta copia de seguridad posteriormente. -
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:
-
Instalar Nginx vía Chocolatey
Abra PowerShell con privilegios de administrador y ejecute:Generalmente, Nginx instalado vía Chocolatey quedará en:choco install nginx -y
C:\tools\nginx\conf\nginx.confo en una ruta similar. Verifique la documentación del paquete. -
Copiar el Archivo de Configuración
Si su archivo local está, por ejemplo, enC:\proyectos\gateway\nginx.conf, ejecute:Copy-Item -Path "C:\proyectos\gateway\nginx.conf" -Destination "C:\tools\nginx\conf\nginx.conf" -Force -
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" -
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.