D/ DJANGO CON CRITERIO

UNIDAD 8 · AZURE Y DJANGO: CONFIGURACIÓN Y DESPLIEGUE

Herramientas avanzadas: carga manual y ZIP alojado

Distingue una carga de archivos de una operación de despliegue y verifica su resultado.

Ilustración: El muelle de Kudu
El muelle de Kudu

CAPÍTULO 9 · El mismo proyecto llega a Azure

Subir el archivo y desplegarlo no siempre significan lo mismo

El autor describe una forma de trabajo cómoda: entrar a las herramientas avanzadas y cargar el ZIP desde la interfaz disponible en su entorno. Esa experiencia reduce pasos de conexión desde el computador. Para convertirla en una explicación útil, necesitamos distinguir qué hace exactamente la pantalla al recibir el archivo.

Una operación de despliegue puede preparar dependencias y dejar registros de su resultado; un explorador puede limitarse a copiar o extraer contenido. Por eso seguimos el estado de publicación, el build y el arranque. También reconocemos que las interfaces disponibles varían y que la UI clásica de ZIP no se puede prometer para cualquier App Service Linux.

Si el paquete está alojado, el servicio necesita acceso a sus bytes, no a una página de vista previa. Si la interfaz elegida no ofrece un despliegue compatible, el recorrido no debe detenerse. Conservamos una segunda vía manual que publica el mismo artefacto desde la terminal con un destino explícito.

Leer esta parte dentro del relato completo →

DEL RELATO A LA PRÁCTICA

Vamos a desarrollar esta decisión con su mapa, explicación, código y ejercicio.

MIRA · CONECTA · COMPRENDE

El muelle de Kudu

El muelle de Kudu1. deploy.zip: Paquete manual preparado; 2. Kudu: Usa una operación de despliegue; 3. Build Linux: Instala dependencias; 4. Validación: Revisa logs y resultado01deploy.zipPaquete manual preparado02KuduUsa una operación de despliegue03Build LinuxInstala dependencias04ValidaciónRevisa logs y resultado

Las flechas resumen el recorrido conceptual. Los controles y dependencias se detallan debajo.

Selecciona una pieza para destacar su responsabilidad.

Leer la explicación del mapa
  1. deploy.zip. Paquete manual preparado
  2. Kudu. Usa una operación de despliegue
  3. Build Linux. Instala dependencias
  4. Validación. Revisa logs y resultado
Descargar gráfico SVG ↓

¿Para qué sirve?

Arrastrar un ZIP, subirlo como archivo y pedir a Kudu que lo despliegue no son operaciones equivalentes.

El concepto, explicado

Abre App Service, Herramientas de desarrollo, Herramientas avanzadas y la URL SCM mostrada por el portal. Allí inspeccionas despliegues y logs. El contenedor de construcción y el proceso de la aplicación pueden tener entornos distintos.

La interfaz clásica Tools > Zip Push Deploy permite arrastrar paquetes donde está soportada. La documentación advierte que ese endpoint UI no funciona en App Service Linux; para nuestro recorrido Python/Linux usa CLI o la API de publicación. Si tu portal presenta otra pantalla, identifica la operación y revisa sus logs.

Con un ZIP alojado, el servicio obtiene el paquete desde la URL. Usa un blob privado y acceso temporal de lectura, o el mecanismo de acceso admitido por tu infraestructura. La URL debe ser alcanzable desde el despliegue y seguir vigente hasta terminar.

No pongas un SAS real en el material del curso, Git ni capturas. Subir site.zip al explorador de archivos sin invocar despliegue no instala dependencias ni selecciona el arranque.

El autor describe que en su entorno arrastra el ZIP desde Herramientas avanzadas y prefiere ese recorrido. Se conserva como experiencia de uso, pero la pantalla concreta no ha quedado identificada aquí. Comprueba que produzca un registro de despliegue exitoso, instalación de dependencias y arranque del proyecto; arrastrar a una carpeta puede limitarse a copiar o extraer archivos.

La documentación actual señala que la UI clásica Tools > Zip Push Deploy no funciona en Linux. Por eso el curso no promete ese botón para todos los App Service Python: muestra el recorrido donde esté disponible y conserva az webapp deploy como alternativa verificable. Una URL compartida de OneDrive puede devolver una página de vista previa en lugar del ZIP; el servicio necesita descargar directamente los bytes del paquete con acceso vigente.

Implementación paso a paso

  1. Entrar al App Service de destino y abrir Herramientas avanzadas; comprobar app y entorno.
  2. Identificar si la pantalla es una operación de despliegue de ZIP o únicamente un explorador de archivos.
  3. Si la interfaz admite desplegar el paquete, cargar deploy.zip y esperar su registro de resultado. En Python/Linux usar CLI/API cuando esa UI no esté soportada.
  4. Si usas una URL alojada, comprobar descarga directa, vigencia y permisos de lectura del paquete.
  5. Revisar build, instalación de dependencias y startup; después probar salud, estilos y una lectura de datos.

Ejemplo en SensorHub

# PowerShell + Azure CLI: URL leída sin dejarla literal en el script
$rg = "rg-sensorhub-dev"
$app = "app-sensorhub-dev"
$packageUrl = Read-Host "URL temporal del ZIP; no compartir esta sesión"
az webapp deploy -g $rg -n $app --src-url $packageUrl --type zip
if ($LASTEXITCODE -ne 0) { throw "Revisar despliegue en Kudu" }

# Alternativa independiente: Kudu publish con identidad de operador
# $scm = "https://URL-SCM-EXACTA-DEL-PORTAL"
# $token = az account get-access-token --query accessToken -o tsv
# $body = @{packageUri = $packageUrl} | ConvertTo-Json
# Invoke-RestMethod -Method Post -Uri "$scm/api/publish?type=zip" `
#   -Headers @{Authorization = "Bearer $token"} `
#   -ContentType "application/json" -Body $body
# Revisa respuesta/estado de despliegue; aceptar la petición no prueba salud.
Remove-Variable packageUrl

Cómo leer el ejemplo

  • --src-url obtiene un ZIP remoto; --src-path lee uno local.
  • El token del ejemplo Kudu corresponde al operador con permisos, no al client secret de la aplicación web.
  • Read-Host normal no oculta el texto: usa una sesión privada sin transcripción y evita logs de depuración con secretos.

Error habitual

No conviertas el contenedor de artefactos en público para evitar configurar permisos. Un fallo de descarga puede ser expiración, red o autorización.

05 / PRACTICAR

Tu turno

El ZIP se descarga pero Django no se importa. ¿Qué log examinas?

Ver solución orientativa

El log de construcción: comprueba requirements.txt en raíz, build habilitado y dependencias instaladas. Luego revisa el entorno de startup.

Cómo sabes que funciona

  • La operación aparece en el historial de despliegues.
  • El artefacto obtenido coincide con la entrega esperada y el sitio pasa las pruebas.

Para profundizar

Documentación oficial para comprobar configuración, permisos y condiciones vigentes. Revisión del tema: 11 de octubre de 2026.

CONTINUAR LA EXPERIENCIA

El siguiente paso del recorrido:

Publicar desde PowerShell con Azure CLI →Continuar en modo relato