Creación de una aplicación web PHP en Azure App Service

Advertencia

PHP en Windows alcanzó el final del soporte técnico en noviembre de 2022. PHP solo se admite para App Service en Linux. Este artículo sirve solo como referencia.

Azure App Service proporciona un servicio de hospedaje web muy escalable y con aplicación de revisiones de un modo automático. En este tutorial de inicio rápido se explica cómo se implementa una aplicación PHP en Azure App Service en Windows.

Se crea la aplicación web con la CLI de Azure en Cloud Shell y se usa Git para implementar el código PHP de ejemplo en la aplicación web.

Aplicación de ejemplo que se ejecuta en Azure

Estos pasos se pueden realizar en este caso con una máquina Mac, Windows o Linux. Una vez instalados los requisitos previos, tardará aproximadamente cinco minutos en completar los pasos.

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

Requisitos previos

Para completar esta guía de inicio rápido:

Descarga local del código

  1. Ejecute los siguientes comandos en una ventana de terminal. Se clonará la aplicación de ejemplo en el equipo local y se desplazará al directorio que contiene el código de ejemplo.

    git clone https://github.com/Azure-Samples/php-docs-hello-world
    cd php-docs-hello-world
    
  2. Asegúrese de que la rama predeterminada sea main.

    git branch -m main
    

    Sugerencia

    App Service no exige el cambio de nombre de rama. Sin embargo, dado que muchos repositorios cambian su rama predeterminada a main, en este inicio rápido también se muestra cómo implementar un repositorio desde main.

Ejecución de la aplicación de forma local

  1. Ejecute la aplicación localmente para ver cómo debería ser si se implementara en Azure. Abra una ventana de terminal y use el comando php para iniciar el servidor web de PHP integrado.

    php -S localhost:8080
    
  2. Abra un explorador web y vaya a la aplicación de ejemplo en http://localhost:8080.

    Verá el mensaje Hola mundo de la aplicación de ejemplo que aparece en la página.

    Aplicación de ejemplo que se ejecuta localmente

  3. En la ventana de terminal, presione Ctrl + C para salir del servidor web.

Azure Cloud Shell

Azure hospeda Azure Cloud Shell, un entorno de shell interactivo que puede usar a través del explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.

Para iniciar Azure Cloud Shell:

Opción Ejemplo o vínculo
Seleccione Pruébelo en la esquina superior derecha de un bloque de código o de comandos. Al seleccionar Probar no se copia automáticamente el código ni el comando en Cloud Shell. Captura de pantalla en la que se muestra un ejemplo de la opción Pruébelo para Azure Cloud Shell.
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. Botón para iniciar Azure Cloud Shell.
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. Captura de pantalla que muestra el botón Cloud Shell en Azure Portal

Para usar Azure Cloud Shell:

  1. Inicie Cloud Shell.

  2. Seleccione el botón Copiar en un bloque de código (o bloque de comandos) para copiar el código o comando.

  3. Pegue el código o comando en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.

  4. Seleccione Enter para ejecutar el código o comando.

Configuración de un usuario de implementación

Se puede implementar FTP y Git local en una aplicación web de Azure mediante un usuario de implementación. Una vez configurado este usuario de implementación, podrá usarlo en todas las implementaciones de Azure. El nombre de usuario y la contraseña en el nivel de cuenta son diferentes de las credenciales de suscripción de Azure.

Para configurar el usuario de implementación, ejecute el comando az webapp deployment user set en Azure Cloud Shell. Reemplace <username> y <password> por un nombre de usuario y contraseña de implementación.

  • El nombre de usuario debe ser único dentro de Azure y no debe contener el símbolo "\@" para las inserciones de Git local.
  • La contraseña debe tener al menos ocho caracteres y dos de los tres elementos siguientes: letras, números y símbolos.
az webapp deployment user set --user-name <username> --password <password>

La salida JSON muestra la contraseña como null. Si se produce un error 'Conflict'. Details: 409, cambie el nombre de usuario. Si se produce un error 'Bad Request'. Details: 400, use una contraseña más segura.

Anote el nombre de usuario y la contraseña que se usarán para implementar las aplicaciones web.

Crear un grupo de recursos

Un grupo de recursos es un contenedor lógico en el que los recursos de Azure, como aplicaciones web, bases de datos y cuentas de almacenamiento, se implementen y administren. Por ejemplo, más adelante puede elegir eliminar todo el grupo de recursos en un solo paso.

En Cloud Shell, cree un grupo de recursos con el comando az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación Oeste de Europa. Para ver todas las ubicaciones que se admiten en App Service en el nivel Gratis, ejecute el comando az appservice list-locations --sku FREE.

az group create --name myResourceGroup --location "West Europe"

Generalmente se crean el grupo de recursos y los recursos en una región cercana.

Cuando finaliza el comando, una salida de JSON muestra las propiedades del grupo de recursos.

Crear un plan de Azure App Service

En Cloud Shell, cree un plan de App Service con el comando az appservice plan create.

En el siguiente ejemplo se crea un plan de App Service denominado myAppServicePlan con el plan de tarifa Gratis:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux

Cuando se crea el plan de App Service, la CLI de Azure muestra información similar al ejemplo siguiente:

{ 
  "freeOfferExpirationTime": null,
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Creación de una aplicación web

  1. En Cloud Shell, cree una aplicación web en el plan de App Service myAppServicePlan con el comando az webapp create.

    En el siguiente ejemplo, reemplace <app-name> por un nombre único global de aplicación (los caracteres válidos son a-z, 0-9 y -). El tiempo de ejecución se establece en PHP|7.4. Para ver todos los entornos en tiempo de ejecución admitidos, ejecute az webapp list-runtimes.

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'PHP|8.1' --deployment-local-git
    

    Cuando se haya creado la aplicación web, la CLI de Azure mostrará información similar a la del ejemplo siguiente:

     Local git is configured with url of <URL>
     {
       "availabilityState": "Normal",
       "clientAffinityEnabled": true,
       "clientCertEnabled": false,
       "cloningInfo": null,
       "containerSize": 0,
       "dailyMemoryTimeQuota": 0,
       "defaultHostName": "<app-name>.azurewebsites.net",
       "enabled": true,
       < JSON data removed for brevity. >
     }
     

    Ha creado una nueva aplicación web vacía, con la implementación de Git habilitada.

    Nota:

    La dirección URL del control remoto de Git se muestra en la deploymentLocalGitUrl propiedad . Guarde esta dirección URL, ya que la necesitará más adelante.

  2. Vaya a la aplicación web recién creada.

    Este es el aspecto que debería tener su nueva aplicación web:

    Página de la aplicación web vacía

Inserción en Azure desde Git

  1. Dado que va a implementar la rama main, debe establecer la rama de implementación predeterminada para su aplicación de App Service en main. (Consulte Cambio de rama de implementación). En Cloud Shell, establezca la configuración de la DEPLOYMENT_BRANCH aplicación mediante el az webapp config appsettings set comando .

    az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
    
  2. En la ventana del terminal local, agregue una instancia remota de Azure al repositorio de Git local. Reemplace <deploymentLocalGitUrl-from-create-step>> por la dirección URL del repositorio de Git remoto que guardó en Creación de una aplicación web.

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. Realice la insercion en la instancia remota de Azure para implementar la aplicación con el comando siguiente. Cuando el Administrador de credenciales de Git le solicite las credenciales, asegúrese de que especifica las que creó en Configuración de la implementación de Git local, no las que se usan para iniciar sesión en Azure Portal.

    git push azure main
    

    Este comando puede tardar unos minutos en ejecutarse. Durante la ejecución, muestra información similar a la del ejemplo siguiente:

  Counting objects: 2, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (2/2), done.
  Writing objects: 100% (2/2), 352 bytes | 0 bytes/s, done.
  Total 2 (delta 1), reused 0 (delta 0)
  remote: Updating branch 'main'.
  remote: Updating submodules.
  remote: Preparing deployment for commit id '25f18051e9'.
  remote: Generating deployment script.
  remote: Running deployment command...
  remote: Handling Basic Web Site deployment.
  remote: Kudu sync from: '/home/site/repository' to: '/home/site/wwwroot'
  remote: Copying file: '.gitignore'
  remote: Copying file: 'LICENSE'
  remote: Copying file: 'README.md'
  remote: Copying file: 'index.php'
  remote: Ignoring: .git
  remote: Finished successfully.
  remote: Running post deployment command(s)...
  remote: Deployment successful.
  To <URL>
      cc39b1e..25f1805  main -> main
  

Navegación hasta la aplicación

Vaya a la aplicación implementada mediante el explorador web.

El código de ejemplo de PHP se está ejecutando en una aplicación web de Azure App Service.

Aplicación de ejemplo que se ejecuta en Azure

Felicidades. Ha implementado la primera aplicación PHP en App Service.

Actualización local y nueva implementación del código

  1. Con un editor de texto local, abra el archivo index.php dentro de la aplicación PHP y realice un pequeño cambio en el texto dentro de la cadena situada junto a echo:

    echo "Hello Azure!";
    
  2. En la ventana del terminal local, confirme los cambios en Git e inserte los cambios de código en Azure.

    git commit -am "updated output"
    git push azure main
    
  3. Una vez que la implementación haya finalizado, vuelva a la ventana del explorador que abrió en el paso Navegación hasta la aplicación y actualice la página.

    Aplicación de ejemplo actualizada que se ejecuta en Azure

Administración de la nueva aplicación de Azure

  1. Vaya a Azure Portal para administrar la aplicación web que ha creado. Busque y seleccione App Services.

    Buscar App Services, Azure Portal, crear una aplicación web de PHP

  2. Seleccione el nombre de la aplicación de Azure.

    Navegación en el portal a la aplicación de Azure

    Se mostrará la página de información general de la aplicación web. En ella, puede realizar tareas de administración básicas como examinar, detener, reiniciar y eliminar.

    Página de App Service en Azure Portal

    En el menú de la aplicación web se proporcionan distintas opciones para configurar la aplicación.

Limpieza de recursos

En los pasos anteriores, creó recursos de Azure en un grupo de recursos. Si prevé que no necesitará estos recursos en el futuro, elimine el grupo de recursos ejecutando el siguiente comando en Cloud Shell:

az group delete --name myResourceGroup

Este comando puede tardar un par de minutos en ejecutarse.

Azure App Service proporciona un servicio de autocorrección altamente escalable para el alojamiento web. En esta guía de inicio rápido se explica cómo se implementa una aplicación de PHP en Azure App Service en Linux.

Captura de pantalla de la aplicación de ejemplo que se ejecuta en Azure.

Estos pasos se pueden realizar en este caso con una máquina Mac, Windows o Linux. Una vez instalados los requisitos previos, se tarda unos diez minutos en completar los pasos.

Requisitos previos

Descargar el repositorio de ejemplo

En los pasos siguientes, se crea la aplicación web mediante la CLI de Azure y, a continuación, se implementa código PHP de ejemplo en la aplicación web.

Puede usar Azure Cloud Shell.

  1. En la ventana de terminal, ejecute los comandos siguientes para clonar la aplicación de ejemplo en el equipo local y desplazarse a la raíz del proyecto.

    git clone https://github.com/Azure-Samples/php-docs-hello-world
    cd php-docs-hello-world
    
  2. Para ejecutar la aplicación localmente, use el comando php para iniciar el servidor web PHP integrado.

    php -S localhost:8080
    
  3. Vaya a la aplicación de ejemplo en http://localhost:8080, en un explorador web.

    Captura de pantalla de la aplicación de ejemplo que se ejecuta localmente.

  4. En la ventana de terminal, presione Ctrl + C para salir del servidor web.

Implementación del código de la aplicación en Azure

Crea los recursos de Azure y despliega la aplicación con comandos de CLI de Azure separados.

En el terminal, sustituye <app-name> por un nombre único a nivel global y crea el grupo de recursos, el plan de servicios de aplicaciones para Linux y la aplicación web PHP:

az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PHP:8.2"
  • Si no se reconoce el comando az, asegúrese de tener instalada la CLI de Azure.
  • El argumento --runtime "PHP:8.2" crea una aplicación web PHP 8.2; --is-linux selecciona App Service en Linux.
  • El argumento --sku P0v3 selecciona un plan Premium v3 de pago. Sustituye eastus por la región que prefieras. Puedes listar las regiones disponibles con az account list-locations.

Crea un archivo ZIP que contenga los archivos en el directorio php-docs-hello-world en su raíz, no en el directorio contenedor. En Linux o macOS, ejecuta zip -r ../app.zip . -x '*/.git/*' '*/.env*' desde el directorio de la aplicación. En Windows, ejecuta Compress-Archive -Path * -DestinationPath ..\app.zip en PowerShell desde el directorio de la aplicación. Luego desplégalo:

az webapp deploy --resource-group myResourceGroup --name <app-name> --src-path ../app.zip --type zip

Vaya a https://<app-name>.azurewebsites.net para ver la aplicación desplegada.

El código de ejemplo de PHP se está ejecutando en una instancia de Azure App Service.

Captura de pantalla de la aplicación de ejemplo que se ejecuta en Azure, que muestra Hola mundo.

Felicidades. Ha implementado su primera aplicación PHP en App Service mediante Azure Portal.

Actualización de la aplicación y nueva implementación

  1. Localice el directorio php-docs-hello-world y abra el archivo index.php utilizando un editor de texto local. Realice un pequeño cambio en el texto dentro de la cadena junto a echo:

    echo "Hello Azure!";
    
  2. Guarda tus cambios, recrea ../app.zip a partir de los archivos de la aplicación, como se describe en Implementa el código de la aplicación en Azure, y vuelve a implementar:

    az webapp deploy --resource-group myResourceGroup --name <app-name> --src-path ../app.zip --type zip
    
  3. Una vez completada la implementación, vuelva a la ventana del explorador que abrió en el paso Navegación hasta la aplicación y actualice la página.

    Captura de pantalla de la aplicación de ejemplo actualizada que se ejecuta en Azure.

Administración de la nueva aplicación de Azure

  1. Vaya a Azure Portal para administrar la aplicación web que ha creado. Busque y seleccione App Services.

    Captura de pantalla de Azure Portal con los servicios de aplicaciones escritos en el cuadro de texto de búsqueda.

  2. Seleccione la aplicación de Azure para abrirla.

    Captura de pantalla de la lista de App Services en Azure. Se resalta el nombre del servicio de aplicaciones de demostración.

    Se debe mostrar la página de información general de la aplicación web. En ella, puede realizar tareas de administración básicas como examinar, detener, reiniciar y eliminar.

    Captura de pantalla de la página de información general de App Service en Azure Portal. En la barra de acciones, se resalta el grupo de botones Examinar, Detener, Intercambiar, Reiniciar y Eliminar.

    En el menú de la aplicación web se proporcionan distintas opciones para configurar la aplicación.

Limpieza de recursos

Cuando haya terminado con la aplicación de ejemplo, puede quitar todos los recursos de la aplicación de Azure para que pueda evitar cargos adicionales y mantener la suscripción de Azure desordenada. 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.

Elimine el grupo de recursos con el comando az group delete.

az group delete --name myResourceGroup

Este comando tarda un minuto en ejecutarse.