forked from val-lop20/Pagina-de-Asistencia-MAC
235 lines
6.6 KiB
Markdown
235 lines
6.6 KiB
Markdown
# 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:
|
|
|
|
1. **STATIC_ROOT no configurado**: Se agregó `STATIC_ROOT = BASE_DIR / 'staticfiles'` en `settings.py`
|
|
2. **MEDIA_ROOT no configurado**: Se agregó `MEDIA_ROOT = BASE_DIR / 'media'` en `settings.py`
|
|
3. **Variables de entorno faltantes**: Se agregaron todas las variables necesarias en `docker-compose.yml`
|
|
4. **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):
|
|
|
|
```powershell
|
|
docker-compose exec backend python manage.py createsuperuser
|
|
```
|
|
|
|
### En Linux/Mac:
|
|
|
|
```bash
|
|
bash create_superuser.sh
|
|
```
|
|
|
|
O manualmente:
|
|
|
|
```bash
|
|
docker-compose exec backend python manage.py createsuperuser
|
|
```
|
|
|
|
### Proceso Interactivo:
|
|
|
|
El comando te pedirá:
|
|
1. **Username**: Ingresa un nombre de usuario (ejemplo: admin)
|
|
2. **Email**: Ingresa un email (ejemplo: admin@example.com)
|
|
3. **Password**: Ingresa una contraseña segura
|
|
4. **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
|
|
|
|
1. Abre tu navegador web
|
|
2. Ve a: **http://localhost/admin/**
|
|
3. Ingresa tus credenciales (username y password que creaste)
|
|
4. ¡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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
docker-compose logs backend
|
|
docker-compose restart backend
|
|
```
|
|
|
|
### No puedo acceder a /admin/
|
|
|
|
1. Verifica que el backend esté corriendo:
|
|
```bash
|
|
docker-compose ps
|
|
```
|
|
|
|
2. Verifica los logs de nginx:
|
|
```bash
|
|
docker-compose logs nginx
|
|
```
|
|
|
|
3. Verifica que hayas creado un superusuario
|
|
|
|
### Error de permisos
|
|
|
|
Si hay errores de permisos en archivos:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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`:
|
|
|
|
```yaml
|
|
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
|
|
|
|
1. ✅ Contenedores corriendo
|
|
2. ⚠️ Crear superusuario (pendiente - ejecuta el comando arriba)
|
|
3. ⚠️ Acceder a http://localhost/admin/
|
|
4. ⚠️ Configurar usuarios y permisos
|
|
5. ⚠️ Probar las funcionalidades de la aplicación
|