Origen: https://github.com/parzibyte/sistema-ventas-spring-boot
Destino debian 13
No usarse en producción. Es muy buen ejemplo de frontend bien manejado y de back end que hace que te te corran o multen a la empresa o las dos cosas. En el siguiente tema explico porqué.
El código no lo hice yo. Es de calidad basnte buena para 2019 con sus puntos de falla y me sirve paraexplicar cosas en cursos de spring boot o de qarqkus.
Normalmente se prestaa dudas si es Gardle o Maven. Aqui estan los dos archivos. Gemini usa el maven pero puedes adaptarlo a usar el build de gradle.
Creado por GEMINI.
Repito no lo escribí yo.
Solo asegúrate de que al copiar el script de Bash al servidor, las comillas no se hayan convertido en «comillas tipográficas» (« » o “ ”) por el editor del blog, ya que Linux solo reconoce las comillas simples ' o dobles " rectas. Si el usuario copia las inclinadas, el script fallará.
Guía de Despliegue: Sistema de Ventas Spring Boot
1. Requisitos Previos en el Servidor
Antes de clonar, asegúrate de tener instaladas las herramientas base:
-
Java JDK 8: (Fundamental, ya que el
pom.xmlapunta a esta versión). -
Gradle y Maven: Para gestionar las dependencias y compilar. Parece que el real es GRADLE build.
-
MariaDB/MySQL: Funcionando.
Bash
# En Debian/Ubuntu
sudo apt update
sudo apt install openjdk-8-jdk maven mariadb-server
2. Espejo (Mirror) o Clonación a Gitea
Para tener el código bajo tu control en tu instancia de Gitea:
-
Entra a tu panel de Gitea.
-
Haz clic en el botón «+» y selecciona «Nueva migración».
-
En «URL de migración», pega:
https://github.com/parzibyte/sistema-ventas-spring-boot.git. -
Asígnale el nombre
sistema-ventasy guárdalo.
3. Clonación desde Gitea al Directorio de Trabajo
Ahora, desde la terminal de tu servidor, descarga el código desde tu repositorio:
Bash
cd /var/www/ # O tu ruta preferida
git clone http://tu-ip-gitea:3000/tu-usuario/sistema-ventas.git
cd sistema-ventas
4. Configuración de la Base de Datos
Debes crear la base de datos manualmente. Entra a MySQL:
SQL
CREATE DATABASE ventas_springboot;
Importante: Como vimos que el código usa Float y MyISAM, no intentes forzar InnoDB en este punto para evitar conflictos con el hibernate_sequence que trae el proyecto.
5. Configuración de Acceso (application.properties)
Este archivo es el que vincula el Back-End con la DB. Como el repo original podría no traerlo configurado para tu entorno, créalo:
Bash
nano src/main/resources/application.properties
Pega y ajusta lo siguiente:
Properties
spring.datasource.url=jdbc:mysql://localhost:3306/ventas_springboot?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=tu_contraseña_aqui
# ddl-auto=update creará las tablas automáticamente al arrancar
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
6. Compilación y Empaquetado
Aquí es donde Maven leerá el pom.xml y descargará los cientos de archivos que mencionamos:
Bash
# Limpia versiones previas y empaqueta el JAR saltando los tests
mvn clean package -DskipTests
Si todo sale bien, verás un mensaje de BUILD SUCCESS y un archivo generado en target/gs-rest-service-0.1.0.jar.
7. Ejecución del Sistema
Para correrlo de forma simple:
Bash
java -jar target/gs-rest-service-0.1.0.jar
Para dejarlo corriendo en segundo plano (como un servicio):
Bash
nohup java -jar target/gs-rest-service-0.1.0.jar > log_ventas.txt 2>&1 &
Script que puedes hacer paso por paso.
Este script hace todo el trabajo sucio: baja los cambios, compila, detiene la versión anterior y levanta la nueva.
1. El Script de Automatización (actualizar_sistema.sh)
Crea este archivo en la raíz de donde clonaste el proyecto:
Bash
#!/bin/bash
# — CONFIGURACIÓN —
APP_NAME=»sistema-ventas-springboot»
JAR_PATH=»target/gs-rest-service-0.1.0.jar»
LOG_FILE=»ejecucion_sistema.log»
echo «— Iniciando actualización de $APP_NAME —»
# 1. Bajar cambios de tu Gitea
echo «[1/4] Sincronizando con Gitea…»
git pull origin master
# 2. Compilar con Maven
echo «[2/4] Compilando y empaquetando (Maven)…»
mvn clean package -DskipTests
if [ $? -ne 0 ]; then
echo «ERROR: La compilación falló. Revisa el código.»
exit 1
fi
# 3. Detener el proceso anterior si existe
echo «[3/4] Deteniendo instancia anterior…»
PID=$(pgrep -f $JAR_PATH)
if [ -z «$PID» ]; then
echo «No había ninguna instancia corriendo.»
else
kill -9 $PID
echo «Instancia (PID: $PID) detenida.»
fi
# 4. Levantar la nueva versión
echo «[4/4] Levantando nueva versión…»
nohup java -jar $JAR_PATH > $LOG_FILE 2>&1 &
echo «— Proceso terminado con éxito —»
echo «Puedes ver el log en tiempo real con: tail -f $LOG_FILE»
Bonus Gitea actions simplificado
Para que este script funcione en tu servidor, el usuario (o tú) debe seguir estos pasos finales:
Dar permisos de ejecución:
Bash
chmod +x actualizar_sistema.sh
Ejecutarlo cada vez que haya cambios:
Bash
./actualizar_sistema.sh
3. El «Toque Maestro»: Webhook de Gitea (Opcional)
Si quieres que sea 100% automático (que al darle push desde tu laptop a Gitea, el servidor se actualice solo):
En Gitea, ve a la configuración de tu repositorio: Settings > Webhooks.
Añade un Webhook de tipo Gitea.
En la URL del objetivo, pon la dirección de un pequeño script que ejecute ./actualizar_sistema.sh con todas las ordenes anteriores