You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7.1 KiB

Instalacion - Direccion de Admision 2026

Requisitos previos

Herramienta Version minima Uso
Laragon - PHP + Composer (servidor local)
PHP 8.4+ Backend Laravel (Thread Safe, VS17 x64)
Composer 2.x Dependencias PHP
Node.js 18+ Frontend Vue
npm 9+ Dependencias JS
Docker 20+ Solo para MySQL
Docker Compose 2+ Solo para MySQL

Descargar PHP 8.4 para Laragon

Si Laragon no trae PHP 8.4, descargarlo manualmente:

  1. Descargar desde https://windows.php.net/download/ el archivo VS17 x64 Thread Safe (zip)
  2. Extraer en C:\laragon\bin\php\php-8.4.xx-Win32-vs17-x64\
  3. En Laragon: clic derecho > PHP > seleccionar la version 8.4
  4. Instalar Visual C++ 2022 si no lo tienes: https://aka.ms/vs/17/release/vc_redist.x64.exe
  5. Agregar al PATH: clic derecho en Laragon > Tools > Path > Add Laragon to Path

Paso 1: Clonar el repositorio

git clone <url-del-repo> direccion_de_admision_2026
cd direccion_de_admision_2026

Paso 2: Levantar MySQL con Docker

docker compose up -d

Esto levanta un contenedor MySQL 8.0 con:

  • Host: 127.0.0.1
  • Puerto: 3306
  • Usuario: root
  • Password: root
  • Base de datos: admision_2026

Verificar que funcione:

docker exec admision_2026_db mysql -uroot -proot -e "SELECT 'MySQL OK'"

Paso 3: Importar la base de datos

docker exec -i admision_2026_db mysql -uroot -proot admision_2026 < admision_2026_200.sql

Verificar tablas importadas:

docker exec admision_2026_db mysql -uroot -proot admision_2026 -e "SHOW TABLES;"

Debe mostrar 32 tablas (users, postulantes, areas, cursos, examenes, procesos_admision, etc.)


Paso 4: Configurar el Backend (Laravel)

cd back

4.1 Instalar dependencias

composer install

4.2 Configurar variables de entorno

copy .env.example .env

Editar back/.env y cambiar la password de la BD:

DB_PASSWORD=root

4.3 Generar clave de aplicacion

php artisan key:generate

4.4 Crear enlace de storage (para imagenes)

php artisan storage:link

Paso 5: Configurar el Frontend (Vue 3)

cd front

5.1 Instalar dependencias

npm install

5.2 Configurar variables de entorno

copy .env.example .env

El archivo debe contener:

VITE_API_URL=http://127.0.0.1:8000/api

Levantar el proyecto

Necesitas 3 cosas corriendo al mismo tiempo:

1. MySQL (Docker) - si no esta corriendo

docker compose up -d

2. Backend (Terminal 1)

cd back
php artisan serve

Estara disponible en: http://localhost:8000

3. Frontend (Terminal 2)

cd front
npm run dev

Estara disponible en: http://localhost:5173


Stack tecnologico

Capa Tecnologia
Backend Laravel 12 + PHP 8.4
Frontend Vue 3 + Vite 7 + Ant Design Vue + Pinia
Base de datos MySQL 8.0 (Docker)
Autenticacion Laravel Sanctum (Bearer tokens)
Permisos Spatie Laravel Permission
QR SimpleSoftwareIO QRCode

Notas importantes

  • No modificar composer.lock a menos que todos los del equipo acuerden (requiere PHP 8.4+)
  • El dump SQL (admision_2026_200.sql) ya incluye todas las tablas y datos necesarios, no se necesita php artisan migrate
  • Si el puerto 3306 esta ocupado (por otro MySQL local), detener ese servicio primero o cambiar el puerto en docker-compose.yml
  • Los archivos .env no se suben al repositorio (estan en .gitignore)

Deploy en Produccion (Docker)

Todo el proyecto se dockeriza para correr en un VPS con Linux. Se usan 4 contenedores: nginx (reverse proxy), backend (PHP-FPM), frontend (Vue SPA + nginx) y mysql.

Requisitos del servidor

Herramienta Version minima
Docker 20+
Docker Compose 2+
RAM 2 GB minimo
Disco 10 GB minimo

Paso 1: Clonar el repositorio en el servidor

git clone <url-del-repo> direccion_de_admision_2026
cd direccion_de_admision_2026

Paso 2: Configurar variables de entorno

cp .env.prod.example .env.prod

Editar .env.prod y configurar obligatoriamente:

APP_KEY=               # Generar con: php artisan key:generate --show (o tras el build)
APP_URL=https://tu-dominio.com
DB_PASSWORD=UNA_PASSWORD_SEGURA
SESSION_DOMAIN=tu-dominio.com
SANCTUM_STATEFUL_DOMAINS=tu-dominio.com
VITE_API_URL=/api

Configurar tambien el correo SMTP si se usa envio de emails.


Paso 3: Importar la base de datos (primera vez)

Construir y levantar solo MySQL primero:

docker compose -f docker-compose.prod.yml up -d mysql

Esperar a que MySQL este listo y luego importar el dump:

docker exec -i admision_prod_db mysql -uroot -pTU_PASSWORD admision_2026 < admision_2026_200.sql

Verificar:

docker exec admision_prod_db mysql -uroot -pTU_PASSWORD admision_2026 -e "SHOW TABLES;"

Paso 4: Construir y levantar todos los servicios

docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d

Verificar que los 4 contenedores esten corriendo:

docker compose -f docker-compose.prod.yml ps

Paso 5: Generar APP_KEY (primera vez)

docker exec admision_prod_backend php artisan key:generate --show

Copiar la clave generada al archivo .env.prod en APP_KEY= y reiniciar:

docker compose -f docker-compose.prod.yml restart backend

Paso 6: Crear enlace de storage

docker exec admision_prod_backend php artisan storage:link

Verificar el deploy

  • Abrir http://tu-dominio.com -> debe cargar el frontend Vue
  • Abrir http://tu-dominio.com/api/... -> debe responder la API Laravel

Comandos utiles

# Ver logs de todos los servicios
docker compose -f docker-compose.prod.yml logs -f

# Ver logs de un servicio especifico
docker compose -f docker-compose.prod.yml logs -f backend

# Reiniciar todo
docker compose -f docker-compose.prod.yml restart

# Detener todo
docker compose -f docker-compose.prod.yml down

# Reconstruir tras cambios de codigo
git pull
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d

# Ejecutar comandos artisan
docker exec admision_prod_backend php artisan migrate --force
docker exec admision_prod_backend php artisan cache:clear

Arquitectura de contenedores

                    Puerto 80
                       |
                    [nginx]  (reverse proxy)
                    /      \
         /api/*   /        \   /*
                 /          \
          [backend]      [frontend]
          PHP-FPM         nginx+SPA
          :9000            :80
              |
           [mysql]
            :3306

Notas de produccion

  • Los datos de MySQL se persisten en un volumen Docker (mysql_data)
  • El storage de Laravel se persiste en un volumen Docker (backend_storage)
  • Para HTTPS, configurar un reverse proxy externo (Nginx/Caddy en el host) o usar Cloudflare
  • El archivo .env.prod nunca debe subirse al repositorio