Tutorial: Creación de una aplicación PHP y MySQL en Azure App Service
Azure App Service proporciona un servicio de hospedaje web muy escalable y con aplicación automática de revisiones con el sistema operativo Linux. En este tutorial se explica cómo crear una aplicación PHP segura en Azure App Service que está conectada a una base de datos MySQL (mediante un servidor flexible de Azure Database for MySQL). Cuando haya terminado, tendrá una aplicación de Laravel que se ejecuta en Azure App Service en Linux.
En este tutorial, aprenderá a:
- Crear en Azure una aplicación de PHP y MySQL segura de forma predeterminada
- Configurar secretos de conexión a MySQL usando la configuración de la aplicación
- Implementar el código de la aplicación mediante Acciones de GitHub
- Actualización de la aplicación y nueva implementación
- Ejecutar migraciones de base de datos de forma segura
- Transmitir registros de diagnóstico desde Azure
- Administrar la aplicación en Azure Portal
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Aplicación de ejemplo
Para seguir este tutorial, clone o descargue la aplicación de ejemplo desde el repositorio:
git clone https://github.com/Azure-Samples/laravel-tasks.git
Si desea ejecutar la aplicación localmente, haga lo siguiente:
En .env, defina la configuración de base de datos (como
DB_DATABASE
,DB_USERNAME
yDB_PASSWORD
) usando la configuración de la base de datos MySQL local. Para ejecutar este ejemplo, se necesita un servidor MySQL local.En la raíz del repositorio, inicie Laravel con los siguientes comandos:
composer install php artisan migrate php artisan key:generate php artisan serve
1: Creación de los recursos de App Service y MySQL
En este paso, creará los recursos de Azure. Con los pasos de este tutorial se crea una configuración de App Service y Azure Database for MySQL que es segura de forma predeterminada. En el proceso de creación especificará lo siguiente:
- El Nombre de la aplicación web. Es el nombre que se usa como parte del nombre DNS de la aplicación web en el formato
https://<app-name>.azurewebsites.net
. - El Runtime de la aplicación. Es donde se selecciona la versión de PHP que se va a usar para la aplicación.
- El Grupo de recursos de la aplicación. Un grupo de recursos permite agrupar (en un contenedor lógico) todos los recursos de Azure necesarios para la aplicación.
Inicie sesión en Azure Portal y siga estos pasos para crear los recursos de Azure App Service.
Instrucciones | Instantánea |
---|---|
En Azure Portal:
|
![]() |
En la página Crear aplicación web + base de datos, rellene el formulario como se indica a continuación.
|
![]() |
La implementación tarda unos minutos en completarse y crea los siguientes recursos:
|
![]() |
2: Configuración de la conectividad de base de datos
El asistente para la creación generó una cadena de conexión a la base de datos, pero en un formato que todavía no se puede usar en el código. En este paso, creará la configuración de la aplicación con el formato que la aplicación necesita.
Instrucciones | Instantánea |
---|---|
En la página App Service, en el menú de la izquierda, seleccione Configuración. | ![]() |
En la pestaña Configuración de la aplicación de la página Configuración, cree una configuración DB_DATABASE :
|
![]() |
De nuevo en la pestaña Configuración de la aplicación:
|
![]() |
Cree la siguiente configuración de aplicación adicional siguiendo los mismos pasos para crear una configuración de aplicación.
|
![]() |
3: Implementación del código de ejemplo
En este paso, configurará la implementación de GitHub mediante Acciones de GitHub. Es solo una de las muchas maneras de implementar en App Service, pero también una excelente manera de disponer de integración continua en el proceso de implementación. De forma predeterminada, cada uno de los repositorios git push
de GitHub iniciará la acción de compilación e implementación. Realizará algunos cambios en el código base con Visual Studio Code directamente en el explorador y luego dejará que Acciones de GitHub realice la implementación de manera automática.
4: Generación del esquema de base de datos
El asistente de creación coloca el servidor de base de datos MySQL detrás de un punto de conexión privado, por lo que solo estará accesible desde la red virtual. Dado que la aplicación App Service ya está integrada en la red virtual, la forma más fácil de migrar la base de datos es hacerlo directamente desde el contenedor de App Service.
Instrucciones | Instantánea |
---|---|
En la página App Service:
https://<app-name>.scm.azurewebsites.net/webssh/host en su lugar. |
![]() |
En el terminal de SSH:
|
![]() |
5: Cambio de la raíz del sitio
El ciclo de vida de la aplicación de Laravel comienza en su lugar en el directorio public. El contenedor de PHP 8.0 predeterminado para App Service usa Nginx, que se inicia en el directorio raíz de la aplicación. Para cambiar la raíz del sitio, debe cambiar el archivo de configuración de Nginx en el contenedor de PHP 8.0 (/etc/nginx/sites-available/default). Para su comodidad, el repositorio de ejemplo ya contiene un archivo de configuración personalizado denominado default. Como hemos señalado antes, no conviene reemplazar este archivo mediante el shell de SSH, ya que los cambios se perderán después de reiniciar la aplicación.
6: Navegación hasta la aplicación
7: Transmisión de registros de diagnóstico
Limpieza de recursos
Cuando acabe, puede eliminar todos los recursos de la suscripción de Azure mediante la eliminación del grupo de recursos.
Preguntas más frecuentes
- ¿Cuánto cuesta esta configuración?
- ¿Cómo me conecto a la base de datos MySQL protegida tras la red virtual con otras herramientas?
- ¿Cómo funciona el desarrollo de aplicaciones locales con Acciones de GitHub?
- ¿Por qué la implementación de Acciones de GitHub es tan lenta?
¿Cuánto cuesta esta configuración?
Los precios por la creación de los recursos son los siguientes:
- El plan de App Service se crea en el nivel Premium V2 y puede escalar o reducirse verticalmente. Consulte Precios de App Service.
- El servidor flexible de MySQL se crea en el nivel B1ms y puede escalar o reducirse verticalmente. Con una cuenta gratuita de Azure, el nivel B1ms es gratuito durante 12 meses, hasta los límites mensuales que se hayan fijado. Consulte Precios de Azure Database for MySQL.
- La red virtual no incurre en cargo alguno, a menos que se configure alguna funcionalidad extra, como, por ejemplo, el emparejamiento. Vea Precios de Azure Virtual Network.
- La zona DNS privada conlleva un pequeño cargo. Vea Precios de Azure DNS.
¿Cómo me conecto a la base de datos MySQL protegida tras la red virtual con otras herramientas?
- Para tener un acceso básico desde una herramienta de línea de comandos, puede ejecutar
mysql
desde el terminal de SSH de la aplicación. - Para conectarse desde una herramienta de escritorio como MySQL Workbench, la máquina debe estar en la red virtual. Por ejemplo, podría ser una máquina virtual de Azure conectada a una de las subredes, o una máquina de una red local que tenga una conexión VPN de sitio a sitio a la red virtual de Azure.
- También puede integrar Azure Cloud Shell en la red virtual.
¿Cómo funciona el desarrollo de aplicaciones locales con Acciones de GitHub?
Tome como ejemplo el archivo de flujo de trabajo generado automáticamente de App Service: cada git push
inicia una nueva ejecución de compilación e implementación. Desde un clon local del repositorio de GitHub, las actualizaciones deseadas se insertan en GitHub. Por ejemplo:
git add .
git commit -m "<some-message>"
git push origin main
¿Por qué la implementación de Acciones de GitHub es tan lenta?
El archivo de flujo de trabajo generado automáticamente de App Service define un proceso de compilación e implementación posterior; esto es, se ejecutan dos trabajos. Dado que cada trabajo se ejecuta en su propio entorno limpio, el archivo de flujo de trabajo garantiza que el trabajo deploy
va a tener acceso a los archivos del trabajo build
:
- Al final del trabajo
build
, cargue los archivos como artefactos. - Descargue los artefactos al inicio del trabajo
deploy
.
Casi todo el tiempo que tarda el proceso de dos trabajos se dedica a cargar y descargar artefactos. Si lo desea, puede simplificar el archivo de flujo de trabajo combinando los dos trabajos en uno, con lo cual no será necesario realizar los pasos de carga y descarga.
Pasos siguientes
En este tutorial, ha aprendido a:
- Crear en Azure una aplicación de PHP y MySQL segura de forma predeterminada
- Configurar secretos de conexión a MySQL usando la configuración de la aplicación
- Implementar el código de la aplicación mediante Acciones de GitHub
- Actualización de la aplicación y nueva implementación
- Ejecutar migraciones de base de datos de forma segura
- Transmitir registros de diagnóstico desde Azure
- Administrar la aplicación en Azure Portal
Pase al tutorial siguiente para aprender a proteger la aplicación con un dominio personalizado y un certificado.
O bien, eche un vistazo a otros recursos:
Configure PHP app (Configuración de una aplicación de PHP)