Развертывание веб-приложения Python (Flask) с помощью PostgreSQL в Azure
В этом руководстве вы развернете веб-приложение Python на основе данных (Flask) в службе приложение Azure с помощью службы реляционной базы данных База данных Azure для PostgreSQL. поддержка службы приложение AzurePython в среде сервера Linux. Если вы хотите, ознакомьтесь с руководством по Django или учебником FastAPI.
В этом руководстве описано следующее:
- Создание защищенной по умолчанию архитектуры кэша Служба приложений, PostgreSQL и Redis.
- Защита секретов подключения с помощью управляемого удостоверения и ссылок Key Vault.
- Разверните пример приложения Python для Служба приложений из репозитория GitHub.
- Доступ к Служба приложений строка подключения и параметрам приложения в коде приложения.
- Создание обновлений и повторное развертывание кода приложения.
- Создайте схему базы данных путем выполнения миграции базы данных.
- Потоковая передача журналов диагностики из Azure.
- Управление приложением в портал Azure.
- Подготовьте ту же архитектуру и разверните с помощью Интерфейса командной строки разработчика Azure.
- Оптимизируйте рабочий процесс разработки с помощью GitHub Codespaces и GitHub Copilot.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
- Учетная запись GitHub. Вы также можете получить его бесплатно.
- Знание Python с разработкой Flask.
- (Необязательно) Чтобы попробовать GitHub Copilot, учетная запись GitHub Copilot. Доступна 30-дневная бесплатная пробная версия.
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
- Установлен интерфейс командной строки разработчика Azure. Вы можете выполнить действия с помощью Azure Cloud Shell , так как он уже установлен с помощью Интерфейса командной строки разработчика Azure.
- Знание Python с разработкой Flask.
- (Необязательно) Чтобы попробовать GitHub Copilot, учетная запись GitHub Copilot. Доступна 30-дневная бесплатная пробная версия.
Перейти к концу
Если вы просто хотите просмотреть пример приложения в этом руководстве, работающем в Azure, просто выполните следующие команды в Azure Cloud Shell и следуйте указаниям:
mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up
1. Запустите пример
Сначала вы настраиваете пример приложения на основе данных в качестве отправной точки. Для удобства пример репозитория включает конфигурацию контейнера разработки. Контейнер разработки имеет все необходимое для разработки приложения, включая базу данных, кэш и все переменные среды, необходимые образцу приложения. Контейнер разработки может выполняться в пространстве кода GitHub, что означает, что вы можете запустить пример на любом компьютере с веб-браузером.
Примечание.
Если вы используете это руководство вместе с вашим приложением, ознакомьтесь с описанием файла requirements.txt в README.md , чтобы узнать, какие пакеты потребуется.
Шаг 1. В новом окне браузера:
- Войдите в свою учетную запись GitHub.
- Перейдите к https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
- Отмена выбора только для копирования основной ветви. Вы хотите, чтобы все ветви.
- Щелкните Создать вилку.
Шаг 2. В вилке GitHub:
- Выберите основную начальную>ветвь без инфраструктуры для начальной ветви. Эта ветвь содержит только пример проекта и не содержит файлов или конфигурации, связанных с Azure.
- Выберите пространство кода "Создать код>" на начальном экране без инфраструктуры.
Пространство кода занимает несколько минут, и оно выполняется
pip install -r requirements.txt
для репозитория в конце.
Шаг 3. В терминале пространства кода:
- Запуск миграции базы данных с
flask db upgrade
помощью . - Запустите приложение, выполнив команду
flask run
. - Когда появится уведомление
Your application running on port 5000 is available.
, нажмите кнопку "Открыть в браузере". Пример приложения должен отображаться на новой вкладке браузера. Чтобы остановить приложение, введитеCtrl
+C
.
Совет
Вы можете попросить GitHub Copilot об этом репозитории. Например:
- @workspace Что делает этот проект?
- @workspace Что делает папка devcontainer?
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
2. Создание Служба приложений и PostgreSQL
В этом шаге вы создадите ресурсы Azure. Действия, используемые в этом руководстве, создают набор безопасных ресурсов по умолчанию, включающих Служба приложений и База данных Azure для PostgreSQL. Для процесса создания укажите:
-
Имя веб-приложения. Он используется в качестве части DNS-имени приложения в виде
https://<app-name>-<hash>.<region>.azurewebsites.net
. - Регион для физического запуска приложения. Он также используется в качестве части DNS-имени приложения.
- Стек среды выполнения для приложения. Здесь вы выбираете версию Python, используемую для вашего приложения.
- План размещения для приложения. Это ценовая категория, которая включает набор функций и емкость масштабирования для вашего приложения.
- Группа ресурсов для приложения. Группа ресурсов позволяет группировать (в логическом контейнере) все ресурсы Azure, необходимые для приложения.
Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.
Шаг 1. В портал Azure:
- Введите "веб-приложение база данных" в строке поиска в верхней части портала Azure.
- Выберите элемент с меткой Веб-приложение и база данных под заголовком Marketplace. Вы также можете перейти напрямую к мастеру создания.
Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.
- Группа ресурсов: выберите "Создать" и используйте имя msdocs-flask-postgres-tutorial.
- Регион: любой регион Azure рядом с вами.
- Имя: msdocs-python-postgres-XYZ.
- Стек среды выполнения: Python 3.12.
- База данных: PostgreSQL — гибкий сервер по умолчанию выбирается в качестве ядра СУБД. Имя сервера и имя базы данных также задаются по умолчанию соответствующими значениями.
- Добавьте Кэш Azure для Redis?: Нет.
- План размещения: базовый. Когда вы будете готовы, вы можете масштабировать до рабочей ценовой категории.
- Выберите Review + create (Просмотреть и создать).
- После завершения проверки щелкните Создать.
Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку Перейти к ресурсу. Вы перейдете непосредственно в приложение Службы приложений, но будут созданы следующие ресурсы:
- Группа ресурсов: контейнер для всех созданных ресурсов.
- Служба приложений план. Определяет вычислительные ресурсы для Служба приложений. Создается план Linux на уровне Базовый.
- Служба приложений. Представляет приложение и запускается в плане Служба приложений.
- Виртуальная сеть: интегрированная с приложением Служба приложений и изолирует внутренний сетевой трафик.
- Сетевые интерфейсы: представляет частные IP-адреса, по одному для каждой из частных конечных точек.
- База данных Azure для PostgreSQL гибкий сервер: доступен только из виртуальной сети. База данных и пользователь создаются на этом сервере.
- Частная зона DNS зоны: включает разрешение DNS хранилища ключей и сервера базы данных в виртуальной сети.
3. Безопасные секреты подключения
Мастер создания создал переменные подключения для вас уже в качестве параметров приложения. Однако рекомендуется сохранить секреты из Служба приложений полностью. Вы переместите секреты в хранилище ключей и измените параметры приложения на ссылки Key Vault с помощью соединителей служб.
Шаг 1. Получение существующего строка подключения
- В меню слева на странице Служба приложений выберите переменные среды "Параметры>".
- Выберите AZURE_POSTGRESQL_CONNECTIONSTRING.
- В разделе "Добавление и изменение параметра приложения" в поле "Значение " найдите часть password= в конце строки.
- Скопируйте строку пароля после password= для последующего использования. Этот параметр приложения позволяет подключиться к базе данных Postgres, защищенной за частной конечной точкой. Однако секрет сохраняется непосредственно в приложении Служба приложений, что не является лучшим. Вы измените это.
Шаг 2. Создание хранилища ключей для безопасного управления секретами
- В верхней строке поиска введите "хранилище ключей", а затем выберите Marketplace>Key Vault.
- В группе ресурсов выберите msdocs-python-postgres-tutorial.
- В имени хранилища ключей введите имя, состоящее только из букв и чисел.
- В регионе задайте для него то же расположение, что и группа ресурсов.
Шаг 3. Защита хранилища ключей с помощью частной конечной точки
- Перейдите на вкладку Сеть.
- Отмена выбора включения общедоступного доступа.
- Выберите "Создать частную конечную точку".
- В группе ресурсов выберите msdocs-python-postgres-tutorial.
- В диалоговом окне в расположении выберите то же расположение, что и приложение Служба приложений.
- В поле Name введите msdocs-python-postgres-XYZVaultEndpoint.
- В виртуальной сети выберите msdocs-python-postgres-XYZVnet.
- В подсети msdocs-python-postgres-XYZSubnet.
- Нажмите ОК.
- Выберите Проверить и создать, а затем выберите Создать. Дождитесь завершения развертывания хранилища ключей. Должно появиться сообщение "Развертывание завершено".
Шаг 4. Настройка соединителя PostgreSQL
- В верхней строке поиска введите msdocs-python-postgres, а затем выберите ресурс Служба приложений с именем msdocs-python-postgres-XYZ.
- На странице Служба приложений в меню слева выберите "Параметры > соединителя службы". У вас уже есть соединитель, созданный мастером создания приложения.
- Установите флажок рядом с соединителем PostgreSQL, а затем нажмите кнопку "Изменить".
- В типе клиента выберите Django. Несмотря на то что у вас есть приложение Flask, тип клиента Django в соединителе службы PostgreSQL предоставляет переменные базы данных в отдельных параметрах вместо одного строка подключения. Отдельные переменные проще использовать в коде приложения, который использует SQLAlchemy для подключения к базе данных.
- Выберите вкладку Аутентификация.
- Вставьте пароль, скопированный ранее.
- Выберите "Сохранить секрет" в Key Vault.
- В разделе "Подключение к Key Vault" выберите "Создать". Диалоговое окно создания подключения открывается поверх диалогового окна редактирования.
Шаг 5. Установка подключения к Key Vault
- В диалоговом окне "Создание подключения" для подключения Key Vault в Key Vault выберите созданное ранее хранилище ключей.
- Выберите Review + Create (Просмотреть и создать).
- После завершения проверки нажмите кнопку "Создать".
Шаг 6. Завершение параметров соединителя PostgreSQL
- Вы вернеесь в диалоговом окне редактирования для defaultConnector. На вкладке "Проверка подлинности" дождитесь создания соединителя хранилища ключей. По завершении раскрывающийся список подключения Key Vault автоматически выбирает его.
- Выберите Далее: сеть.
- Выберите Сохранить. Подождите, пока появится уведомление об успешном обновлении.
Шаг 7. Проверка интеграции Key Vault
Чтобы свести к сводные данные, процесс защиты секретов подключения:
- Получение секретов подключения из переменных среды приложения Служба приложений.
- Создание хранилища ключей.
- Создание подключения Key Vault с управляемым удостоверением, назначаемого системой.
- Обновление соединителей служб для хранения секретов в хранилище ключей.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
4. Развертывание примера кода
На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждый git push
из репозитория GitHub запускает действие сборки и развертывания.
Шаг 1. В меню слева выберите центр развертывания>.
Шаг 2. На странице Центра развертывания:
- В поле Источник выберите GitHub. По умолчанию в качестве поставщика сборки выбрано GitHub Actions.
- Войдите в свою учетную запись GitHub и следуйте инструкциям по авторизации Azure.
- В поле Организация выберите свою учетную запись.
- В репозитории выберите msdocs-flask-postgresql-sample-app.
- В ветви выберите starter-no-infra. Это та же ветвь, в которую вы работали с примером приложения, без файлов или конфигурации, связанных с Azure.
- Для типа проверки подлинности выберите удостоверение, назначаемое пользователем.
- В меню сверху выберите Сохранить.
Служба приложений фиксирует файл рабочего процесса в выбранном репозитории GitHub в каталоге
.github/workflows
. По умолчанию центр развертывания создает назначаемое пользователем удостоверение для рабочего процесса для проверки подлинности с помощью Microsoft Entra (проверка подлинности OIDC). Дополнительные сведения о вариантах проверки подлинности см. в статье "Развертывание в Служба приложений с помощью GitHub Actions".
Шаг 3. Вернитесь в пространство кода GitHub примера вилки, выполните команду git pull origin starter-no-infra
.
Это извлекает только что зафиксированный файл рабочего процесса в пространство кода.
Шаг 4 (вариант 1: с GitHub Copilot):
- Запустите новый сеанс чата, выбрав представление чата, а затем выберите +.
- Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое описание
SQLAlchemy
настройки URI подключения в azureproject/development.py и azureproject/production.py. - Спросите: "@workspace В рабочем режиме мое приложение работает в веб-приложении Служба приложений, которое использует соединитель службы Azure для подключения к гибкому серверу PostgreSQL с помощью типа клиента Django. Что такое имена переменных среды, которые мне нужно использовать? Copilot может дать вам предложение по коду, аналогичное варианту 2: без действий GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в файл azureproject/production.py.
- Откройте azureproject/production.py в обозревателе и добавьте предложение кода. GitHub Copilot не дает вам одинаковый ответ каждый раз, и это не всегда правильно. Вам может потребоваться задать дополнительные вопросы, чтобы точно настроить ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".
Шаг 4 (вариант 2: без GitHub Copilot):
- Откройте Program.cs в обозревателе.
- Найдите закомментируемый код (строки 3-8) и раскомментируйте его.
При этом создается строка подключения для SQLAlchemy с помощью
AZURE_POSTGRESQL_USER
,AZURE_POSTGRESQL_PASSWORD
иAZURE_POSTGRESQL_HOST
AZURE_POSTGRESQL_NAME
.
Шаг 5.
- Выберите расширение Система управления версиями.
- В текстовом поле введите сообщение фиксации, например
Configure Azure database connecton
. Кроме того, выберите и позвольте GitHub Copilot создать сообщение о фиксации. - Нажмите кнопку "Зафиксировать", а затем подтвердите значение "Да".
- Нажмите кнопку "Синхронизировать изменения 1", а затем нажмите кнопку "ОК".
Шаг 6. Назад на странице Центра развертывания в портал Azure:
- Перейдите на вкладку "Журналы" , а затем нажмите кнопку "Обновить ", чтобы увидеть новое выполнение развертывания.
- В элементе журнала для запуска развертывания выберите запись "Сборка и развертывание журналов " с последней меткой времени.
Шаг 7. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборку и развертывание. Дождитесь запуска GitHub, чтобы отобразить состояние успешности. Это занимает около 5 минут.
Возникли проблемы? Ознакомьтесь с руководством по устранению неполадок.
5. Создание схемы базы данных
При использовании базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в Служба приложений.
Шаг 1. Назад на странице Служба приложений в меню слева
- Выберите SSH средств разработки>.
- Выберите Выполнить.
Шаг 2. В сеансе SSH выполните команду flask db upgrade
. При успешном завершении Служба приложений успешно подключается к базе данных.
Совет
В сеансе SSH только изменения в файлах могут /home
сохраняться после перезапуска приложения. Изменения за пределами /home
не сохраняются.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
6. Перейдите к приложению
Шаг 1. На странице Служба приложений:
- В меню слева выберите Обзор.
- Выберите URL-адрес своего приложения.
Шаг 2. Добавьте в список несколько ресторанов. Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для PostgreSQL.
7. Потоковая передача журналов диагностики
служба приложение Azure записывает все журналы консоли для диагностики проблем с приложением. Пример приложения включает инструкции print()
для демонстрации этой возможности, как показано ниже.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
Шаг 1. На странице Служба приложений:
- В меню слева выберите "Мониторинг> Служба приложений журналы.
- Под элементом Ведение журнала приложения выберите Файловая система.
- В меню сверху выберите Сохранить.
Шаг 2. В меню слева выберите поток журналов. Вы увидите журналы для своего приложения, включая журналы платформы и журналы из контейнера.
Дополнительные сведения о ведении журнала в приложениях Python в серии о настройке Azure Monitor для приложения Python.
8. Очистка ресурсов
По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.
Шаг 1. В строке поиска в верхней части портал Azure:
- Введите имя группы ресурсов.
- Выберите группу ресурсов.
Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".
Шаг 3.
- Введите имя группы ресурсов для подтверждения удаления.
- Выберите команду Удалить.
2. Создание ресурсов Azure и развертывание примера приложения
На этом шаге вы создадите ресурсы Azure и развернете пример приложения для Служба приложений в Linux. Действия, используемые в этом руководстве, создают набор безопасных ресурсов по умолчанию, включающих Служба приложений и База данных Azure для PostgreSQL.
Контейнер разработки уже имеет интерфейс командной строки разработчика Azure (AZD).
Выполните команду
azd init
из корневого каталога репозитория.azd init --template python-app-service-postgresql-infra
При появлении запроса укажите следующие ответы:
Вопрос Ответ Текущий каталог не пуст. Вы хотите инициализировать проект здесь в каталоге<>? Y Что вы хотите сделать с этими файлами? Сохранение существующих файлов без изменений Введите новое имя среды Введите уникальное имя. Шаблон AZD использует это имя как часть DNS-имени веб-приложения в Azure ( <app-name>-<hash>.azurewebsites.net
). Разрешены буквенно-цифровые символы и дефисы.Войдите в Azure, выполнив
azd auth login
команду и выполнив следующую команду:azd auth login
Создайте необходимые ресурсы Azure с
azd provision
помощью команды. Следуйте запросу, чтобы выбрать нужную подписку и расположение для ресурсов Azure.azd provision
Выполнение
azd provision
команды занимает около 15 минут (кэш Redis занимает больше всего времени). Позже вы измените код, чтобы работать с Служба приложений и развертывать изменения сazd deploy
помощью. Во время выполнения команда предоставляет сообщения о процессе подготовки и развертывания, включая ссылку на развертывание в Azure.Этот шаблон AZD содержит файлы (azure.yaml и инфракрасныйкаталог), создающие безопасную архитектуру по умолчанию со следующими ресурсами Azure:
- Группа ресурсов: контейнер для всех созданных ресурсов.
- Служба приложений план. Определяет вычислительные ресурсы для Служба приложений. Создается план Linux на уровне Базовый.
- Служба приложений. Представляет приложение и запускается в плане Служба приложений.
- Виртуальная сеть: интегрированная с приложением Служба приложений и изолирует внутренний сетевой трафик.
- Частные конечные точки: доступ к конечным точкам для хранилища ключей и кэша Redis в виртуальной сети.
- Сетевые интерфейсы: представляет частные IP-адреса, по одному для каждой из частных конечных точек.
- База данных Azure для PostgreSQL гибкий сервер: доступен только из виртуальной сети. База данных и пользователь создаются на этом сервере.
- Частная зона DNS зона: включает разрешение DNS сервера PostgreSQL в виртуальной сети.
- Рабочая область Log Analytics: выступает в качестве целевого контейнера для вашего приложения для отправки журналов, где можно также запрашивать журналы.
- Кэш Azure для Redis: доступен только от частной конечной точки.
- Хранилище ключей: доступно только из своей частной конечной точки. Используется для управления секретами для приложения Служба приложений.
Когда команда завершит создание ресурсов и развертывание кода приложения в первый раз, развернутое пример приложения еще не работает, так как необходимо внести небольшие изменения, чтобы подключиться к базе данных в Azure.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
3. Использование базы данных строка подключения
Шаблон AZD, который вы используете, создали переменные подключения для вас уже в качестве параметров приложения и выводит их в терминал для удобства. Параметры приложения — это один из способов сохранения секретов подключения из репозитория кода.
В выходных
AZURE_POSTGRESQL_USER
данных AZD найдите параметры ,AZURE_POSTGRESQL_PASSWORD
иAZURE_POSTGRESQL_HOST
AZURE_POSTGRESQL_NAME
. Чтобы обеспечить безопасность секретов, отображаются только имена параметров. Они выглядят следующим образом в выходных данных AZD:App Service app has the following connection settings: - AZURE_POSTGRESQL_NAME - AZURE_POSTGRESQL_HOST - AZURE_POSTGRESQL_USER - AZURE_POSTGRESQL_PASSWORD - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
Для удобства шаблон AZD отображает прямую ссылку на страницу параметров приложения. Найдите ссылку и откройте ее на новой вкладке браузера.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
4. Изменение примера кода и повторное развертывание
В пространстве кода GitHub запустите новый сеанс чата, выбрав представление чата, а затем выберите +.
Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое описание
SQLAlchemy
настройки URI подключения в azureproject/development.py и azureproject/production.py.Спросите: "@workspace В рабочем режиме мое приложение работает в веб-приложении Служба приложений, которое использует соединитель службы Azure для подключения к гибкому серверу PostgreSQL с помощью типа клиента Django. Что такое имена переменных среды, которые мне нужно использовать? Copilot может дать вам предложение по коду, аналогичное варианту 2: без действий GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в файл azureproject/production.py.
Откройте azureproject/production.py в обозревателе и добавьте предложение кода.
GitHub Copilot не дает вам одинаковый ответ каждый раз, и это не всегда правильно. Вам может потребоваться задать дополнительные вопросы, чтобы точно настроить ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".
В окне терминале выполните команду
azd deploy
.azd deploy
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
5. Создание схемы базы данных
При использовании базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в Служба приложений.
В выходных данных AZD найдите URL-адрес сеанса SSH и перейдите к нему в браузере. Это выглядит следующим образом в выходных данных:
Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
В сеансе SSH выполните команду
flask db upgrade
. При успешном завершении Служба приложений успешно подключается к базе данных.Примечание.
После перезапуска приложения могут сохраняться только изменения в файлах в
/home
. Изменения за пределами/home
не сохраняются.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
6. Перейдите к приложению
В выходных данных AZD найдите URL-адрес приложения и перейдите к нему в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Добавьте несколько ресторанов в список.
Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для PostgreSQL.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
7. Потоковая передача журналов диагностики
служба приложение Azure может записывать журналы консоли для диагностики проблем с приложением. Для удобства шаблон AZD уже включает ведение журнала в локальную файловую систему и отправляет журналы в рабочую область Log Analytics.
Пример приложения содержит print()
инструкции для демонстрации этой возможности, как показано в следующем фрагменте кода.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
В выходных данных AZD найдите ссылку для потоковой передачи журналов Служба приложений и перейдите к нему в браузере. Ссылка выглядит следующим образом в выходных данных AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Дополнительные сведения о ведении журнала в приложениях Python в серии о настройке Azure Monitor для приложения Python.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
8. Очистка ресурсов
Чтобы удалить все ресурсы Azure в текущей среде развертывания, выполните azd down
и следуйте инструкциям.
azd down
Устранение неполадок
Ниже приведены проблемы, которые могут возникнуть при попытке работы с этим руководством и инструкциями по их устранению.
Не удается подключиться к сеансу SSH
Если вы не можете подключиться к сеансу SSH, само приложение не удалось запустить. Дополнительные сведения см. в журналах диагностики . Например, если вы видите ошибку, KeyError: 'AZURE_POSTGRESQL_HOST'
это может означать, что переменная среды отсутствует (возможно, вы удалили параметр приложения).
При выполнении миграции базы данных возникает ошибка
Если возникают какие-либо ошибки, связанные с подключением к базе данных, проверьте, были ли изменены или удалены параметры приложения (AZURE_POSTGRESQL_USER
, AZURE_POSTGRESQL_PASSWORD
, AZURE_POSTGRESQL_HOST
и AZURE_POSTGRESQL_NAME
) . Без этого строка подключения команда миграции не может взаимодействовать с базой данных.
Часто задаваемые вопросы
- Сколько стоит такая конфигурация?
- Разделы справки подключиться к серверу PostgreSQL, защищенному за виртуальной сетью с другими средствами?
- Как осуществляется разработка локальных приложений с использованием GitHub Actions?
- Разделы справки ошибки отладки во время развертывания GitHub Actions?
- У меня нет разрешений на создание удостоверения, назначаемого пользователем
- Что можно сделать с помощью GitHub Copilot в моем пространстве кода?
Сколько стоит такая конфигурация?
Цены на созданные ресурсы приведены следующим образом:
- План службы приложений создается на уровне Базовый, и его можно масштабировать вверх или вниз. См. цены на Службу приложений.
- Гибкий сервер PostgreSQL создается на самом низком уровне с максимальным объемом памяти Standard_B1ms с минимальным размером хранилища, который можно масштабировать вверх или вниз. Цены на Базу данных Azure для PostgreSQL.
- Плата за виртуальную сеть не взимается, если только вы не настроите дополнительные функциональные возможности, такие как пиринг. См. цены на виртуальные сети Azure.
- За частную зону DNS взимается небольшая плата. См. цены на Azure DNS.
Разделы справки подключиться к серверу PostgreSQL, защищенному за виртуальной сетью с другими средствами?
- Для базового доступа из программы командной строки можно запустить
psql
из сеанса SSH приложения. - Чтобы подключиться из классического средства, компьютер должен находиться в виртуальной сети. Например, это может быть виртуальная машина Azure, подключенная к одной из подсетей, или компьютер в локальной сети с VPN-подключением типа "сеть — сеть" к виртуальной сети Azure.
- Вы также можете интегрировать Azure Cloud Shell с виртуальной сетью.
Как осуществляется разработка локальных приложений с использованием GitHub Actions?
Используя автоматически созданный файл рабочего процесса из Служба приложений в качестве примера, каждый git push
запускает новую сборку и развертывание. Из локального клона репозитория GitHub необходимо внести необходимые обновления и отправить их в GitHub. Например:
git add .
git commit -m "<some-message>"
git push origin main
Разделы справки ошибки отладки во время развертывания GitHub Actions?
Если шаг завершается ошибкой в файле рабочего процесса GitHub, попробуйте изменить неудающуюся команду, чтобы создать более подробные выходные данные. Например, можно получить дополнительные выходные данные из python
команды, добавив -d
этот параметр. Зафиксируйте и отправьте изменения, чтобы активировать другое развертывание для Служба приложений.
У меня нет разрешений на создание удостоверения, назначаемого пользователем
См. статью "Настройка развертывания GitHub Actions" из Центра развертывания.
Что можно сделать с помощью GitHub Copilot в моем пространстве кода?
Возможно, вы заметили, что представление чата GitHub Copilot уже было там при создании пространства кода. Для удобства мы добавим расширение чата GitHub Copilot в определение контейнера (см . статью .devcontainer/devcontainer.json). Однако вам нужна учетная запись GitHub Copilot (доступна бесплатная пробная версия 30 дней).
Несколько советов для вас при разговоре с GitHub Copilot:
- В одном сеансе чата вопросы и ответы создаются друг на друга, и вы можете настроить свои вопросы, чтобы точно настроить ответ, который вы получаете.
- По умолчанию GitHub Copilot не имеет доступа к файлу в репозитории. Чтобы задать вопросы о файле, сначала откройте файл в редакторе.
- Чтобы разрешить GitHub Copilot получить доступ ко всем файлам в репозитории при подготовке его ответов, начните с вашего вопроса
@workspace
. Дополнительные сведения см. в разделе Use the @workspace agent. - В сеансе чата GitHub Copilot может предложить изменения и (с
@workspace
) даже там, где внести изменения, но не разрешено вносить изменения. Это до вас, чтобы добавить предлагаемые изменения и проверить его.
Следующие шаги
Перейдите к следующему руководству, чтобы узнать, как защитить приложение с помощью личного домена и сертификата.
Узнайте, как Служба приложений запускает приложение Python: