# 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 ```bash git clone direccion_de_admision_2026 cd direccion_de_admision_2026 ``` --- ## Paso 2: Levantar MySQL con Docker ```bash 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: ```bash docker exec admision_2026_db mysql -uroot -proot -e "SELECT 'MySQL OK'" ``` --- ## Paso 3: Importar la base de datos ```bash docker exec -i admision_2026_db mysql -uroot -proot admision_2026 < admision_2026_200.sql ``` Verificar tablas importadas: ```bash 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) ```bash cd back ``` ### 4.1 Instalar dependencias ```bash composer install ``` ### 4.2 Configurar variables de entorno ```bash copy .env.example .env ``` Editar `back/.env` y cambiar la password de la BD: ``` DB_PASSWORD=root ``` ### 4.3 Generar clave de aplicacion ```bash php artisan key:generate ``` ### 4.4 Crear enlace de storage (para imagenes) ```bash php artisan storage:link ``` --- ## Paso 5: Configurar el Frontend (Vue 3) ```bash cd front ``` ### 5.1 Instalar dependencias ```bash npm install ``` ### 5.2 Configurar variables de entorno ```bash 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 ```bash docker compose up -d ``` ### 2. Backend (Terminal 1) ```bash cd back php artisan serve ``` Estara disponible en: **http://localhost:8000** ### 3. Frontend (Terminal 2) ```bash 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 ```bash git clone direccion_de_admision_2026 cd direccion_de_admision_2026 ``` --- ## Paso 2: Configurar variables de entorno ```bash 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: ```bash docker compose -f docker-compose.prod.yml up -d mysql ``` Esperar a que MySQL este listo y luego importar el dump: ```bash docker exec -i admision_prod_db mysql -uroot -pTU_PASSWORD admision_2026 < admision_2026_200.sql ``` Verificar: ```bash docker exec admision_prod_db mysql -uroot -pTU_PASSWORD admision_2026 -e "SHOW TABLES;" ``` --- ## Paso 4: Construir y levantar todos los servicios ```bash docker compose -f docker-compose.prod.yml build docker compose -f docker-compose.prod.yml up -d ``` Verificar que los 4 contenedores esten corriendo: ```bash docker compose -f docker-compose.prod.yml ps ``` --- ## Paso 5: Generar APP_KEY (primera vez) ```bash docker exec admision_prod_backend php artisan key:generate --show ``` Copiar la clave generada al archivo `.env.prod` en `APP_KEY=` y reiniciar: ```bash docker compose -f docker-compose.prod.yml restart backend ``` --- ## Paso 6: Crear enlace de storage ```bash 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 ```bash # 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