Поделиться через


Развертывание веб-приложения Python (Flask) с помощью PostgreSQL в Azure

В этом руководстве вы развернете веб-приложение Python на основе данных (Flask) в службе приложение Azure с помощью службы реляционной базы данных База данных Azure для PostgreSQL. поддержка службы приложение AzurePython в среде сервера Linux. Если вы хотите, ознакомьтесь с руководством по Django или учебником FastAPI.

Схема архитектуры, на которой показана Служба приложений с базой данных PostgreSQL в Azure.

В этом руководстве описано следующее:

  • Создание защищенной по умолчанию архитектуры кэша Служба приложений, PostgreSQL и Redis.
  • Защита секретов подключения с помощью управляемого удостоверения и ссылок Key Vault.
  • Разверните пример приложения Python для Служба приложений из репозитория GitHub.
  • Доступ к Служба приложений строка подключения и параметрам приложения в коде приложения.
  • Создание обновлений и повторное развертывание кода приложения.
  • Создайте схему базы данных путем выполнения миграции базы данных.
  • Потоковая передача журналов диагностики из Azure.
  • Управление приложением в портал Azure.
  • Подготовьте ту же архитектуру и разверните с помощью Интерфейса командной строки разработчика Azure.
  • Оптимизируйте рабочий процесс разработки с помощью GitHub Codespaces и GitHub Copilot.

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

Перейти к концу

Если вы просто хотите просмотреть пример приложения в этом руководстве, работающем в 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. В новом окне браузера:

  1. Войдите в свою учетную запись GitHub.
  2. Перейдите к https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
  3. Отмена выбора только для копирования основной ветви. Вы хотите, чтобы все ветви.
  4. Щелкните Создать вилку.

Шаг 2. В вилке GitHub:

  1. Выберите основную начальную>ветвь без инфраструктуры для начальной ветви. Эта ветвь содержит только пример проекта и не содержит файлов или конфигурации, связанных с Azure.
  2. Выберите пространство кода "Создать код>" на начальном экране без инфраструктуры. Пространство кода занимает несколько минут, и оно выполняется pip install -r requirements.txt для репозитория в конце.

Шаг 3. В терминале пространства кода:

  1. Запуск миграции базы данных с flask db upgradeпомощью .
  2. Запустите приложение, выполнив команду flask run.
  3. Когда появится уведомление 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:

  1. Введите "веб-приложение база данных" в строке поиска в верхней части портала Azure.
  2. Выберите элемент с меткой Веб-приложение и база данных под заголовком Marketplace. Вы также можете перейти напрямую к мастеру создания.

Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.

  1. Группа ресурсов: выберите "Создать" и используйте имя msdocs-flask-postgres-tutorial.
  2. Регион: любой регион Azure рядом с вами.
  3. Имя: msdocs-python-postgres-XYZ.
  4. Стек среды выполнения: Python 3.12.
  5. База данных: PostgreSQL — гибкий сервер по умолчанию выбирается в качестве ядра СУБД. Имя сервера и имя базы данных также задаются по умолчанию соответствующими значениями.
  6. Добавьте Кэш Azure для Redis?: Нет.
  7. План размещения: базовый. Когда вы будете готовы, вы можете масштабировать до рабочей ценовой категории.
  8. Выберите Review + create (Просмотреть и создать).
  9. После завершения проверки щелкните Создать.

Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку Перейти к ресурсу. Вы перейдете непосредственно в приложение Службы приложений, но будут созданы следующие ресурсы:

  • Группа ресурсов: контейнер для всех созданных ресурсов.
  • Служба приложений план. Определяет вычислительные ресурсы для Служба приложений. Создается план Linux на уровне Базовый.
  • Служба приложений. Представляет приложение и запускается в плане Служба приложений.
  • Виртуальная сеть: интегрированная с приложением Служба приложений и изолирует внутренний сетевой трафик.
  • Сетевые интерфейсы: представляет частные IP-адреса, по одному для каждой из частных конечных точек.
  • База данных Azure для PostgreSQL гибкий сервер: доступен только из виртуальной сети. База данных и пользователь создаются на этом сервере.
  • Частная зона DNS зоны: включает разрешение DNS хранилища ключей и сервера базы данных в виртуальной сети.

3. Безопасные секреты подключения

Мастер создания создал переменные подключения для вас уже в качестве параметров приложения. Однако рекомендуется сохранить секреты из Служба приложений полностью. Вы переместите секреты в хранилище ключей и измените параметры приложения на ссылки Key Vault с помощью соединителей служб.

Шаг 1. Получение существующего строка подключения

  1. В меню слева на странице Служба приложений выберите переменные среды "Параметры>".
  2. Выберите AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. В разделе "Добавление и изменение параметра приложения" в поле "Значение " найдите часть password= в конце строки.
  4. Скопируйте строку пароля после password= для последующего использования. Этот параметр приложения позволяет подключиться к базе данных Postgres, защищенной за частной конечной точкой. Однако секрет сохраняется непосредственно в приложении Служба приложений, что не является лучшим. Вы измените это.

Шаг 2. Создание хранилища ключей для безопасного управления секретами

  1. В верхней строке поиска введите "хранилище ключей", а затем выберите Marketplace>Key Vault.
  2. В группе ресурсов выберите msdocs-python-postgres-tutorial.
  3. В имени хранилища ключей введите имя, состоящее только из букв и чисел.
  4. В регионе задайте для него то же расположение, что и группа ресурсов.

Шаг 3. Защита хранилища ключей с помощью частной конечной точки

  1. Перейдите на вкладку Сеть.
  2. Отмена выбора включения общедоступного доступа.
  3. Выберите "Создать частную конечную точку".
  4. В группе ресурсов выберите msdocs-python-postgres-tutorial.
  5. В диалоговом окне в расположении выберите то же расположение, что и приложение Служба приложений.
  6. В поле Name введите msdocs-python-postgres-XYZVaultEndpoint.
  7. В виртуальной сети выберите msdocs-python-postgres-XYZVnet.
  8. В подсети msdocs-python-postgres-XYZSubnet.
  9. Нажмите ОК.
  10. Выберите Проверить и создать, а затем выберите Создать. Дождитесь завершения развертывания хранилища ключей. Должно появиться сообщение "Развертывание завершено".

Шаг 4. Настройка соединителя PostgreSQL

  1. В верхней строке поиска введите msdocs-python-postgres, а затем выберите ресурс Служба приложений с именем msdocs-python-postgres-XYZ.
  2. На странице Служба приложений в меню слева выберите "Параметры > соединителя службы". У вас уже есть соединитель, созданный мастером создания приложения.
  3. Установите флажок рядом с соединителем PostgreSQL, а затем нажмите кнопку "Изменить".
  4. В типе клиента выберите Django. Несмотря на то что у вас есть приложение Flask, тип клиента Django в соединителе службы PostgreSQL предоставляет переменные базы данных в отдельных параметрах вместо одного строка подключения. Отдельные переменные проще использовать в коде приложения, который использует SQLAlchemy для подключения к базе данных.
  5. Выберите вкладку Аутентификация.
  6. Вставьте пароль, скопированный ранее.
  7. Выберите "Сохранить секрет" в Key Vault.
  8. В разделе "Подключение к Key Vault" выберите "Создать". Диалоговое окно создания подключения открывается поверх диалогового окна редактирования.

Шаг 5. Установка подключения к Key Vault

  1. В диалоговом окне "Создание подключения" для подключения Key Vault в Key Vault выберите созданное ранее хранилище ключей.
  2. Выберите Review + Create (Просмотреть и создать).
  3. После завершения проверки нажмите кнопку "Создать".

Шаг 6. Завершение параметров соединителя PostgreSQL

  1. Вы вернеесь в диалоговом окне редактирования для defaultConnector. На вкладке "Проверка подлинности" дождитесь создания соединителя хранилища ключей. По завершении раскрывающийся список подключения Key Vault автоматически выбирает его.
  2. Выберите Далее: сеть.
  3. Выберите Сохранить. Подождите, пока появится уведомление об успешном обновлении.

Шаг 7. Проверка интеграции Key Vault

  1. В меню слева снова выберите переменные среды параметров>.
  2. Рядом с AZURE_POSTGRESQL_PASSWORD выберите "Показать значение". Значение должно быть@Microsoft.KeyVault(...). Это означает, что это ссылка на хранилище ключей, так как секрет теперь управляется в хранилище ключей.

Чтобы свести к сводные данные, процесс защиты секретов подключения:

  • Получение секретов подключения из переменных среды приложения Служба приложений.
  • Создание хранилища ключей.
  • Создание подключения Key Vault с управляемым удостоверением, назначаемого системой.
  • Обновление соединителей служб для хранения секретов в хранилище ключей.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".


4. Развертывание примера кода

На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждый git push из репозитория GitHub запускает действие сборки и развертывания.

Шаг 1. В меню слева выберите центр развертывания>.

Шаг 2. На странице Центра развертывания:

  1. В поле Источник выберите GitHub. По умолчанию в качестве поставщика сборки выбрано GitHub Actions.
  2. Войдите в свою учетную запись GitHub и следуйте инструкциям по авторизации Azure.
  3. В поле Организация выберите свою учетную запись.
  4. В репозитории выберите msdocs-flask-postgresql-sample-app.
  5. В ветви выберите starter-no-infra. Это та же ветвь, в которую вы работали с примером приложения, без файлов или конфигурации, связанных с Azure.
  6. Для типа проверки подлинности выберите удостоверение, назначаемое пользователем.
  7. В меню сверху выберите Сохранить. Служба приложений фиксирует файл рабочего процесса в выбранном репозитории GitHub в каталоге .github/workflows. По умолчанию центр развертывания создает назначаемое пользователем удостоверение для рабочего процесса для проверки подлинности с помощью Microsoft Entra (проверка подлинности OIDC). Дополнительные сведения о вариантах проверки подлинности см. в статье "Развертывание в Служба приложений с помощью GitHub Actions".

Шаг 3. Вернитесь в пространство кода GitHub примера вилки, выполните команду git pull origin starter-no-infra. Это извлекает только что зафиксированный файл рабочего процесса в пространство кода.

Шаг 4 (вариант 1: с GitHub Copilot):

  1. Запустите новый сеанс чата, выбрав представление чата, а затем выберите +.
  2. Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое описание SQLAlchemy настройки URI подключения в azureproject/development.py и azureproject/production.py.
  3. Спросите: "@workspace В рабочем режиме мое приложение работает в веб-приложении Служба приложений, которое использует соединитель службы Azure для подключения к гибкому серверу PostgreSQL с помощью типа клиента Django. Что такое имена переменных среды, которые мне нужно использовать? Copilot может дать вам предложение по коду, аналогичное варианту 2: без действий GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в файл azureproject/production.py.
  4. Откройте azureproject/production.py в обозревателе и добавьте предложение кода. GitHub Copilot не дает вам одинаковый ответ каждый раз, и это не всегда правильно. Вам может потребоваться задать дополнительные вопросы, чтобы точно настроить ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".

Шаг 4 (вариант 2: без GitHub Copilot):

  1. Откройте Program.cs в обозревателе.
  2. Найдите закомментируемый код (строки 3-8) и раскомментируйте его. При этом создается строка подключения для SQLAlchemy с помощью AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORDи AZURE_POSTGRESQL_HOSTAZURE_POSTGRESQL_NAME.

Шаг 5.

  1. Выберите расширение Система управления версиями.
  2. В текстовом поле введите сообщение фиксации, например Configure Azure database connecton. Кроме того, выберите и позвольте GitHub Copilot создать сообщение о фиксации.
  3. Нажмите кнопку "Зафиксировать", а затем подтвердите значение "Да".
  4. Нажмите кнопку "Синхронизировать изменения 1", а затем нажмите кнопку "ОК".

Шаг 6. Назад на странице Центра развертывания в портал Azure:

  1. Перейдите на вкладку "Журналы" , а затем нажмите кнопку "Обновить ", чтобы увидеть новое выполнение развертывания.
  2. В элементе журнала для запуска развертывания выберите запись "Сборка и развертывание журналов " с последней меткой времени.

Шаг 7. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборку и развертывание. Дождитесь запуска GitHub, чтобы отобразить состояние успешности. Это занимает около 5 минут.

Возникли проблемы? Ознакомьтесь с руководством по устранению неполадок.

5. Создание схемы базы данных

При использовании базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в Служба приложений.

Шаг 1. Назад на странице Служба приложений в меню слева

  1. Выберите SSH средств разработки>.
  2. Выберите Выполнить.

Шаг 2. В сеансе SSH выполните команду flask db upgrade. При успешном завершении Служба приложений успешно подключается к базе данных.

Совет

В сеансе SSH только изменения в файлах могут /home сохраняться после перезапуска приложения. Изменения за пределами /home не сохраняются.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

6. Перейдите к приложению

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите Обзор.
  2. Выберите 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. На странице Служба приложений:

  1. В меню слева выберите "Мониторинг> Служба приложений журналы.
  2. Под элементом Ведение журнала приложения выберите Файловая система.
  3. В меню сверху выберите Сохранить.

Шаг 2. В меню слева выберите поток журналов. Вы увидите журналы для своего приложения, включая журналы платформы и журналы из контейнера.

Дополнительные сведения о ведении журнала в приложениях Python в серии о настройке Azure Monitor для приложения Python.

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

По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.

Шаг 1. В строке поиска в верхней части портал Azure:

  1. Введите имя группы ресурсов.
  2. Выберите группу ресурсов.

Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".

Шаг 3.

  1. Введите имя группы ресурсов для подтверждения удаления.
  2. Выберите команду Удалить.

Снимок экрана: диалоговое окно подтверждения для удаления группы ресурсов на портале Azure. :

2. Создание ресурсов Azure и развертывание примера приложения

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

Контейнер разработки уже имеет интерфейс командной строки разработчика Azure (AZD).

  1. Выполните команду azd initиз корневого каталога репозитория.

    azd init --template python-app-service-postgresql-infra
    
  2. При появлении запроса укажите следующие ответы:

    Вопрос Ответ
    Текущий каталог не пуст. Вы хотите инициализировать проект здесь в каталоге<>? Y
    Что вы хотите сделать с этими файлами? Сохранение существующих файлов без изменений
    Введите новое имя среды Введите уникальное имя. Шаблон AZD использует это имя как часть DNS-имени веб-приложения в Azure (<app-name>-<hash>.azurewebsites.net). Разрешены буквенно-цифровые символы и дефисы.
  3. Войдите в Azure, выполнив azd auth login команду и выполнив следующую команду:

    azd auth login
    
  4. Создайте необходимые ресурсы 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, который вы используете, создали переменные подключения для вас уже в качестве параметров приложения и выводит их в терминал для удобства. Параметры приложения — это один из способов сохранения секретов подключения из репозитория кода.

  1. В выходных AZURE_POSTGRESQL_USERданных AZD найдите параметры , AZURE_POSTGRESQL_PASSWORDи AZURE_POSTGRESQL_HOSTAZURE_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
     
  2. Для удобства шаблон AZD отображает прямую ссылку на страницу параметров приложения. Найдите ссылку и откройте ее на новой вкладке браузера.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

4. Изменение примера кода и повторное развертывание

  1. В пространстве кода GitHub запустите новый сеанс чата, выбрав представление чата, а затем выберите +.

  2. Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое описание SQLAlchemy настройки URI подключения в azureproject/development.py и azureproject/production.py.

  3. Спросите: "@workspace В рабочем режиме мое приложение работает в веб-приложении Служба приложений, которое использует соединитель службы Azure для подключения к гибкому серверу PostgreSQL с помощью типа клиента Django. Что такое имена переменных среды, которые мне нужно использовать? Copilot может дать вам предложение по коду, аналогичное варианту 2: без действий GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в файл azureproject/production.py.

  4. Откройте azureproject/production.py в обозревателе и добавьте предложение кода.

    GitHub Copilot не дает вам одинаковый ответ каждый раз, и это не всегда правильно. Вам может потребоваться задать дополнительные вопросы, чтобы точно настроить ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".

  5. В окне терминале выполните команду azd deploy.

    azd deploy
    

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

5. Создание схемы базы данных

При использовании базы данных PostgreSQL, защищенной виртуальной сетью, проще всего запустить миграцию базы данных Flask в сеансе SSH с контейнером Linux в Служба приложений.

  1. В выходных данных AZD найдите URL-адрес сеанса SSH и перейдите к нему в браузере. Это выглядит следующим образом в выходных данных:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. В сеансе SSH выполните команду flask db upgrade. При успешном завершении Служба приложений успешно подключается к базе данных.

    Снимок экрана: команды для запуска в оболочке SSH и их выходные данные.

    Примечание.

    После перезапуска приложения могут сохраняться только изменения в файлах в /home. Изменения за пределами /home не сохраняются.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

6. Перейдите к приложению

  1. В выходных данных AZD найдите URL-адрес приложения и перейдите к нему в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Добавьте несколько ресторанов в список.

    Снимок экрана: веб-приложение Flask с запущенным PostgreSQL на Azure, показывающим рестораны и обзоры ресторанов.

    Поздравляем, вы запускаете веб-приложение в службе приложение 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 создается на самом низком уровне с максимальным объемом памяти 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: