Compartir a través de


Desplegar archivos en Azure App Service

En este artículo, se muestra cómo implementar el código como un paquete ZIP, WAR, JAR o EAR en Azure App Service. También se muestra cómo implementar archivos individuales en App Service, separados del paquete de aplicación.

Requisitos previos

Para completar los pasos en este artículo, cree una aplicación de App Service o use alguna aplicación que haya creado para otro tutorial.

Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.

Creación de un paquete ZIP de proyecto

Importante

Al crear el paquete ZIP para la implementación, no incluya el directorio raíz. Incluya solo los archivos y directorios en el directorio raíz. Si descarga un repositorio de GitHub como un archivo ZIP, no puede implementar ese archivo tal cual en App Service. GitHub agrega directorios anidados en el nivel superior, que no funciona con App Service.

En la ventana de un terminal local, navegue hasta el directorio raíz del proyecto de la aplicación.

Este directorio debe contener el archivo de entrada a la aplicación web, como index.html, index.phpy app.js. También puede contener archivos de administración de paquetes como project.json, composer.json, package.json, , bower.jsony requirements.txt.

Si no desea que App Service ejecute automatización de implementación, ejecute todas las tareas de compilación. Por ejemplo: npm, bower, gulp, composery pip. Asegúrese de que tiene todos los archivos que necesita para ejecutar la aplicación. Este paso es necesario si desea ejecutar su paquete directamente.

Cree un archivo ZIP con todo el contenido del proyecto. En el caso de los proyectos dotnet, agregue todo en el directorio de salida del comando dotnet publish, excepto el propio directorio de salida. Por ejemplo, escriba el siguiente comando en el terminal para crear un paquete ZIP que incluya el contenido del directorio actual:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

Implementación de un paquete ZIP

Al implementar un paquete ZIP, App Service desempaqueta su contenido en la ruta de acceso predeterminada de la aplicación: D:\home\site\wwwroot para Windows y /home/site/wwwroot para Linux.

Esta implementación del paquete ZIP usa el mismo servicio de Kudu que permite realizar implementaciones basadas en la integración continua. Kudu admite la siguientes funcionalidades para implementar el paquete ZIP:

  • Eliminación de archivos dejados de una implementación anterior
  • Opción para activar el proceso de compilación predeterminado, que incluye la restauración de paquetes
  • Configuración de la implementación, incluida la ejecución de los scripts de implementación
  • Registros de implementación
  • Límite de tamaño de paquete de 2048 megabytes

Nota:

Los archivos del paquete ZIP solo se copian si sus marcas de tiempo no coinciden con lo que ya está implementado.

Implementar con la interfaz de usuario de implementación ZIP en Kudu

  1. Abra la aplicación en Azure Portal y seleccione Herramientasavanzadas de > y, a continuación, seleccione Ir.
  2. En Kudu, seleccione Herramientas>Zip Push Deploy.
  3. Cargue el paquete ZIP que creó en Crear un paquete ZIP de proyecto. Arrástrelo al área del explorador de archivos en la página web.

Cuando la implementación está en curso, un icono de la esquina superior derecha muestra el porcentaje de progreso. La página también muestra mensajes para la operación debajo del área Explorador de archivos . Cuando finalice la implementación, el último mensaje debe indicar "Implementación correcta".

Este punto de conexión no funciona para App Service en Linux en este momento. Considere la posibilidad de usar en su lugar FTP o la API de implementación de ZIP.

Implementar sin la interfaz de usuario de implementación de ZIP en Kudu

Implemente un paquete ZIP en la aplicación web mediante el az webapp deploy comando . El comando de la CLI usa la API de publicación de Kudu para implementar los archivos y se puede personalizar completamente.

En el ejemplo siguiente, se inserta un paquete ZIP en el sitio. Especifique la ruta de acceso al paquete ZIP local para --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

Este comando reinicia la aplicación después de implementar el paquete ZIP.

Habilitación de la automatización de compilación para la implementación de ZIP

De manera predeterminada, el motor de implementación da por supuesto que un paquete ZIP está listo para ejecutarse tal cual y no ejecuta ninguna automatización de la compilación. Para habilitar la misma automatización de compilación que se usa en una implementación de Git, establezca la configuración de la SCM_DO_BUILD_DURING_DEPLOYMENT aplicación. Ejecute el comando siguiente en Azure Cloud Shell:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

Para obtener más información, consulte la documentación de Kudu.

Implementación de paquetes WAR, JAR o EAR

Puede implementar el paquete WAR, JAR o EAR en App Service para ejecutar la aplicación web de Java mediante la CLI de Azure, PowerShell o la API de publicación de Kudu.

El proceso de implementación que se muestra aquí coloca el paquete en el recurso compartido de contenido de la aplicación con la convención de nomenclatura correcta y la estructura de directorios. Para más información, consulte Referencia de la API de publicación de Kudu. Se recomienda esta estrategia. Si implementa paquetes WAR, JAR o EAR mediante FTP o Web Deploy en su lugar, es posible que vea errores desconocidos debido a errores en la nomenclatura o estructura.

Implemente un paquete WAR en Tomcat o JBoss EAP mediante el az webapp deploy comando . Especifique la ruta de acceso al paquete de Java local para --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

El comando de la CLI usa la API de publicación de Kudu para implementar el paquete y se puede personalizar completamente.

Desplegar archivos individuales

Implemente un script de inicio, una biblioteca y un archivo estático en la aplicación web mediante el az webapp deploy comando con el --type parámetro .

Si implementa un script de inicio de esta manera, App Service utiliza automáticamente el script para iniciar la aplicación.

El comando de la CLI usa la API de publicación de Kudu para implementar los archivos. El comando se puede personalizar completamente.

Implementación de un script de inicio

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

Implementación de un archivo de biblioteca

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

Implementación de un archivo estático

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

Implementación en aplicaciones protegidas en la red

En función de la configuración de red de la aplicación web, es posible que se bloquee el acceso directo a la aplicación desde el entorno de desarrollo. (Consulte Implementación en sitios protegidos por red e Implementación en sitios protegidos por red, parte 2). En lugar de insertar directamente el paquete o archivo en la aplicación web, puede publicarlo en un sistema de almacenamiento al que se pueda acceder desde la aplicación web y desencadenar la aplicación para extraer el ARCHIVO ZIP desde la ubicación de almacenamiento.

La dirección URL remota puede ser cualquier ubicación accesible públicamente, pero es mejor usar un contenedor de Blob Storage con una clave de firma de acceso compartido (SAS) para protegerlo.

Use el comando az webapp deploy como lo haría en las otras secciones, pero use --src-url en lugar de --src-path. En el ejemplo siguiente se usa el parámetro --src-url para especificar la dirección URL de un archivo ZIP hospedado en una cuenta de Azure Storage.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

Referencia de la API de publicación de Kudu

La API publish de Kudu le permite especificar los mismos parámetros del comando de la CLI como parámetros de consulta URL. Para autenticarse con la API de REST de Kudu, recomendamos usar la autenticación de token, pero también puede usar la autenticación básica con las credenciales de implementación de la aplicación.

En la tabla siguiente, se muestran los parámetros de consulta disponibles, sus valores permitidos y sus descripciones.

Clave Valores permitidos Descripción Obligatorio Tipo
type war|jar|ear|lib|startup|static|zip Este es el tipo del artefacto que se va a desplegar. Establece la ruta de acceso de destino predeterminada e informa a la aplicación web de cómo se debe controlar la implementación.

type=zip: implemente un paquete ZIP descomprimiendo el contenido en /home/site/wwwroot. El parámetro target-path es opcional.

type=war: implemente un paquete WAR. De manera predeterminada, el paquete WAR se implementa en /home/site/wwwroot/app.war. La ruta de acceso de destino se puede especificar con target-path.

type=jar: implemente un paquete JAR en /home/site/wwwroot/app.jar. Se omite el parámetro target-path.

type=ear: implemente un paquete EAR en /home/site/wwwroot/app.ear. Se omite el parámetro target-path.

type=lib: implemente un archivo de biblioteca JAR. De manera predeterminada, el archivo se implementa en /home/site/libs. La ruta de acceso de destino se puede especificar con target-path.

type=static: implemente un archivo estático, como un script. De manera predeterminada, el archivo se implementa en /home/site/wwwroot.

type=startup: implemente un script que App Service use automáticamente como script de inicio para la aplicación. De manera predeterminada, el script se implementa en D:\home\site\scripts\<name-of-source> para Windows y en home/site/wwwroot/startup.sh para Linux. La ruta de acceso de destino se puede especificar con target-path.
cadena
restart true|false De manera predeterminada, la API reinicia la aplicación después de la operación de implementación (restart=true). Al implementar varios artefactos, puede evitar reinicios en todas las implementaciones excepto en la final estableciendo restart=false. No Booleano
clean true|false Especifica si se debe limpiar (eliminar) la implementación de destino antes de implementar allí el artefacto. No Booleano
ignorestack true|false La API de publicación utiliza la variable de entorno WEBSITE_STACK para elegir valores predeterminados seguros en función del stack tecnológico de idiomas del sitio. Si se establece este parámetro en false, se deshabilitan los valores predeterminados específicos del lenguaje. No Booleano
target-path Una ruta de acceso absoluta Ruta de acceso absoluta en la que se implementará el artefacto. Por ejemplo, /home/site/deployments/tools/driver.jar o /home/site/scripts/helper.sh. No cadena

Para ver escenarios de implementación más avanzados, pruebe Implementación en Azure con Git. La implementación basada en Git en Azure permite el control de versiones, la restauración de paquetes, MSBuild y mucho más.