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:
- Descargar desde https://windows.php.net/download/ el archivo VS17 x64 Thread Safe (zip)
- Extraer en
C:\laragon\bin\php\php-8.4.xx-Win32-vs17-x64\ - En Laragon: clic derecho > PHP > seleccionar la version 8.4
- Instalar Visual C++ 2022 si no lo tienes: https://aka.ms/vs/17/release/vc_redist.x64.exe
- 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.locka 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 necesitaphp 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
.envno 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.prodnunca debe subirse al repositorio