Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы узнаете, как развернуть веб-приложение на основе данных Python Django для Служба приложений Azure и использовать соединитель служб для подключения к другим службам Azure. Пример веб-приложения хранит ресторан и просматривает сведения в базе данных База данных Azure для PostgreSQL и сохраняет фотографии в контейнере служба хранилища Azure.
Для выполнения следующих задач используется Azure CLI.
- Создайте веб-приложение Python Django и разверните его в Служба приложений Azure.
- Создайте гибкий сервер и базу данных База данных Azure для PostgreSQL.
- Создайте учетную запись и контейнер служба хранилища Azure.
- Подключите веб-приложение к базе данных и контейнеру хранилища с помощью Service Connector с аутентификацией через управляемое удостоверение.
- Взаимодействие с веб-приложением.
Примечание.
Это руководство аналогично учебнику по службе приложений Deploy веб-приложение Python Django с PostgreSQL в Azure, но использует системное управляемое удостоверение без пароля с управлением доступом на основе ролей Azure для доступа к другим ресурсам Azure. В разделе "Создание подключения службы без пароля" этой статьи показано, как соединитель служб упрощает процесс подключения.
Веб-приложение использует класс DefaultAzureCredential клиентской библиотеки Python Azure Identity для автоматического обнаружения наличия управляемого удостоверения и доступа к другим ресурсам.
Необходимые условия
Подписка Azure с разрешениями на запись и назначение ролей для ресурсов учебника в регионе Azure, который поддерживает Service Connector и имеет достаточные квоты и поддержку службы приложений.
Azure Cloud Shell для выполнения инструкций руководства или локального выполнения:
- Установите Azure CLI 2.30.0 или более поздней версии. Чтобы проверить версию, выполните команду
az --version. Чтобы обновить, выполните командуaz upgrade. - Войдите в Azure с помощью
az loginи следуя инструкциям.
- Установите Azure CLI 2.30.0 или более поздней версии. Чтобы проверить версию, выполните команду
Настройка среды
Убедитесь, что ваша подписка зарегистрирована для использования поставщиков ресурсов
Майкрософт.ServiceLinkerиМайкрософт.DBforPostgreSQL. В противном случае запуститеaz provider register -n Майкрософт.[name of service]для регистрации поставщиков.Установите следующие Azure CLI расширения:
az extension add --name serviceconnector-passwordless --upgrade az extension add --name rdbms-connect
Клонируйте образец приложения
Клонируйте пример репозитория приложений.
git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless.gitКроме того, вы можете скачать приложение из https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless и распакуйте его в папку с именем serviceconnector-webapp-postgresql-django-passwordless.
Измените каталоги в папку репозитория с помощью
cd serviceconnector-webapp-postgresql-django-passwordlessи выполните все остальные команды из этой папки.
В примере приложения рабочие параметры веб-приложения находятся в файле azuresite/production.py . Параметры разработки находятся в azuresite/settings.py. Рабочие параметры настраивают Django для запуска в любой рабочей среде и не относятся к службе приложений.
Приложение использует рабочие параметры при задании переменной WEBSITE_HOSTNAME среды. Автоматически Azure служба приложений для строк подключения Postgres задает эту переменную как URL-адрес веб-приложения, например https://msdocs-django.azurewebsites.net.
Дополнительные сведения см. в контрольном списке развертывания Django. Также см. параметры Production для Django на Azure.
Определение начальных переменных среды
Следующий код определяет необходимые переменные среды для этого руководства.
-
LOCATIONдолжен быть регионом Azure, где ваша подписка имеет достаточную квоту для создания ресурсов и обеспечивает неограниченный доступ к База данных Azure для PostgreSQL. -
ADMIN_PWдолжен содержать от 8 до 128 символов в трех из четырех категорий: заглавных букв, строчных букв, чисел и неалфавитных символов, за исключением$.
Настройте следующие переменные среды, заменив
<region><database password>заполнители допустимыми значениями.LOCATION="<region>" 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="<database password>"Создайте группу ресурсов , чтобы содержать все ресурсы проекта. Имя группы ресурсов кэшируется и автоматически применяется к следующим командам.
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Развертывание кода приложения в Службе приложений
Создайте узел приложения в Службе приложений и разверните пример кода приложения на этом узле. Команда az webapp up выполняет следующие действия:
- Создает план службы приложений в ценовой категории "Базовый" (B1).
- Создает приложение службы приложений.
- Включает ведение журнала по умолчанию для приложения.
- Закачивает репозиторий с помощью ZIP-развертывания, с включенной автоматизацией сборки.
- Создает приложение.
В коде sku определяется ЦП, память и стоимость плана службы приложений. План службы "Базовый" (B1) предусматривает небольшую стоимость в подписке Azure. Вы можете опустить --sku параметр для использования номера SKU по умолчанию, обычно P1v3 (Premium версии 3). Полный список планов службы приложений см. в разделе "Цены на службу приложений".
В папке репозитория serviceconnector-webapp-postgresql-django-passwordless выполните следующую
az webapp upкоманду:az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.10 \ --sku B1Примечание.
Развертывание занимает несколько минут, и команда может зависать или истекать время ожидания, особенно в SKU уровня "Базовый". После успешной сборки приложения и появления выходных данных
Starting the site, можно выйти из команды, нажав клавиши Ctrl+C.Настройте приложение для использования репозитория start.sh файла, выполнив команду az webapp config set .
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
Создание базы данных Postgres в Azure
Создайте базу данных База данных Azure для PostgreSQL для хранения сведений о приложении. Команда az postgres flexible-server create создает гибкий сервер База данных Azure для PostgreSQL в указанной группе ресурсов:
- Имя сервера, указанное в параметре
--name. Имя должно быть уникальным во всей Azure. - Номер SKU, указанный в параметре
--sku-name. - Имя пользователя и пароль учетной записи администратора, указанные в параметрах
--admin-userи--admin-password.
Создайте сервер База данных Azure для PostgreSQL. Если появится запрос на включение доступа к текущему 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 \ --microsoft-entra-auth EnabledЕсли вам не будет предложено включить доступ к текущему IP-адресу клиента, настройте правило брандмауэра на сервере с помощью команды az postgres flexible-server firewall-rule create . Это правило позволяет локальной среде обращаться к серверу.
IP_ADDRESS=<your IP address> 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 address>в команде. Например, можно использовать 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;'
Создание подключения службы без пароля
Используйте az webapp connection create postgres-flexible, чтобы добавить сервисный коннектор, который осуществляет подключение веб-приложения Azure к базе данных Postgres с помощью проверки подлинности управляемой идентичности без пароля. Следующая команда настраивает База данных Azure для PostgreSQL для использования управляемого удостоверения и ролевого управления доступом в Azure. В выходных данных команды перечисляются действия, выполняемые Service Connector.
Команда создает переменную среды с именем AZURE_POSTGRESQL_CONNECTIONSTRING , которая предоставляет сведения о подключении к базе данных для приложения. Код приложения обращается к переменным среды приложения, например, при помощи операторов, таких как os.environ.get('AZURE_POSTGRESQL_HOST'). Дополнительные сведения см. в разделе "Переменные среды Access".
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
Создание и подключение к учетной записи хранения
Используйте az webapp connection create storage-blob для создания учетной записи хранения Azure и подключения службы. Команда выполняет следующие действия:
- Включает системно назначаемое управляемое удостоверение для веб-приложения.
- Добавляет в новую учетную запись хранения веб-приложение с ролью Участник данных BLOB-объектов хранилища.
- Настраивает сеть учетной записи хранения для приема доступа из веб-приложения.
- Создает переменную среды с именем
AZURE_STORAGEBLOB_RESOURCEENDPOINTдля учетной записи служба хранилища Azure.
Выполните следующую команду, чтобы создать учетную запись хранения и подключение:
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Используйте az storage container create для создания контейнера с именем
photosв учетной записи хранения и разрешения анонимного общедоступного доступа на чтение блобов в новом контейнере.# 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
Откройте и проверьте веб-приложение Azure "Обзор ресторана". Приложение использует пакет azure.identity и его DefaultAzureCredential класс. Когда приложение выполняется в Azure, DefaultAzureCredential автоматически обнаруживает, когда управляемое удостоверение существует у службы приложений, и использует его для доступа к ресурсам служба хранилища Azure и База данных Azure для PostgreSQL. Приложению не нужно предоставлять ключи хранения, сертификаты или учетные данные для доступа к этим ресурсам.
Для локальной установки Azure CLI можно использовать
az webapp browseдля открытия приложения в браузере по умолчанию:az webapp browse --name $APP_SERVICE_NAME.azurewebsites.net --resource-group $RESOURCE_GROUP_NAMEAzure Cloud Shell не удается открыть локальный браузер, поэтому он не поддерживает команду
az webapp browse. В Cloud Shell самый простой способ открыть веб-приложение — выбрать ссылку Default domain в правом верхнем углу страницы портала Azure данного приложения.
Для запуска приложения может потребоваться несколько минут. Если вы видите страницу приложения по умолчанию, которая не является примером приложения, подождите минуту и обновите браузер.
Проверьте функциональные возможности примера приложения, добавив ресторан и некоторые отзывы с фотографиями. Приложение должно выглядеть следующим образом:
Очистка ресурсов
Чтобы избежать текущих расходов, можно удалить ресурсы, созданные для этого руководства, удалив группу ресурсов, содержащую их. Перед выполнением команды убедитесь, что приложение или ресурсы больше не нужны.
az group delete --name $RESOURCE_GROUP_NAME --no-wait
Удаление всех ресурсов может занять некоторое время. Аргумент --no-wait позволяет команде немедленно вернуться.
Troubleshooting
Если у вас возникли проблемы с выполнением этого руководства, ознакомьтесь со следующими ресурсами:
- Устранение неполадок Python приложений на Linux для службы Служба приложений Azure
- Запрос в службу поддержки