forked from val-lop20/Pagina-de-Asistencia-MAC
6.6 KiB
6.6 KiB
Acceso al Panel de Administración de Django
Estado Actual
Los contenedores Docker están corriendo correctamente:
- ✅ Frontend (Nginx): http://localhost
- ✅ Backend (Django): Disponible en http://localhost/api/
- ✅ Panel Admin: http://localhost/admin/
Problema Resuelto
Se han corregido los siguientes problemas:
- STATIC_ROOT no configurado: Se agregó
STATIC_ROOT = BASE_DIR / 'staticfiles'ensettings.py - MEDIA_ROOT no configurado: Se agregó
MEDIA_ROOT = BASE_DIR / 'media'ensettings.py - Variables de entorno faltantes: Se agregaron todas las variables necesarias en
docker-compose.yml - PostgreSQL removido: Se simplificó usando SQLite para facilitar el desarrollo
Crear Superusuario
Para acceder al panel de administración, primero necesitas crear un superusuario.
En Windows (PowerShell):
docker-compose exec backend python manage.py createsuperuser
En Linux/Mac:
bash create_superuser.sh
O manualmente:
docker-compose exec backend python manage.py createsuperuser
Proceso Interactivo:
El comando te pedirá:
- Username: Ingresa un nombre de usuario (ejemplo: admin)
- Email: Ingresa un email (ejemplo: admin@example.com)
- Password: Ingresa una contraseña segura
- Password (again): Confirma la contraseña
Ejemplo:
Username: admin
Email address: admin@example.com
Password: **********
Password (again): **********
Superuser created successfully.
Acceder al Panel de Administración
- Abre tu navegador web
- Ve a: http://localhost/admin/
- Ingresa tus credenciales (username y password que creaste)
- ¡Listo! Ya puedes administrar tu aplicación
URLs Disponibles
| Servicio | URL | Descripción |
|---|---|---|
| Frontend | http://localhost | Aplicación React |
| API Backend | http://localhost/api/ | API REST de Django |
| Admin Django | http://localhost/admin/ | Panel de administración |
| Archivos Estáticos | http://localhost/static/ | CSS, JS, imágenes de Django |
| Archivos Media | http://localhost/media/ | Archivos subidos por usuarios |
Verificar Estado de los Contenedores
# Ver estado de los contenedores
docker-compose ps
# Ver logs del backend
docker-compose logs backend
# Ver logs del nginx
docker-compose logs nginx
# Seguir logs en tiempo real
docker-compose logs -f
Comandos Útiles de Django
# Crear migraciones
docker-compose exec backend python manage.py makemigrations
# Aplicar migraciones
docker-compose exec backend python manage.py migrate
# Crear superusuario adicional
docker-compose exec backend python manage.py createsuperuser
# Acceder al shell de Django
docker-compose exec backend python manage.py shell
# Colectar archivos estáticos
docker-compose exec backend python manage.py collectstatic --noinput
# Ver rutas disponibles
docker-compose exec backend python manage.py show_urls
Solución de Problemas
Error 502 Bad Gateway
Si ves este error, verifica que el backend esté corriendo:
docker-compose logs backend
docker-compose restart backend
No puedo acceder a /admin/
-
Verifica que el backend esté corriendo:
docker-compose ps -
Verifica los logs de nginx:
docker-compose logs nginx -
Verifica que hayas creado un superusuario
Error de permisos
Si hay errores de permisos en archivos:
# En el backend
docker-compose exec backend chmod -R 755 /app/staticfiles
docker-compose exec backend chmod -R 755 /app/media
Reiniciar todo desde cero
Si algo sale mal, puedes reiniciar todo:
# Detener y eliminar todo (¡cuidado! elimina la base de datos)
docker-compose down -v
# Reconstruir
docker-compose build --no-cache
# Levantar
docker-compose up -d
# Aplicar migraciones
docker-compose exec backend python manage.py migrate
# Crear superusuario
docker-compose exec backend python manage.py createsuperuser
Configuración de Producción
Para producción, debes cambiar estas variables en docker-compose.yml:
environment:
- DEBUG=False # ⚠️ IMPORTANTE: Cambiar a False en producción
- SECRET_KEY=cambiar-por-una-clave-super-segura-y-aleatoria
- ALLOWED_HOSTS=tu-dominio.com,www.tu-dominio.com
- SECURE_SSL_REDIRECT=True
- SESSION_COOKIE_SECURE=True
- CSRF_COOKIE_SECURE=True
También deberías considerar usar PostgreSQL en lugar de SQLite para producción.
Arquitectura
┌─────────────────────────────────────────┐
│ Cliente (Navegador) │
└────────────────┬────────────────────────┘
│ HTTP
▼
┌─────────────────────────────────────────┐
│ Nginx (Puerto 80) │
│ ├─ / → Frontend React (build estático) │
│ ├─ /api/* → Backend Django (proxy) │
│ ├─ /admin/* → Django Admin (proxy) │
│ ├─ /static/* → Archivos estáticos │
│ └─ /media/* → Archivos media │
└────────────────┬────────────────────────┘
│
┌─────────┴─────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Frontend │ │ Backend │
│ (React) │ │ (Django) │
│ /usr/share/│ │ Puerto: │
│ nginx/html │ │ 8000 │
└─────────────┘ └──────┬──────┘
│
▼
┌─────────────┐
│ SQLite │
│ (db.sqlite3)│
└─────────────┘
Seguridad
- ✅ CORS configurado correctamente
- ✅ CSRF protection habilitado
- ✅ JWT Authentication para API
- ✅ Rate limiting disponible (deshabilitado en desarrollo)
- ⚠️ DEBUG=True (solo para desarrollo)
- ⚠️ Cambiar SECRET_KEY en producción
- ⚠️ Habilitar HTTPS en producción
Próximos Pasos
- ✅ Contenedores corriendo
- ⚠️ Crear superusuario (pendiente - ejecuta el comando arriba)
- ⚠️ Acceder a http://localhost/admin/
- ⚠️ Configurar usuarios y permisos
- ⚠️ Probar las funcionalidades de la aplicación