Tutoriel : créer une application PHP (Laravel) et Azure Database pour MySQL – Serveur flexible sur Azure App Service
Azure App Service fournit un service d’hébergement web hautement évolutif et appliquant des mises à jour correctives automatiques en utilisant le système d’exploitation Linux. Ce tutoriel montre comment créer une application PHP sécurisée dans Azure App Service connectée à une base de données MySQL (à l’aide d’Azure Database pour MySQL - Serveur flexible). Quand vous aurez terminé, vous disposerez d’une application Laravel s’exécutant sur Azure App Service sur Linux.
Dans ce tutoriel, vous allez apprendre à :
- Créer une application MySQL et PHP sécurisée par défaut dans Azure
- Configurer les secrets de connexion à MySQL à l’aide des paramètres d’application
- Déployer du code d’application à l’aide de GitHub Actions
- Mise à jour et redéploiement de l’application
- Exécuter des migrations de base de données de manière sécurisée
- Diffusion des journaux de diagnostic à partir d’Azure
- Gérer l’application dans le portail Azure
Prérequis
- Un abonnement Azure : si vous n’en avez pas, créez un compte Azure gratuit avant de commencer. Actuellement, avec un compte gratuit Azure, vous pouvez essayer gratuitement Azure Database pour MySQL – Serveur flexible pendant 12 mois. Pour plus d’informations, consultez Utilisez un compte gratuit Azure pour essayer gratuitement le serveur flexible Azure Database pour MySQL.
Exemple d’application
Pour suivre ce tutoriel, vous pouvez cloner ou télécharger l’exemple d’application dans le dépôt :
git clone https://github.com/Azure-Samples/laravel-tasks.git
Si vous souhaitez exécuter l’application localement, effectuez les étapes suivantes :
Dans .env, configurez les paramètres de base de données (comme
DB_DATABASE
,DB_USERNAME
etDB_PASSWORD
) à l’aide des paramètres de votre base de données locale Azure Database pour MySQL – Serveur flexible. Vous avez besoin d’une instance locale d’Azure Database pour MySQL – Serveur flexible pour exécuter cet exemple.À partir de la racine du dépôt, démarrez Laravel avec les commandes suivantes :
composer install php artisan migrate php artisan key:generate php artisan serve
1 – Créer des ressources App Service et Azure Database pour MySQL – Serveur flexible
Dans cette étape, vous créez les ressources Azure. Les étapes de ce tutoriel permettent de créer une configuration App Service et Azure Database pour MySQL – Serveur flexible sécurisée par défaut. Pour le processus de création, vous devez spécifier :
- Le nom de l’application web. Il s’agit du nom utilisé dans le cadre du nom DNS de votre application web sous la forme
https://<app-name>.azurewebsites.net
. - Le runtime pour l’application. C’est là que vous sélectionnez la version de PHP à utiliser pour votre application.
- Le groupe de ressources pour l’application. Un groupe de ressources vous permet de regrouper (dans un conteneur logique) toutes les ressources Azure nécessaires à l’application.
Connectez-vous au portail Azure et procédez comme suit pour créer vos ressources Azure App Service.
Instructions | Capture d'écran |
---|---|
Dans le portail Azure :
|
|
Dans la page Créer une application web + base de données, remplissez le formulaire comme suit.
|
|
Le déploiement prend quelques minutes et crée les ressources suivantes :
|
2 - Configurer la connectivité de la base de données
L’Assistant de création a généré à votre place des paramètres d’application à utiliser pour vous connecter à la base de données, mais celle-ci n’est pas encore dans un format utilisable pour votre code. Dans cette étape, vous créez et mettez à jour des paramètres d’application dans le format nécessaire à votre application.
Instructions | Capture d'écran | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Dans le menu de gauche, dans la page App Service, sélectionnez Configuration. | |||||||||||
Sous l’onglet Paramètres de l’application de la page Configuration, pour chacun des paramètres suivants, sélectionnez Modifier, mettez à jour le champ Nom avec de nouvelles valeurs, puis sélectionnez OK.
|
|||||||||||
Créez un paramètre de base de données MYSQL_ATTR_SSL_CA :
|
|||||||||||
Créez les paramètres d’application supplémentaires ci-après en suivant les mêmes étapes, puis sélectionnez Enregistrer.
|
3 - Déployer l’exemple de code
Dans cette étape, vous allez configurer le déploiement GitHub avec GitHub Actions. Cette méthode fait partie des nombreuses façons de déployer sur App Service, mais elle permet également de bénéficier d’une intégration continue dans votre processus de déploiement. Par défaut, chaque git push
dans votre dépôt GitHub lance l’action de build et de déploiement. Vous apporterez des modifications à votre codebase avec Visual Studio Code directement dans le navigateur, puis laisserez GitHub Actions déployer automatiquement pour vous.
4 – Générer le schéma de la base de données
L’Assistant de création place l’instance d’Azure Database pour MySQL – Serveur flexible derrière un point de terminaison privé. Elle est donc accessible uniquement à partir du réseau virtuel. Étant donné que l’application App Service est déjà intégrée au réseau virtuel, le moyen le plus simple d’exécuter des migrations de base de données avec votre base de données est de le faire directement à partir du conteneur App Service.
Instructions | Capture d'écran |
---|---|
Dans la page App Service :
https://<app-name>.scm.azurewebsites.net/webssh/host à la place. |
|
Dans le terminal SSH :
|
5 - Modifier la racine du site
Le cycle de vie de l’application Laravel commence dans le répertoire /public. Le conteneur PHP 8.0 par défaut pour App Service utilise Nginx, qui démarre dans le répertoire racine de l’application. Pour changer la racine du site, vous devez modifier le fichier de configuration Nginx dans le conteneur PHP 8.0 (/etc/nginx/sites-available/default). Pour des raisons pratiques, l’exemple de dépôt contient un fichier de configuration personnalisé appelé default. Comme indiqué précédemment, vous ne devez pas remplacer ce fichier à l’aide de l’interpréteur de commandes SSH, sinon vos modifications seront perdues après le redémarrage de l’application.
6 - Accéder à l’application
7 - Diffuser les journaux de diagnostic
Nettoyer les ressources
Lorsque vous avez terminé, vous pouvez supprimer toutes les ressources de votre abonnement Azure en supprimant le groupe de ressources.
Forum aux questions
- Quel est le coût de cette configuration ?
- Comment faire pour se connecter à une base de données Azure Database pour MySQL – Serveur flexible sécurisée derrière un réseau virtuel ?
- Comment le développement d’applications locales fonctionne-t-il avec GitHub Actions ?
- Pourquoi le déploiement GitHub Actions est-il si lent ?
Quel est le coût de cette configuration ?
Le prix des ressources de création est calculé comme suit :
- Le plan App Service est créé au niveau Premium V2 et peut faire l’objet d’un scale-up ou d’un scale-down. Consultez la tarification App Service.
- L’instance d’Azure Database pour MySQL – Serveur flexible est créée au niveau B1ms et peut faire l’objet d’un scale-up ou d’un scale-down. Avec un compte gratuit Azure, le niveau B1ms est gratuit pendant 12 mois, sauf en cas de dépassement des limites mensuelles. Consultez les prix d’Azure Database pour MySQL – Serveur flexible.
- Le réseau virtuel n’entraîne pas de frais, sauf si vous configurez des fonctionnalités supplémentaires, telles que le peering. Consultez Tarification du réseau virtuel Azure.
- La zone DNS privée entraîne des frais minimes. Consultez la tarification d’Azure DNS.
Comment faire pour se connecter à une base de données Azure Database pour MySQL – Serveur flexible sécurisée derrière un réseau virtuel ?
Pour vous connecter à une base de données Azure Database pour MySQL – Serveur flexible, vous pouvez utiliser plusieurs méthodes en fonction des outils et environnements à votre disposition :
- Accès aux outils en ligne de commande :
- Utilisez la commande
mysql
à partir du terminal SSH de l’application pour un accès de base.
- Utilisez la commande
- Outils de bureau (par exemple MySQL Workbench) :
- Utilisation du tunneling SSH avec Azure CLI :
- Créez une session SSH pour l’application web à l’aide d’Azure CLI.
- Utilisez la session SSH pour créer un tunnel permettant d’envoyer le trafic vers MySQL.
- Utilisation d’un VPN site à site ou d’une machine virtuelle Azure :
- Votre machine doit faire partie du réseau virtuel.
- Envisagez d’utiliser :
- Une machine virtuelle Azure liée à l’un des sous-réseaux.
- Une machine d’un réseau local, qui dispose d’une connexion VPN site à site au réseau virtuel Azure.
- Utilisation du tunneling SSH avec Azure CLI :
- Intégration à Azure Cloud Shell :
- Intégrez Azure Cloud Shell au réseau virtuel pour un accès direct.
Comment le développement d’applications locales fonctionne-t-il avec GitHub Actions ?
Prenez le fichier de workflow généré automatiquement à partir d’App Service comme exemple, chaque git push
lance une nouvelle exécution de build et de déploiement. À partir d’un clone local du dépôt GitHub, vous faites en sorte que les mises à jour souhaitées le poussent vers GitHub. Par exemple :
git add .
git commit -m "<some-message>"
git push origin main
Pourquoi le déploiement GitHub Actions est-il si lent ?
Le fichier de workflow généré automatiquement à partir d’App Service divise l’exécution en deux tâches : la build et le déploiement. Étant donné que chaque tâche s’exécute dans son environnement propre, le fichier de workflow garantit que la tâche deploy
a accès aux fichiers à partir de la tâche build
:
- À la fin de la tâche
build
, chargez les fichiers en tant qu’artefacts. - Au début de la tâche
deploy
, téléchargez les artefacts.
La majeure partie du temps pris par le processus à deux tâches est consacrée au chargement et au téléchargement des artefacts. Si vous le souhaitez, vous pouvez simplifier le fichier de workflow en combinant les deux travaux en un, ce qui élimine les étapes de chargement et de téléchargement.
Résumé
Dans ce didacticiel, vous avez appris à :
- Créer une application serveur flexible PHP et Azure Database pour MySQL – Serveur flexible sécurisée par défaut dans Azure
- Configurer des secrets de connexion à Azure Database pour MySQL – Serveur flexible à l’aide des paramètres d’application
- Déployer du code d’application à l’aide de GitHub Actions
- Mise à jour et redéploiement de l’application
- Exécuter des migrations de base de données de manière sécurisée
- Diffusion des journaux de diagnostic à partir d’Azure
- Gérer l’application dans le portail Azure