Tutorial: Compilación de una aplicación PHP (Laravel) y el Servidor flexible de Azure Database for 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
Requisitos previos
- Una suscripción a Azure Si todavía no una, cree una cuenta gratuita de Azure antes de empezar. Actualmente, con una cuenta gratuita de Azure, puede probar el Servidor flexible de Azure Database for MySQL gratis durante 12 meses. Para más información, consulte Uso de una cuenta gratuita de Azure para probar Azure Database for MySQL: servidor flexible de forma gratuita.
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, configure las opciones de base de datos (como
DB_DATABASE
,DB_USERNAME
yDB_PASSWORD
) mediante la configuración de la base de datos del Servidor flexible de Azure Database for MySQL local. Necesita una instancia del Servidor flexible de Azure Database for MySQL local para ejecutar este ejemplo.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 recursos del Servidor flexible de App Service y Azure Database for MySQL
En este paso, creará los recursos de Azure. Con los pasos de este tutorial se crea una configuración del Servidor flexible 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 el Portal de Azure:
|
|
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 ha establecido configuración de la aplicación para que pueda conectarse a la base de datos, pero en un formato que todavía no se puede usar en el código. En este paso, editará y actualizará 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, para cada una de las opciones siguientes, haga clic en Editar, actualice el campo Nombre con nuevos valores y haga clic en Aceptar.
|
|||||||||||
Cree una nueva configuración de la base de datos MYSQL_ATTR_SSL_CA :
|
|||||||||||
Cree la siguiente configuración de aplicación adicional siguiendo los mismos pasos. Luego, haga clic en Guardar.
|
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 para la creación coloca la instancia del Servidor flexible de Azure Database for MySQL detrás de un punto de conexión privado, por lo que solo es 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 se conecta a una base de datos del Servidor flexible de Azure Database for MySQL protegida detrás de una red virtual?
- ¿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.
- La instancia del Servidor flexible de Azure Database for MySQL se crea en el nivel B1ms y se puede escalar o reducir 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 del Servidor flexible 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 se conecta a una base de datos del Servidor flexible de Azure Database for MySQL protegida detrás de una red virtual?
Para conectarse a una base de datos del Servidor flexible de Azure Database for MySQL, puede usar varios métodos basados en las herramientas y entornos a su disposición:
- Acceso a la herramienta de línea de comandos:
- Use el comando
mysql
desde el terminal SSH de la aplicación para obtener acceso básico.
- Use el comando
- Herramientas de escritorio (por ejemplo, MySQL Workbench):
- Uso de la tunelización SSH con la CLI de Azure:
- Cree una sesión SSH a la aplicación web mediante la CLI de Azure.
- Use la sesión SSH para tunelizar el tráfico a MySQL.
- Uso de VPN de sitio a sitio o máquina virtual de Azure:
- La máquina debe formar parte de la red virtual.
- Considere la posibilidad de utilizar:
- Una máquina virtual de Azure vinculada a una de las subredes.
- Una máquina de una red local que tenga una conexión VPN de sitio a sitio a la red virtual de Azure.
- Uso de la tunelización SSH con la CLI de Azure:
- Integración de Azure Cloud Shell:
- Integración de Azure Cloud Shell con la red virtual para el acceso directo.
¿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.
Resumen
En este tutorial ha aprendido a:
- Creación de una aplicación de servidor flexible de PHP y Azure Database for MySQL segura de forma predeterminada en Azure
- Configuración de secretos de conexión al Servidor flexible de Azure Database for MySQL mediante 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