Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
В этом руководстве вы используете соединитель службы для подключения веб-приложения к службе базы данных. Это руководство является изменением руководства по службе приложений, поэтому вы можете увидеть некоторые сходства. Ознакомьтесь с разделом "Создание соединителя без пароля в базе данных Postgres ", чтобы узнать, где соединитель службы входит в игру и упрощает процесс подключения, приведенный в руководстве по службе приложений.
В этом руководстве показано, как развернуть Python веб-приложение Django, использующее данные, в Azure App Service и подключить его к базе данных Azure Database for PostgreSQL Flexible server.
В этом руководстве вы используете Azure CLI для выполнения следующих задач:
- Настройка начальной среды с помощью Python и Azure CLI
- Создайте гибкий сервер базы данных Azure Database для PostgreSQL
- Развертывание кода в Azure App Service и подключение к гибкому серверу PostgreSQL
- обновление кода и повторное развертывание;
- просмотр журналов диагностики;
- Управление веб-приложением на портале Azure
Настройка начальной среды
Запустите Azure Cloud Shell на портале Azure и установите расширение соединителя службы без пароля для Azure CLI.
az extension add --name serviceconnector-passwordless --upgrade
Клонирование или скачивание примера приложения
Клонируйте репозиторий примера.
git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless.git
Перейдите в следующую папку:
cd serviceconnector-webapp-postgresql-django-passwordless
В этом руководстве вы развернете веб-приложение Django для Azure App Service. Веб-приложение использует назначенную системой управляемую идентификацию (безпарольные подключения) с управлением доступом на основе ролей Azure для доступа к ресурсам Azure Storage и Azure Database for PostgreSQL гибкий сервер. Код использует класс DefaultAzureCredential клиентской библиотеки Azure Identity для Python. Класс DefaultAzureCredential автоматически обнаруживает, что управляемое удостоверение существует для службы приложений и использует его для доступа к другим ресурсам Azure.
- Рабочие параметры находятся в файле azuresite/production.py . Параметры разработки находятся в azuresite/settings.py.
- Приложение использует рабочие параметры при задании переменной
WEBSITE_HOSTNAMEсреды. Azure App Service автоматически задает эту переменную URL-адрес веб-приложения, напримерmsdocs-django.azurewebsites.net.
Эти производственные параметры связаны с настройкой Django для запуска в любой рабочей среде и не относятся к Службе приложений. Дополнительные сведения см. в контрольном списке развертывания Django. Дополнительные сведения о некоторых изменениях см. в разделе Production settings for Django on Azure.
Возникли проблемы? Сообщите нам об этом.
Создание базы данных Postgres в Azure
Настройте переменные среды, необходимые для руководства.
LOCATION="eastus" RAND_ID=$RANDOM RESOURCE_GROUP_NAME="msdocs-mi-web-app" APP_SERVICE_NAME="msdocs-mi-web-$RAND_ID" DB_SERVER_NAME="msdocs-mi-postgres-$RAND_ID" ADMIN_USER="demoadmin" ADMIN_PW="{your database password}"Внимание
Поле
ADMIN_PWдолжно содержать от 8 до 128 символов из трех из следующих категорий: заглавные английские буквы, строчные английские буквы, цифры и неалфавитно-цифровые символы. При создании имен пользователей или паролей не используйте символ . Позже вы создадите переменные среды с этими значениями, где символ$имеет определенное значение в контейнере Linux, используемом для запуска приложений Python.Создайте группу ресурсов (при желании можно изменить имя). Имя группы ресурсов кэшируется и автоматически применяется к следующим командам.
az group create --name $RESOURCE_GROUP_NAME --location $LOCATIONСоздайте сервер базы данных. Если появится запрос на включение доступа к текущему IP-адресу клиента, введите
yзначение "Да". Этот процесс занимает несколько минут:az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --sku-name Standard_D2ds_v4 --active-directory-auth EnabledЕсли команда
azне распознана, убедитесь, что установлен Azure CLI, как описано в Set up your initial environment.Команда создания гибкого сервера az postgres выполняет следующие действия, которые занимают несколько минут:
- Создайте группу ресурсов по умолчанию, если кэшированное имя еще не существует.
- Создайте гибкий сервер PostgreSQL:
- С именем сервера, указанным параметром
--name. Имя должно быть уникальным в системе «Azure». - С номером SKU, указанным параметром
--sku-name.
- С именем сервера, указанным параметром
- Создайте учетную запись администратора с именем пользователя и паролем, указанными в
--admin-userпараметрах и--admin-passwordпараметрах. - Создайте базу данных, имя которой указывается с параметром
--database-name.
Настройте правило брандмауэра на сервере с помощью команды az postgres flexible-server firewall-rule create. Это правило позволяет локальной среде обращаться к серверу. (Если вам будет предложено включить доступ с IP-адреса клиента на предыдущем шаге, можно пропустить этот шаг.)
IP_ADDRESS=<your IP> az postgres flexible-server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --rule-name AllowMyIP \ --start-ip-address $IP_ADDRESS \ --end-ip-address $IP_ADDRESSИспользуйте любое средство или веб-сайт, отображающее ваш IP-адрес, чтобы заменить
<your IP>в команде. Например, вы можете использовать веб-сайт What's My IP Address?.Создайте базу данных с именем
restaurantс помощью команды `az postgres flexible-server execute`.az postgres flexible-server execute \ --name $DB_SERVER_NAME \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --database-name postgres \ --querytext 'create database restaurant;'
Развертывание кода в Azure App Service
В этом разделе вы создадите узел приложения в приложении Службы приложений, подключите это приложение к базе данных Postgres, а затем развернете код на этом узле.
Создать приложение App Service
В терминале убедитесь, что вы находитесь в папке репозитория serviceconnector-webapp-postgresql-django-passwordless , содержащей код приложения.
Выполните следующую
az webapp upкоманду, чтобы создать хост App Service для приложения:az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.9 \ --sku B1Номер SKU определяет размер (процессор, память) и стоимость плана службы приложений. План обслуживания B1 (Базовый) влечет за собой небольшую стоимость на подписке Azure. Полный список планов службы приложений см. на странице цен на Службу приложений.
Эта команда выполняет следующие действия, которые могут занять несколько минут, используя группу ресурсов и расположение, кэшированные из предыдущей
az group createкоманды (группу$RESOURCE_GROUP_NAMEвeastusрегионе в этом примере).- Создайте план службы приложений в ценовой категории "Базовый" (B1). Вы можете опустить
--sku, чтобы использовать значения по умолчанию. - Создайте приложение Службы приложений.
- Включение ведения журнала по умолчанию для приложения.
- Загрузите репозиторий с использованием ZIP-развертывания и включенной автоматизацией сборки.
- Создайте план службы приложений в ценовой категории "Базовый" (B1). Вы можете опустить
Настройте App Service для использования start.sh в репозитории с командой az webapp config set.
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
Создание соединителя без пароля в базе данных Postgres
С помощью кода, развернутого в Службе приложений, следующим шагом является подключение приложения к базе данных Postgres в Azure. Код приложения ожидает найти сведения о базе данных в переменной среды с именем AZURE_POSTGRESQL_CONNECTIONSTRING для гибкого сервера PostgreSQL и переменной среды с именем AZURE_STORAGEBLOB_RESOURCEENDPOINT для учетной записи Azure Storage.
Команды Коннектора службы настраивают ресурсы Azure Storage и Azure Database for PostgreSQL для использования управляемого удостоверения и управления доступом на основе ролей Azure. Команды создают параметры приложения в Службе приложений, которые подключают ваше веб-приложение к этим ресурсам. Выходные данные команд перечисляют действия служебного соединителя, выполненные для обеспечения возможности работы без пароля.
Добавьте соединитель службы PostgreSQL с помощью команды az webapp connection create postgres-flexible. Управляемое удостоверение, назначенное системой, используется для проверки подлинности веб-приложения при подключении к целевому ресурсу, в данном случае PostgreSQL.
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP_NAME \
--name $APP_SERVICE_NAME \
--target-resource-group $RESOURCE_GROUP_NAME \
--server $DB_SERVER_NAME \
--database restaurant \
--client-type python \
--system-identity
Примечание.
Если отображается сообщение об ошибке "Подписка не зарегистрирована для использования Microsoft.ServiceLinker", выполните команду az provider register -n Microsoft.ServiceLinker, чтобы зарегистрировать поставщика ресурсов службы-коннектора. Затем выполните команду для подключения еще раз.
В коде Python доступ к этим параметрам можно получить в виде переменных среды с операторами, такими как os.environ.get('AZURE_POSTGRESQL_HOST'). Дополнительные сведения см. в разделе "Переменные среды Access".
Возникли проблемы? Сначала изучите руководство по устранению неполадок. Если проблему решить не удается, свяжитесь с нами.
Создание учетной записи хранения и подключение к ней
- Используйте команду az webapp connection create storage-blob , чтобы создать учетную запись хранения и создать соединитель службы, который выполняет следующие конфигурации:
Включает системное управляемое удостоверение на веб-приложении
Добавляет веб-приложение с ролью участника данных блоб-объектов хранилища в только что созданную учетную запись хранения.
Настройте сеть учетной записи хранения для приема доступа из веб-приложения.
STORAGE_ACCOUNT_URL=$(az webapp connection create storage-blob \ --new true \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --client-type python \ --system-identity \ --query configurations[].value \ --output tsv) STORAGE_ACCOUNT_NAME=$(cut -d . -f1 <<< $(cut -d / -f3 <<< $STORAGE_ACCOUNT_URL))
Обновите учетную запись хранения, чтобы разрешить общедоступный доступ к blOB-объектам для пользователей приложения ресторана для доступа к изображениям.
az storage account update \ --name $STORAGE_ACCOUNT_NAME \ --allow-blob-public-accessСоздайте контейнер, названный
photos, в учетной записи хранилища с помощью команды az storage container create. Разрешить анонимный (публичный) доступ на чтение к blob-объектам в недавно созданном контейнере.# Set the BLOB_ENDPOINT variable BLOB_ENDPOINT=$(az storage account show --name $STORAGE_ACCOUNT_NAME --query "primaryEndpoints.blob" | sed 's/"//g') echo $BLOB_ENDPOINT # Create the storage container using the BLOB_ENDPOINT variable az storage container create \ --account-name $STORAGE_ACCOUNT_NAME \ --name photos \ --public-access blob \ --auth-mode login \ --blob-endpoint $BLOB_ENDPOINT
Тестирование веб-приложения Python в Azure
В примере приложения Python используется пакет azure.identity и его класс DefaultAzureCredential. Когда приложение выполняется в Azure, DefaultAzureCredential автоматически обнаруживает, существует ли управляемое удостоверение для службы приложений, а если да, использует его для доступа к другим ресурсам Azure (хранилище и PostgreSQL в этом случае). Нет необходимости предоставлять ключи хранения, сертификаты или учетные данные в Службу приложений для доступа к этим ресурсам.
Перейдите к развернутому приложению по URL-адресу
http://$APP_SERVICE_NAME.azurewebsites.net.Для запуска приложения может потребоваться несколько минут. Если вы видите страницу приложения по умолчанию, которая не является образцом приложения по умолчанию, подождите минуту и обновите браузер.
Проверьте функциональные возможности примера приложения, добавив ресторан и некоторые отзывы с фотографиями для ресторана. Сведения о ресторане и обзоре хранятся в Azure Database for PostgreSQL, а фотографии хранятся в Azure Storage. Ниже приведен пример снимка экрана:
Очистка ресурсов
Если вы хотите сохранить приложение или продолжить работу с дополнительными руководствами, перейдите к следующим шагам. В противном случае, чтобы избежать постоянных затрат, удалите группу ресурсов, созданную для этой инструкции.
az group delete --name $RESOURCE_GROUP_NAME --no-wait
При удалении группы ресурсов будут также освобождены и удалены все ресурсы, содержащиеся в ней. Прежде чем выполнять команду, убедитесь, что вам больше не нужны ресурсы в группе.
Удаление всех ресурсов может занять некоторое время. Аргумент --no-wait позволяет команде немедленно вернуться.
Возникли проблемы? Сообщите нам об этом.