Руководство. Создание База данных Azure для PostgreSQL — гибкий экземпляр сервера с веб-приложением Служба приложений s в виртуальной сети

Область применения: гибкий сервер Базы данных Azure для PostgreSQL

В этом руководстве показано, как создать веб-приложение службы приложение Azure с База данных Azure для PostgreSQL гибким сервером в виртуальной сети.

Из этого учебного курса вы узнаете следующее:

  • Создание гибкого экземпляра сервера База данных Azure для PostgreSQL в виртуальной сети
  • Создание веб-приложения.
  • Добавление веб-приложения в виртуальную сеть
  • Подключение База данных Azure для PostgreSQL гибкий сервер из веб-приложения

Необходимые компоненты

  • Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

  • Установите Azure CLI версии 2.0 или выше в локальной среде. Чтобы узнать, какая установлена версия, выполните команду az --version.

  • Войдите в учетную запись с помощью команды az login. Запишите свойство id из выходных данных команды для соответствующего имени подписки.

    az login
    
  • Если вы используете несколько подписок, выберите соответствующую, в которой за ресурс будет взиматься плата. Выберите конкретный идентификатор подписки вашей учетной записи, выполнив команду az account set.

    az account set --subscription <subscription ID>
    

Создание гибкого экземпляра сервера База данных Azure для PostgreSQL в новой виртуальной сети

Создайте частный База данных Azure для PostgreSQL гибкий экземпляр сервера в виртуальной сети (VNET) с помощью следующей команды:

az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2

С помощью этой команды выполняются следующие действия (может занять несколько минут):

  • Создается группа ресурсов, если она еще не существует.
  • Создает имя сервера, если оно не указано.
  • Создайте виртуальную сеть для нового База данных Azure для PostgreSQL гибкого экземпляра сервера и подсети в этой виртуальной сети для База данных Azure для PostgreSQL гибкого экземпляра сервера.
  • Создает имя пользователя и пароль администратора для этого сервера, если они не предоставлены.
  • Будет создана пустая база данных с именем postgres.

Пример выходных данных:

Local context is turned on. Its information is saved in working directory /home/jane. You can run `az local-context off` to turn it off.
Command argument values from local context: --resource-group demoresourcegroup, --location: eastus
Checking the existence of the resource group ''...
Creating Resource group 'demoresourcegroup ' ...
Creating new vnet "demoappvnet" in resource group "demoresourcegroup" ...
Creating new subnet "Subnet095447391" in resource group "demoresourcegroup " and delegating it to "Microsoft.DBforPostgreSQL/flexibleServers"...
Creating Azure Database for PostgreSQL flexible server instance '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
Make a note of your password. If you forget, you have to reset your password with 'az postgres flexible-server update -n demoserverpostgres --resource-group demoresourcegroup -p <new-password>'.
{
  "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/VNET095447391/subnets/Subnet095447391",
  "username": "generated-username",
  "version": "12"
}

Создание веб-приложения

В этом разделе описано, как создать узел приложения в приложении Служба приложений, подключить это приложение к гибкой базе данных сервера База данных Azure для PostgreSQL, а затем развернуть код на этом узле. Убедитесь, что в окне терминала вы находитесь в корне репозитория с кодом вашего приложения. Учтите, что план "Базовый" не поддерживает интеграцию с виртуальной сетью. Используйте уровень "Стандартный" или "Премиум".

Создайте приложение Службы приложений (хост-процесс) с помощью команды az webapp up.

az webapp up --resource-group demoresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp

Примечание.

  • Для аргумента --location укажите то же расположение, что и для базы данных в предыдущем разделе.
  • Замените <app-name> на уникальное имя в рамках всей службы Azure. В значении <app-name> допускаются символы A-Z, 0–9 и «-». Рекомендуется использовать сочетание названия компании и идентификатора приложения.

С помощью этой команды выполняются следующие действия (может занять несколько минут):

  • Создается группа ресурсов, если она еще не существует. (В этой команде используется та же группа ресурсов, в которой ранее была создана база данных.)
  • Создается приложение Службы приложений, если оно еще не существует.
  • Для приложения включается ведение журнала по умолчанию, если оно еще не включено.
  • Передается репозиторий через развертывание на основе ZIP-файла с включенной автоматизацией сборки.

Создание подсети для веб-приложения

Прежде чем включить интеграцию виртуальной сети, необходимо создать подсеть, делегированную веб-приложению Службы приложений. Перед созданием подсети просмотрите адрес подсети базы данных, чтобы не использовать тот же префикс адреса для подсети веб-приложения.

az network vnet show --resource-group demoresourcegroup -n demoappvnet

Выполните следующую команду, чтобы создать новую подсеть в той же виртуальной сети, что и созданный экземпляр гибкого сервера База данных Azure для PostgreSQL. Обновите префикс адреса, чтобы избежать конфликта с гибкой подсетью сервера База данных Azure для 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

Добавление веб-приложения в виртуальную сеть

Используйте команду az webapp vnet-integration, чтобы добавить в веб-приложение региональную интеграцию с виртуальной сетью.

az webapp vnet-integration add --resource-group demoresourcegroup -n  mywebapp --vnet demoappvnet --subnet webappsubnet

Настройка переменных среды для подключения к базе данных

Теперь с помощью кода, развернутого в Служба приложений, необходимо подключить приложение к База данных Azure для PostgreSQL гибкому экземпляру сервера в Azure. Код приложения должен находить сведения о базе данных в переменных среды. Чтобы задать в Службе приложений переменные среды, используйте команду 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>" 
  • Замените postgres-server-name,username,password для только что созданной База данных Azure для PostgreSQL гибкой команды экземпляра сервера.
  • Замените <username> и <password> учетными данными, которые также созданы командой.
  • Имена группы ресурсов и приложения извлекаются из кэшированных значений в файле .azure/config.
  • Команда создает параметры DBHOST, DBNAME, DBUSER* и DBPASS. Если в коде приложения для сведений о базе данных используется другое имя, укажите здесь имена параметров приложения, которые используются в коде.

Настройте веб-приложение так, чтобы разрешить все исходящие подключения из виртуальной сети.

az webapp config set --name mywebapp --resource-group demoresourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'

Очистка ресурсов

Очистите все ресурсы, созданные при работе с этим учебником, с помощью приведенной ниже команды. Эта команда позволяет удалить все ресурсы в группе ресурсов.

az group delete -n demoresourcegroup

Следующие шаги