Tutoriel : Créer une instance d’Azure Database pour PostgreSQL - Serveur flexible avec une application web App Services dans un réseau virtuel
S’APPLIQUE À : Azure Database pour PostgreSQL : serveur flexible
Ce tutoriel explique comment créer une application web Azure App Service avec Azure Database pour PostgreSQL - Serveur flexible dans un réseau virtuel.
Ce didacticiel vous montre comment effectuer les opérations suivantes :
- Créer une instance de serveur flexible Azure Database pour PostgreSQL dans un réseau virtuel
- Créer une application web
- Ajouter l'application web au réseau virtuel
- Se connecter au serveur flexible Azure Database pour PostgreSQL à partir de l’application web
Prérequis
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Installez Azure CLI version 2.0 ou ultérieure localement (ou utilisez Azure Cloud Shell qui a l’interface CLI préinstallée). Pour afficher la version installée, exécutez la commande
az --version
.Connectez-vous à votre compte à l’aide de la commande az login. Notez la propriété id depuis la sortie de commande pour le nom d’abonnement correspondant.
az login
Si vous avez plusieurs abonnements, sélectionnez l’abonnement approprié dans lequel la ressource doit être facturée. Sélectionnez l’ID d’abonnement spécifique sous votre compte à l’aide de la commande az account set.
az account set --subscription <subscription ID>
Créer une instance de serveur flexible Azure Database pour PostgreSQL dans un nouveau réseau virtuel
Créez une instance de serveur flexible Azure Database pour PostgreSQL privée dans un réseau virtuel (VNET) à l’aide de la commande suivante :
az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2
Cette commande effectue les actions suivantes qui peuvent prendre quelques minutes :
- S’il n’existe pas encore, créez le groupe de ressources
- Génère un nom de serveur s’il n’est pas fourni.
- Crée un réseau virtuel et un sous-réseau pour l’instance de serveur flexible Azure Database pour PostgreSQL.
- Crée un nom d’utilisateur administrateur et un mot de passe pour votre serveur, s'ils ne sont pas fournis.
- Crée une base de données vide appelée postgres.
Voici l’exemple de sortie.
Creating Resource Group 'demoresourcegroup'...
Creating new Vnet "demoappvnet" in resource group "demoresourcegroup"
Creating new Subnet "Subnetdemoserverpostgres" in resource group "demoresourcegroup"
Creating a private dns zone demoserverpostgres.private.postgres.database.azure.com in resource group "demoresourcegroup"
Creating PostgreSQL Server 'demoserverpostgres' in group 'demoresourcegroup'...
Your server 'demoserverpostgres' is using sku 'Standard_D2s_v3' (Paid Tier). Please refer to https://aka.ms/postgres-pricing for pricing details
Creating PostgreSQL database 'flexibleserverdb'...
Make a note of your password. If you forget, you would have to reset your password with "az postgres flexible-server update -n demoserverpostgres -g demoresourcegroup -p <new-password>".
Try using 'az postgres flexible-server connect' command to test out connection.
{
"connectionString": "postgresql://generated-username:generated-password@demoserverpostgres.postgres.database.azure.com/postgres?sslmode=require",
"host": "demoserverpostgres.postgres.database.azure.com",
"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/demoserverpostgres",
"location": "East US",
"password": "generated-password",
"resourceGroup": "demoresourcegroup",
"skuname": "Standard_D2s_v3",
"subnetId": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.Network/virtualNetworks/demoappvnet/subnets/Subnetdemoserverpostgres",
"username": "generated-username",
"version": "12"
}
Créer une application Web
Dans cette section, vous créez un hôte d’application dans l’application App Service, connectez cette application à la base de données Azure Database pour PostgreSQL – Serveur flexible, puis déployez votre code sur cet hôte. Vérifiez que vous êtes à la racine du référentiel de votre code d'application dans le terminal. Remarque : Le plan De base ne prend pas en charge l’intégration au réseau virtuel. Utilisez Standard ou Premium.
Créez une application App Service (le processus hôte) avec la commande az webapp up.
az webapp up --resource-group demoresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp
Remarque
- Pour l’argument --location, utilisez le même emplacement que pour la base de données de la section précédente.
- Remplacez <app-name> par un nom unique dans l’ensemble d’Azure. Les caractères autorisés pour <app-name> sont A-Z, 0-9 et -. Un bon modèle consiste à utiliser une combinaison du nom de votre société et d’un identificateur d’application.
Cette commande effectue les actions suivantes qui peuvent prendre quelques minutes :
- S’il n’existe pas encore, créez le groupe de ressources (dans cette commande, vous utilisez le groupe de ressources dans lequel vous avez créé la base de données précédemment).
- Si elle n’existe pas, créez l’application App Service.
- Activez la journalisation par défaut pour l’application, si elle ne l’est pas déjà.
- Chargez le dépôt à l’aide du déploiement ZIP avec l’automatisation de la génération activée.
Créer un sous-réseau pour une application web
Avant d’activer l’intégration au réseau virtuel, vous devez disposer d’un sous-réseau délégué à l’application Web App Service. Avant de créer le sous-réseau, affichez l’adresse du sous-réseau de base de données pour éviter d’utiliser le même préfixe d’adresse pour le sous-réseau d’application Web.
az network vnet show --resource-group demoresourcegroup -n demoappvnet
Exécutez la commande suivante pour créer un sous-réseau dans le même réseau virtuel que celui où l’instance de serveur flexible Azure Database pour PostgreSQL a été créée. Mettez à jour le préfixe d’adresse pour éviter les conflits avec le sous-réseau de serveur flexible Azure Database pour PostgreSQL.
az network vnet subnet create --resource-group demoresourcegroup --vnet-name demoappvnet --name webappsubnet --address-prefixes 10.0.1.0/24 --delegations Microsoft.Web/serverFarms
Ajouter l'application web au réseau virtuel
Utilisez la commande az webapp vnet-integration pour ajouter une intégration de réseau virtuel régional à une application web.
az webapp vnet-integration add --resource-group demoresourcegroup -n mywebapp --vnet demoappvnet --subnet webappsubnet
Configurer des variables d’environnement pour connecter la base de données
Le code étant maintenant déployé sur App Service, l’étape suivante consiste à connecter l’application à l’instance de serveur flexible Azure Database pour PostgreSQL dans Azure. Le code de l’application s’attend à trouver des informations sur la base de données dans de nombreuses variables d’environnement. Pour définir des variables d’environnement dans App Service, utilisez az webapp config appsettings set.
az webapp config appsettings set --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>"
- Remplacez postgres-server-name, username et password par la commande de l’instance de serveur flexible Azure Database pour PostgreSQL nouvellement créée.
- Remplacez <username> et <password> par les informations d’identification que la commande a également générées pour vous.
- Les noms du groupe de ressources et de l’application sont tirés des valeurs mises en cache dans le fichier .azure/config.
- La commande crée les paramètres DBHOST, DBNAME, DBUSER* et DBPASS. Si votre code d’application utilise un autre nom pour les informations de base de données, utilisez ce nom pour les paramètres d’application, comme indiqué dans le code.
Configurez l’application Web pour autoriser toutes les connexions sortantes à partir du réseau virtuel.
az webapp config set --name mywebapp --resource-group demoresourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'
Nettoyer les ressources
Supprimez toutes les ressources que vous avez créées dans le tutoriel à l'aide de la commande suivante. Cette commande supprime toutes les ressources de ce groupe de ressources.
az group delete -n demoresourcegroup