Inicio rápido: implementación de una aplicación web de Python (Django o Flask) en Azure App Service
Artículo
En este inicio rápido, implementará una aplicación web de Python (Django o Flask) en Azure App Service. Azure App Service es un servicio de hospedaje web totalmente administrado, que admite aplicaciones de Python 3.7 y posteriores, hospedadas en un entorno de servidor Linux.
Para completar este inicio rápido necesita instalar:
Nota: Este artículo contiene instrucciones actuales sobre la implementación de una aplicación web de Python mediante Azure App Service. Python en Windows ya no se admite.
1 - Aplicación de ejemplo
Este inicio rápido se puede completar con Flask o con Django. Se proporciona una aplicación de ejemplo en cada marco para ayudarle a seguir este inicio rápido. Descargue o clone la aplicación de ejemplo en la estación de trabajo local.
Cree la aplicación web y otros recursos y, a continuación, implemente el código en Azure mediante az webapp up.
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
El parámetro --runtime especifica qué versión de Python está ejecutando la aplicación. Este ejemplo utiliza Python 3.9. Para enumerar todos los runtimes disponibles, use el comando az webapp list-runtimes --os linux --output table.
El parámetro --sku define el tamaño (CPU, memoria) y el costo del plan de App Service. En este ejemplo se usa el plan de servicio B1 (Básico), que incurrirá en un pequeño coste en la suscripción de Azure. Para obtener una lista completa de los planes de App Service, vea la página Precios de App Service.
La marca --logs configura el registro predeterminado necesario para habilitar la visualización de la secuencia de registro inmediatamente después de iniciar la aplicación web.
Opcionalmente, puede especificar un nombre con el argumento --name <app-name>. Si no proporciona un nombre, se generará automáticamente.
Opcionalmente, incluya el argumento --location <location-name>, donde <location_name> es una región de Azure disponible. Puede recuperar una lista de las regiones permitidas para su cuenta de Azure mediante la ejecución del comando az account list-locations.
El comando puede tardar varios minutos en completarse. Mientras el comando se ejecuta, proporciona mensajes sobre la creación del grupo de recursos, el plan de App Service y el recurso de la aplicación, la configuración del registro y la implementación del archivo ZIP. A continuación, se muestra el mensaje "Puede iniciar la aplicación en http://<nombre_de_la_aplicación>.azurewebsites.net", que es la dirección URL de la aplicación en Azure.
The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/cephas/myExpressApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at http://<app-name>.azurewebsites.net
{
"URL": "http://<app-name>.azurewebsites.net",
"appserviceplan": "<app-service-plan-name>",
"location": "centralus",
"name": "<app-name>",
"os": "<os-type>",
"resourcegroup": "<group-name>",
"runtime_version": "python|3.9",
"runtime_version_detected": "0.0",
"sku": "FREE",
"src_path": "<your-folder-location>"
}
Nota
El comando az webapp up realiza las acciones siguientes:
Almacene los parámetros localmente en el archivo .azure/config para que no tenga que especificarlos de nuevo al implementar posteriormente con az webapp up u otros comandos az webapp desde la carpeta del proyecto. Los valores almacenados en caché se usan automáticamente de forma predeterminada.
Busque el icono de Azure en la barra de herramientas de la izquierda. Selecciónelo para abrir la extensión de Azure Tools para VS Code.
Si no ve el icono de Azure Tools, asegúrese de que tiene instalada la extensión de Azure Tools para VS Code.
En la extensión Azure Tools para VS Code:
Localice la sección RECURSOS y seleccione su suscripción.
Seleccione + (Crear recurso...).
Elija la opción Crear aplicación web de App Service...
Escriba el nombre msdocs-python-webapp-quickstart-XYZ para esta aplicación web, donde XYZ pueden ser tres caracteres únicos cualquiera.
Una vez implementado, este nombre se usa como nombre de la aplicación con el formato https://<app-name>.azurewebsites.net.
Seleccione la pila en ejecución para la aplicación. En este ejemplo, seleccione Python 3.9.
Seleccione el plan de App Service (plan de tarifa) para esta aplicación web. El plan de App Service controla cuántos recursos (CPU/memoria) están disponibles para la aplicación y cuánto tiene que pagar.
En este ejemplo, seleccione el plan de tarifa Básico (B1). Este plan supone un pequeño cargo en la cuenta de Azure, pero se recomienda al ofrecer un mejor rendimiento que el nivel Gratis (F1).
Seleccione el botón Implementar en la notificación "Nueva aplicación web creada".
Seleccione la carpeta de inicio rápido en la que está trabajando para implementarla.
Responda Sí para actualizar la configuración de compilación y mejorar el rendimiento de la implementación.
Una vez completada la implementación, aparecerá una notificación en la esquina inferior derecha de VS Code. Puede usar esta notificación para ir a la aplicación web.
Inicie sesión en Azure Portal y siga estos pasos para crear los recursos de Azure App Service.
Instrucciones
Instantánea
En Azure Portal:
Escriba app services en la barra de búsqueda de la parte superior de Azure Portal.
Seleccione el elemento con la etiqueta App Services bajo el encabezado Servicios, en el menú que aparece bajo la barra de búsqueda.
En la página App Services, seleccione + Crear.
En la página Crear aplicación web, rellene el formulario así.
Grupo de recursos → seleccione Crear nuevo y use un nombre de msdocs-python-webapp-quickstart.
Nombre → msdocs-python-webapp-quickstart-XYZ, con XYZ pudiendo ser tres caracteres aleatorios. Este nombre debe ser único en Azure.
Pila en tiempo de ejecución → Python 3.9.
Región → Cualquier región de Azure cercana.
Plan de App Service → En SKU y tamaño, seleccione Cambiar tamaño para seleccionar otro plan de App Service.
El plan de App Service controla cuántos recursos (CPU/memoria) están disponibles para la aplicación y el costo de esos recursos.
En este ejemplo, seleccione Desarrollo y pruebas en la parte superior de la pantalla y luego el plan B1 (Básico). El plan B1 (Básico) supone un pequeño cargo en la cuenta de Azure, pero se recomienda al ofrecer un mejor rendimiento que el plan F1 (Gratis).
Cuando termine, seleccione Aplicar para aplicar los cambios.
En la página principal Crear aplicación web, seleccione Revisar y crear, en la parte inferior de la pantalla.
Esto le lleva a la página Revisar. Seleccione Crear para crear la instancia de App Service.
3 - Implementación del código de la aplicación en Azure
Azure App Service admite varios métodos para implementar el código de aplicación en Azure, lo que incluye compatibilidad con Acciones de GitHub y todas las herramientas de CI/CD principales. Este artículo se centra en cómo implementar el código desde la estación de trabajo local en Azure.
Dado que el paso anterior creó los recursos necesarios e implementó la aplicación en un solo paso, puede pasar a 4 - Navegación hasta la aplicación.
Dado que el comando az webapp up anterior creó los recursos necesarios e implementó la aplicación en un solo paso, puede pasar a 4 - Navegación hasta la aplicación.
Puede implementar el código de la aplicación desde un repositorio de Git local en Azure si configura un Git remoto en el repositorio local que apunte a Azure para insertar código. La dirección URL del repositorio remoto y las credenciales de Git necesarias para la configuración se pueden recuperar mediante Azure Portal o la CLI de Azure.
Vaya a la instancia de App Service de la aplicación.
Escriba el nombre de la instancia de App Service en el cuadro de búsqueda de la parte superior de la pantalla.
En el encabezado Recursos, seleccione App Service.
En la página de App Service:
Seleccione Centro de implementación en el menú del lado izquierdo de la pantalla.
Seleccione Git local en la lista desplegable que lleva la etiqueta Origen.
Seleccione Guardar.
Después de guardar, la página se actualiza y muestra la dirección del repositorio de Git remoto.
Copie el valor del URI de Git Clone, ya que este valor se va a usar para configurar un Git remoto en un paso posterior.
En la página Centro de implementación
Vaya a la pestaña Credenciales GIT o FTPS locales.
Busque el nombre de usuario y la contraseña en las credenciales de Ámbito de aplicación.
Mantenga esta pantalla abierta para poder copiar estas credenciales momentáneamente, al implementar el código en el repositorio remoto. Use solo la parte del nombre de usuario después del carácter \ que empieza por $, por ejemplo $msdocs-python-webapp-quickstart-123.
Al insertar código en el repositorio de Git remoto por primera vez, estas credenciales son necesarias para autenticarse en él.
A continuación, en el directorio raíz de la aplicación, configure un Git remoto que apunta a Azure mediante la dirección URL del Git del remoto de Azure, obtenida en un paso anterior.
git remote add azure <git-deployment-url>
Ahora puede insertar código desde el repositorio de Git local en Azure mediante el Git remoto que acaba de configurar. La rama de implementación predeterminada para App Service es master, pero muchos repositorios de Git se van de master a main. Puede especificar la asignación del nombre de la rama local al nombre de la rama remota en la inserción (como se muestra a continuación) o puede configurar los valores de la aplicación DEPLOYMENT_BRANCH.
git push azure main:master
La primera vez que inserte código en Azure Git le va a pedir las credenciales de implementación de Azure obtenidas en un paso anterior. Entonces, Git almacenará en caché estas credenciales, para que no tenga que volver a escribirlas en implementaciones posteriores.
En primer lugar, configure el origen de implementación para que la aplicación web sea un Git local, mediante el comando az webapp deployment source. Este comando mostrará la dirección URL del repositorio de Git remoto en el que va a insertar código. Realice una copia de este valor, ya que lo necesitará en un paso posterior.
# Change these values to the ones used to create the App Service.
RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp deployment source config-local-git \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--output tsv
# Change these values to the ones used to create the App Service.
$RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
$APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp deployment source config-local-git `
--name $APP_SERVICE_NAME `
--resource-group $RESOURCE_GROUP_NAME `
--output tsv
Recupere las credenciales de implementación de la aplicación. Serán necesarios para que Git se autentique en Azure al insertar código en Azure en un paso posterior.
A continuación, en el directorio raíz de la aplicación, configure un Git remoto que apunta a Azure mediante la dirección URL del Git del remoto de Azure, obtenida en un paso anterior.
git remote add azure <git-deployment-url>
Ahora puede insertar código desde el repositorio de Git local en Azure mediante el Git remoto que acaba de configurar. La rama de implementación predeterminada para App Service es master, pero muchos repositorios de Git se van de master a main. Puede especificar la asignación del nombre de la rama local al nombre de la rama remota en la inserción (como se muestra a continuación) o puede configurar los valores de la aplicación DEPLOYMENT_BRANCH.
git push azure main:master
La primera vez que inserte código en Azure Git le va a pedir las credenciales de implementación de Azure obtenidas en un paso anterior. Entonces, Git almacenará en caché estas credenciales, para que no tenga que volver a escribirlas en implementaciones posteriores.
Las aplicaciones se pueden implementar en Azure mediante la creación de un archivo ZIP del código de la aplicación y su carga en Azure. Los archivos ZIP se pueden cargar en Azure mediante la CLI de Azure o con un cliente HTTP como cURL.
Habilitación de la automatización de compilaciones
Al implementar un archivo ZIP del código Python, debe establecer una marca para habilitar la automatización de compilación de Azure. La automatización de compilación instalará los requisitos necesarios y empaquetará la aplicación para que se ejecute en Azure.
La automatización de compilaciones en Azure se habilita estableciendo la configuración de la aplicación SCM_DO_BUILD_DURING_DEPLOYMENT en Azure Portal o en la CLI de Azure.
# Change these values to the ones used to create the App Service.
RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP_NAME \
--name $APP_SERVICE_NAME \
--settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
# Change these values to the ones used to create the App Service.
$resourceGroupName='msdocs-python-webapp-quickstart'
$appServiceName='msdocs-python-webapp-quickstart-123'
az webapp config appsettings set `
--resource-group $resourceGroupName `
--name $appServiceName `
--settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
Creación de un archivo ZIP de la aplicación
Después, cree un archivo ZIP de la aplicación. Solo necesita incluir componentes de la propia aplicación. No es necesario incluir ningún archivo o directorio que comience con un punto (.), como .venv, .gitignore, .github, o .vscode.
# Change these values to the ones used to create the App Service.
RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp deploy \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--src-path <zip-file-path>
# Change these values to the ones used to create the App Service.
$resourceGroupName='msdocs-python-webapp-quickstart'
$appServiceName='msdocs-python-webapp-quickstart-123'
az webapp deploy `
--name $appServiceName `
--resource-group $resourceGroupName `
--src-path <zip-file-path>
Para usar Postman para cargar el archivo ZIP en Azure, necesita el nombre de usuario y la contraseña de implementación de la instancia de App Service. Estas credenciales se pueden obtener en Azure Portal.
En la página de la aplicación web, seleccione Centro de implementación en el menú del lado izquierdo de la página.
Seleccione la pestaña Credenciales FTPS.
El Nombre de usuario y la Contraseña se muestran en el encabezado Ámbito de aplicación. En las implementaciones de archivos ZIP, use solo la parte del nombre de usuario después del carácter \ que empieza por $, por ejemplo $msdocs-python-webapp-quickstart-123. Estas credenciales serán necesarias al cargar el archivo ZIP con Postman.
En Postman, cargue el archivo con los pasos siguientes.
Instrucciones
Instantánea
Haga clic en el icono de signo más (+) para crear una nueva solicitud.
Seleccione POST como tipo de solicitud.
Escriba la dirección URL https://\<app-name\>.scm.azurewebsites.net/api/zipdeploy, donde <app-name> es el nombre de la aplicación web. Esta dirección URL es el punto de conexión que se usa para implementar un archivo ZIP en el servicio de Azure.
En la pestaña Autorización:
Establezca el Tipo en Básico.
Escriba el nombre de usuario y la contraseña de implementación obtenidos en Azure Portal arriba. Asegúrese de usar solo la parte del nombre de usuario después del carácter \ que empieza por $.
En la pestaña Cuerpo:
Seleccione binario como tipo de contenido.
Use el botón Seleccionar archivo para seleccionar el archivo ZIP.
El nombre de archivo del archivo que se va a cargar se muestra en la sección Cuerpo.
Seleccione el botón Enviar para cargar el archivo ZIP en Azure.
Según el ancho de banda de red, los archivos suelen tardar entre 10 y 30 segundos en cargarse en Azure.
Para usar cURL para cargar el archivo ZIP en Azure, necesita el nombre de usuario y la contraseña de implementación de la instancia de App Service. Estas credenciales se pueden obtener en Azure Portal.
En la página de la aplicación web, seleccione Centro de implementación en el menú del lado izquierdo de la página.
Seleccione la pestaña Credenciales FTPS.
El Nombre de usuario y la Contraseña se muestran en el encabezado Ámbito de aplicación. En las implementaciones de archivos ZIP, use solo la parte del nombre de usuario después del carácter \ que empieza por $, por ejemplo $msdocs-python-webapp-quickstart-123. Estas credenciales serán necesarias en el comando cURL.
Ejecute el siguiente comando curl para cargar el archivo ZIP en Azure e implementar la aplicación. El nombre de usuario es el nombre de usuario de implementación obtenido en el paso 3. Cuando se ejecute este comando, se le solicitará la contraseña de implementación.
En PowerShell, asegúrese de incluir el nombre de usuario entre comillas simples para que PowerShell no intente interpretarlo como una variable de PowerShell.
Vaya a la aplicación implementada mediante el explorador web en la dirección URL http://<app-name>.azurewebsites.net. Si ve un página de aplicación predeterminada, espere un momento y actualice el explorador.
El código de ejemplo de Python se ejecuta en un contenedor de Linux en App Service con una imagen integrada.
¡Enhorabuena! Ha implementado su primera aplicación Python en App Service en Linux.
Azure App Service captura toda la salida de mensajes hacia la consola, para ayudarle a diagnosticar problemas de la aplicación. Las aplicaciones de ejemplo incluyen instrucciones de print() para demostrar esta funcionalidad.
app = Flask(__name__)
@app.route('/')
def index():
print('Request for index page received')
return render_template('index.html')
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
@app.route('/hello', methods=['POST'])
def hello():
name = request.form.get('name')
def index(request):
print('Request for index page received')
return render(request, 'hello_azure/index.html')
@csrf_exempt
def hello(request):
if request.method == 'POST':
name = request.POST.get('name')
if name is None or name == '':
print("Request for hello page received with no name or blank name -- redirecting")
return redirect('index')
else:
print("Request for hello page received with name=%s" % name)
context = {'name': name }
return render(request, 'hello_azure/hello.html', context)
else:
El contenido de los registros de diagnóstico de App Service se puede revisar en Azure Portal, VS Code o mediante la CLI de Azure.
Primero, debe habilitar la transmisión de registros en Azure App Service. Vaya a la página de la instancia de App Service en Azure Portal.
Seleccione los registros de App Service en el encabezado Supervisión del menú del lado izquierdo de la página.
Cambie la propiedad Application Logging de Desactivada a Sistema de archivos.
Escriba un período de retención de 30 días para los registros.
Haga clic en Guardar para guardar los cambios.
Seleccione el elemento Transmisión de registro en el menú de la sección Supervisión. Actualice la página principal de la aplicación o pruebe otras solicitudes para generar algunos mensajes de registro.
Verá los mensajes de registro generados por la aplicación y los generados por el servicio en la salida.
Instrucciones
Instantánea
Primero, debe habilitar la transmisión de registros en Azure App Service.
En la sección App Service de la extensión Azure Tools para VS Code, haga clic con el botón derecho en la instancia de App Service y seleccione Iniciar registros de streaming en el menú.
Los registros de consola aparecen en la ventana Salida de VS Code. Actualice la página principal de la aplicación o pruebe otras solicitudes para generar algunos mensajes de registro.
Verá los mensajes de registro generados por la aplicación así como los generados por el servicio en la salida.
Primero debe configurar Azure App Service para generar registros en el sistema de archivos de App Service mediante el comando az webapp log config.
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
az webapp log tail `
--name $APP_SERVICE_NAME `
--resource-group $RESOURCE_GROUP_NAME
Actualice la página principal de la aplicación o pruebe otras solicitudes para generar algunos mensajes de registro. La salida debe tener una apariencia similar a la siguiente.
Cuanda haya terminado con la aplicación de muestra, puede quitar todos los recursos de la aplicación de Azure. No incurrirá en cargos adicionales y mantendrá la suscripción de Azure sin riesgo alguno. Al quitar el grupo de recursos también se quitan todos los recursos que haya dentro; es la manera más rápida de quitar todos los recursos de Azure de la aplicación.
Siga estos pasos si ha iniciado sesión en Azure Portal para eliminar un grupo de recursos.
Instrucciones
Instantánea
En Azure Portal, vaya al grupo de recursos.
Escriba el nombre del grupo de recursos en la barra de búsqueda de la parte superior de la página.
En el encabezado Grupos de recursos, seleccione el nombre del grupo de recursos para ir a él.
Seleccione el botón Eliminar grupo de recursos en la parte superior de la página.
En el cuadro de diálogo de confirmación, escriba el nombre del grupo de recursos para confirmar su eliminación. Seleccione Eliminar para eliminar el grupo de recursos.
Instrucciones
Instantánea
En la extensión Azure Tools para VS Code:
Busque la sección RECURSOS.
Seleccione el icono Agrupar por y Agrupar por grupo de recursos.
En la lista de recursos, busque el grupo de recursos que desea eliminar, haga clic con el botón derecho en él y seleccione Eliminar grupo de recursos...; se le pedirá que confirme la eliminación con el nombre del grupo de recursos por escrito en el cuadro de diálogo.
Elimine el grupo de recursos con el comando az group delete.
az group delete \
--name msdocs-python-webapp-quickstart \
--no-wait
El argumento --no-wait permite la devolución del comando antes de que se complete la operación.