Implementación de una aplicación en Azure App Service con un archivo ZIP o WARDeploy your app to Azure App Service with a ZIP or WAR file

En este artículo se muestra cómo usar un archivo ZIP o WAR para implementar una aplicación web en Azure App Service.This article shows you how to use a ZIP file or WAR file to deploy your web app to Azure App Service.

Esta implementación del archivo ZIP usa el mismo servicio de Kudu que permite realizar implementaciones basadas en integraciones continuas.This ZIP file deployment uses the same Kudu service that powers continuous integration-based deployments. Kudu admite la siguientes funcionalidades para implementar el archivo ZIP:Kudu supports the following functionality for ZIP file deployment:

  • La eliminación de archivos restantes de una implementación anterior.Deletion of files left over from a previous deployment.
  • La opción de activar el proceso de compilación predeterminado, en el que se incluye la restauración del paquete.Option to turn on the default build process, which includes package restore.
  • La personalización de la implementación, incluida la ejecución de scripts de implementación.Deployment customization, including running deployment scripts.
  • Registros de implementación.Deployment logs.

Para obtener más información, consulte la documentación de Kudu.For more information, see Kudu documentation.

La implementación del archivo WAR implementa su archivo WAR en Azure App Service para ejecutar la aplicación web de Java.The WAR file deployment deploys your WAR file to App Service to run your Java web app. Consulte Implementación de un archivo WAR.See Deploy WAR file.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

Requisitos previosPrerequisites

Para completar los pasos de este artículo:To complete the steps in this article:

Creación de un archivo ZIP de proyectoCreate a project ZIP file

Nota

Si descargó los archivos en un archivo ZIP, extráigalos primero.If you downloaded the files in a ZIP file, extract the files first. Por ejemplo, si descargó un archivo ZIP de GitHub, no puede implementar ese archivo tal cual.For example, if you downloaded a ZIP file from GitHub, you cannot deploy that file as-is. GitHub agrega directorios anidados adicionales que no funcionan con App Service.GitHub adds additional nested directories, which do not work with App Service.

En la ventana de un terminal local, navegue hasta el directorio raíz del proyecto de la aplicación.In a local terminal window, navigate to the root directory of your app project.

Este directorio debería contener el archivo de entrada para la aplicación web como, por ejemplo, index.html, index.php y app.js.This directory should contain the entry file to your web app, such as index.html, index.php, and app.js. También puede contener archivos de administración de paquetes como project.json, composer.json, package.json, bower.json y requirements.txt.It can also contain package management files like project.json, composer.json, package.json, bower.json, and requirements.txt.

Cree un archivo ZIP con todo el contenido del proyecto.Create a ZIP archive of everything in your project. El siguiente comando usa la herramienta predeterminada de su terminal:The following command uses the default tool in your terminal:

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

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

Implementación de un archivo ZIPDeploy ZIP file

En el explorador, vaya a https://<app_name>.scm.azurewebsites.net/ZipDeployUI.In the browser, navigate to https://<app_name>.scm.azurewebsites.net/ZipDeployUI.

Cargue el archivo ZIP que creó en Creación de un archivo ZIP de proyecto arrastrándolo al área del explorador de archivos en la página web.Upload the ZIP file you created in Create a project ZIP file by dragging it to the file explorer area on the web page.

Cuando la implementación está en curso, un icono en la esquina superior derecha muestra el progreso como un porcentaje.When deployment is in progress, an icon in the top right corner shows you the progress in percentage. La página también muestra mensajes detallados para la operación debajo del área del explorador.The page also shows verbose messages for the operation below the explorer area. Cuando se haya completado, el último mensaje de implementación debe indicar Deployment successful.When it is finished, the last deployment message should say Deployment successful.

Implementación del archivo ZIP con la CLI de AzureDeploy ZIP file with Azure CLI

Asegúrese de que su versión de la CLI de Azure sea la 2.0.21 o posterior.Make sure your Azure CLI version is 2.0.21 or later. Para ver qué versión tiene, ejecute el comando az --version en la ventana del terminal.To see which version you have, run az --version command in your terminal window.

Implemente el archivo ZIP cargado en la aplicación web mediante el comando az webapp deployment source config-zip.Deploy the uploaded ZIP file to your web app by using the az webapp deployment source config-zip command.

En el ejemplo siguiente se implementa el archivo ZIP que cargó.The following example deploys the ZIP file you uploaded. Cuando use una instalación local de la CLI de Azure, debe especificar la ruta de acceso al archivo ZIP local de --src.When using a local installation of Azure CLI, specify the path to your local ZIP file for --src.

az webapp deployment source config-zip --resource-group myResourceGroup --name <app_name> --src clouddrive/<filename>.zip

Este comando implementa los archivos y directorios del archivo ZIP en la carpeta predeterminada de la aplicación App Service (\home\site\wwwroot) y reinicia la aplicación.This command deploys the files and directories from the ZIP file to your default App Service application folder (\home\site\wwwroot) and restarts the app. Si se configura algún proceso de compilación personalizado adicional, se ejecuta también.If any additional custom build process is configured, it is run as well. Para obtener más información, consulte la documentación de Kudu.For more information, see Kudu documentation.

Implementación de un archivo ZIP con las API RESTDeploy ZIP file with REST APIs

Puede usar el servicio de implementación de las API de REST para implementar el archivo .zip en su aplicación en Azure.You can use the deployment service REST APIs to deploy the .zip file to your app in Azure. Para ello, envíe una solicitud POST a https://<app_name>.scm.azurewebsites.net/api/zipdeploy.To deploy, send a POST request to https://<app_name>.scm.azurewebsites.net/api/zipdeploy. La solicitud POST debe contener el archivo .zip en el cuerpo del mensaje.The POST request must contain the .zip file in the message body. Las credenciales de implementación de la aplicación se proporcionan en la solicitud mediante la autenticación de HTTP BASIC.The deployment credentials for your app are provided in the request by using HTTP BASIC authentication. Para obtener más información, consulte la referencia de implementación para la inserción del archivo .zip.For more information, see the .zip push deployment reference.

Para la autenticación básica HTTP, necesita las credenciales de implementación de App Service.For the HTTP BASIC authentication, you need your App Service deployment credentials. Para ver cómo establecer sus credenciales de implementación, consulte Establecimiento y restablecimiento de credenciales de nivel de usuario.To see how to set your deployment credentials, see Set and reset user-level credentials.

Con cURLWith cURL

En el ejemplo siguiente se usa la herramienta cURL para implementar un archivo .zip.The following example uses the cURL tool to deploy a .zip file. Reemplace los marcadores de posición <username>, <password>, <zip_file_path> y <app_name>.Replace the placeholders <username>, <password>, <zip_file_path>, and <app_name>. Cuando cURL se lo solicite, escriba la contraseña.When prompted by cURL, type in the password.

curl -X POST -u <deployment_user> --data-binary @"<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

Esta solicitud desencadena la implementación de inserción desde el archivo .zip cargado.This request triggers push deployment from the uploaded .zip file. Puede revisar las implementaciones actuales y pasadas mediante el punto de conexión https://<app_name>.scm.azurewebsites.net/api/deployments, tal como se muestra en el siguiente ejemplo de cURL.You can review the current and past deployments by using the https://<app_name>.scm.azurewebsites.net/api/deployments endpoint, as shown in the following cURL example. Una vez más, reemplace <app_name> por el nombre de la aplicación y <deployment_user> por el nombre de usuario de las credenciales de implementación.Again, replace <app_name> with the name of your app and <deployment_user> with the username of your deployment credentials.

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

Con PowerShellWith PowerShell

En el ejemplo siguiente se usa Invoke-RestMethod para enviar una solicitud que contiene el archivo .zip.The following example uses Invoke-RestMethod to send a request that contains the .zip file. Reemplace los marcadores de posición <deployment_user>, <deployment_password>, <zip_file_path> y <app_name>.Replace the placeholders <deployment_user>, <deployment_password>, <zip_file_path>, and <app_name>.

#PowerShell
$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<zip_file_path>"
$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"

Esta solicitud desencadena la implementación de inserción desde el archivo .zip cargado.This request triggers push deployment from the uploaded .zip file. Para revisar las implementaciones actuales y pasadas, ejecute los siguientes comandos.To review the current and past deployments, run the following commands. Una vez más, reemplace el marcador de posición <app_name>.Again, replace the <app_name> placeholder.

$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/deployments"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

Implementación de un archivo WARDeploy WAR file

Para implementar un archivo WAR en App Service, envíe una solicitud POST a https://<app_name>.scm.azurewebsites.net/api/wardeploy.To deploy a WAR file to App Service, send a POST request to https://<app_name>.scm.azurewebsites.net/api/wardeploy. La solicitud POST debe contener el archivo .war en el cuerpo del mensaje.The POST request must contain the .war file in the message body. Las credenciales de implementación de la aplicación se proporcionan en la solicitud mediante la autenticación de HTTP BASIC.The deployment credentials for your app are provided in the request by using HTTP BASIC authentication.

Para la autenticación básica HTTP, necesita las credenciales de implementación de App Service.For the HTTP BASIC authentication, you need your App Service deployment credentials. Para ver cómo establecer sus credenciales de implementación, consulte Establecimiento y restablecimiento de credenciales de nivel de usuario.To see how to set your deployment credentials, see Set and reset user-level credentials.

Con cURLWith cURL

En el ejemplo siguiente se usa la herramienta cURL para implementar un archivo .war.The following example uses the cURL tool to deploy a .war file. Reemplace los marcadores de posición <username>, <war_file_path> y <app_name>.Replace the placeholders <username>, <war_file_path>, and <app_name>. Cuando cURL se lo solicite, escriba la contraseña.When prompted by cURL, type in the password.

curl -X POST -u <username> --data-binary @"<war_file_path>" https://<app_name>.scm.azurewebsites.net/api/wardeploy

Con PowerShellWith PowerShell

En el ejemplo siguiente se usa Invoke-RestMethod para enviar una solicitud que contiene el archivo .war.The following example uses Invoke-RestMethod to send a request that contains the .war file. Reemplace los marcadores de posición <deployment_user>, <deployment_password>, <zip_file_path> y <app_name>.Replace the placeholders <deployment_user>, <deployment_password>, <zip_file_path>, and <app_name>.

$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<war_file_path>"
$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/wardeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST -InFile $filePath -ContentType "multipart/form-data"

¿Qué ocurre con mi aplicación durante la implementación?What happens to my app during deployment?

Todos los métodos de implementación admitidos oficialmente tienen algo en común: realizan cambios en los archivos de la carpeta /site/home/wwwroot de la aplicación.All the officially supported deployment methods have one thing in common: they make changes to the files in the /site/home/wwwroot folder of your app. Estos son los mismos archivos que se ejecutan en producción.These are the same files that are run in production. Por tanto, se puede producir un error durante la implementación debido a archivos bloqueados, o puede que la aplicación de producción tenga un comportamiento impredecible durante la implementación debido a que no todos los archivos se actualizan simultáneamente.Therefore, the deployment can fail due to locked files, or the app in production may have unpredictable behavior during deployment because not all the files are updated simultaneously. Hay varias formas de evitar estos problemas:There are a few different ways to avoid these issues:

Pasos siguientesNext steps

Para ver escenarios de implementación más avanzados, pruebe Implementación en Azure con Git.For more advanced deployment scenarios, try deploying to Azure with Git. La implementación basada en Git en Azure permite el control de versiones, la restauración de paquetes, MSBuild y mucho más.Git-based deployment to Azure enables version control, package restore, MSBuild, and more.

Más recursosMore resources