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


Разверните веб-приложение на Python (Flask) с PostgreSQL в Azure

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

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

В этом учебнике вы узнаете, как:

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

Предпосылки

  • Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
  • аккаунт GitHub. Вы также можете получить его бесплатно.
  • Знание 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

Запустите пример

В качестве отправной точки настройте пример приложения на основе данных. Для удобства пример репозитория включает конфигурацию контейнера разработки . Контейнер разработки имеет все необходимое для разработки приложения. Он включает базу данных, кэш и все переменные среды, необходимые образцу приложения. Контейнер разработки может выполняться в пространстве кода GitHub, поэтому вы можете запустить пример на любом компьютере с веб-браузером.

Примечание

Если вы используете это руководство вместе с вашим приложением, ознакомьтесь с описанием файла requirements.txt в README.md , чтобы узнать, какие пакеты вам нужны.

Шаг 1. В новом окне браузера:

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

Шаг 2. В GitHub fork:

  1. Выберите main>starter-no-infra для начальной ветви. Эта ветвь содержит только пример проекта без файлов или конфигурации, связанных с 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?

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

Создание службы приложений и PostgreSQL

В этом разделе описано, как создать ресурсы Azure. В этом руководстве создается набор безопасных ресурсов по умолчанию, включающих службу приложений и базу данных Azure для PostgreSQL. Для процесса создания вы указываете:

  • Название для веб-приложения. Он используется в качестве части DNS-имени приложения.
  • Регион, в котором приложение будет физически работать в мире. Это также часть 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.14.
  5. База данных: PostgreSQL — гибкий сервер по умолчанию выбирается в качестве ядра СУБД. Имя сервера и имя базы данных также устанавливаются по умолчанию на соответствующие значения.
  6. Добавление кэша Azure для Redis?: нет.
  7. План размещения: базовый. Когда вы будете готовы, вы можете перейти на производственную ценовую категорию.
  8. Выберите "Рецензирование и создание".
  9. После завершения проверки нажмите кнопку "Создать".

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

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

Секреты безопасного подключения

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

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

  1. В меню слева на странице "Служба приложений" выберите Параметры>переменные среды.
  2. Выберите AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. В поле "Добавление и изменение приложения" в поле "Значение " найдите пароль= в конце строки.
  4. Скопируйте строку пароля после пароля= для последующего использования. Этот параметр приложения позволяет подключаться к базе данных 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. Выберите "Рецензирование и создание".
  3. После завершения проверки нажмите кнопку "Создать".

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

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

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

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

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

  • Извлечение секретов подключения из переменных окружения приложения App Service.
  • Создание хранилища ключей.
  • Создание подключения к хранилищу ключей с использованием управляемой идентичности, назначенной системой.
  • Обновление подключений сервиса для хранения секретов в хранилище ключей.

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


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

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

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

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

  1. В источнике выберите GitHub. По умолчанию GitHub Actions выбирается в качестве поставщика сборки.
  2. Войдите в свой аккаунт GitHub и следуйте указаниям, чтобы авторизовать Azure.
  3. В организации выберите свою учетную запись.
  4. В репозитории выберите msdocs-flask-postgresql-sample-app.
  5. В Branch выберите 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 В рабочем режиме мое приложение работает в веб-приложении App Service, которое использует Azure Service Connector для подключения к гибкому серверу PostgreSQL с использованием клиента Django. Какие имена переменных окружения мне нужно использовать? Copilot может напомнить вам о варианте кода, аналогичном 2: без использования GitHub Copilot, и даже подсказать, что изменения необходимо внести в файл azureproject/production.py.
  4. Откройте azureproject/production.py в обозревателе и добавьте предложение кода. GitHub Copilot не дает вам одинаковый ответ каждый раз. Ответы не всегда верны. Вам, возможно, потребуется задать больше вопросов, чтобы уточнить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?

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

  1. Откройте azureproject/production.py в обозревателе.
  2. Найдите закомментированный код (строки 3–8) и раскомментируйте его. Это изменение создает строку подключения для SQLAlchemy с помощью AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTи AZURE_POSTGRESQL_NAME.

Шаг 5.

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

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

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

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

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

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

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

Шаг 1. Вернитесь на страницу службы приложений в меню слева.

  1. Выберите Средства разработки>SSH.
  2. Нажмите кнопку "Перейти".

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

Подсказка

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

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

Переход в приложение

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

  1. В меню слева выберите "Обзор".
  2. Выберите URL-адрес вашего приложения.

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

Трансляция журналов диагностики

Служба Azure App Service фиксирует все журналы консоли, чтобы помочь вам диагностировать проблемы с вашим приложением. Пример приложения содержит 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".

Очистите ресурсы

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

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

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

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

Шаг 3.

  1. Чтобы подтвердить удаление, введите имя группы ресурсов.
  2. Нажмите кнопку "Удалить".
  3. Подтвердите удаление еще раз.

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

На этом этапе вы создаете ресурсы Azure и размещаете образец приложения в службе приложений на Linux. Шаги, использованные в этом руководстве, создают набор защищённых по умолчанию ресурсов, включая App Service и базу данных Azure для PostgreSQL.

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

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

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

    Вопрос Ответ
    Текущий каталог не пуст. Хотите инициализировать проект здесь, в '<your-directory>'? 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 и каталог infra), создающие защищенную по умолчанию архитектуру со следующими ресурсами Azure:

    • Группа ресурсов: контейнер для всех созданных ресурсов.
    • План службы приложений: определяет вычислительные ресурсы для службы приложений. Он создает план Linux на уровне "Базовый ".
    • App Service: представляет ваше приложение и запускается в плане App Service.
    • Виртуальная сеть: интегрирована с приложением службы приложений и изолирует внутренний сетевой трафик.
    • Частные конечные точки: доступ к конечным точкам для хранилища ключей и кэша Redis в виртуальной сети.
    • Сетевые интерфейсы: представляет частные IP-адреса, по одному для каждой из частных конечных точек.
    • Гибкий сервер Базы данных Azure для PostgreSQL: доступен только из виртуальной сети. На сервере создаются база данных и пользователь для вас.
    • Частная зона DNS: включает разрешение DNS сервера PostgreSQL в виртуальной сети.
    • Рабочая область Log Analytics: выступает в качестве целевого контейнера для вашего приложения для отправки журналов, где можно также запрашивать журналы.
    • Кэш Azure для Redis: доступен только через приватную конечную точку.
    • Хранилище ключей: доступно только из своей частной конечной точки. Используется для управления секретами в приложении App Service.

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

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

Использование строки подключения к базе данных

Шаблон AZD, который вы используете, создал переменные подключения для вас уже в качестве параметров приложения. Он выводит их в терминал. Настройки приложения — это один из способов уберечь секреты подключения от попадания в ваш репозиторий кода.

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

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

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

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

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

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

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

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

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

    azd deploy
    

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

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

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

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

    Open SSH session to App Service container at: <URL>
    
  2. В SSH-сессии выполните команду flask db upgrade. Если это удается, служба приложений успешно подключается к базе данных.

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

    Примечание

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

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

Переход в приложение

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

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

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

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

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

Трансляция журналов диагностики

Служба приложений 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 найдите ссылку для потоковой передачи журналов службы приложений и перейдите по ней в браузере.

Узнайте больше о логгировании в Python-приложениях в серии статей о настройке Azure Monitor для вашего приложения на Python.

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

Очистите ресурсы

Чтобы удалить все ресурсы 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?

Для автоматически сгенерированного файла рабочего процесса из App Service, в качестве примера, каждый git push инициирует новый процесс сборки и развертывания. Из локального клона репозитория GitHub вы делаете необходимые обновления и отправляете их на GitHub. Рассмотрим пример.

git add .
git commit -m "<some-message>"
git push origin main

Как отлаживать ошибки во время развертывания с помощью GitHub Actions?

Если какой-либо шаг завершится ошибкой в автоматически сгенерированном файле рабочего процесса GitHub, попробуйте изменить неудачную команду, чтобы получить более подробный вывод. Например, можно получить подробные выходные данные команды python, добавив этот параметр -d. Закоммитьте и отправьте свои изменения, чтобы инициировать очередное развертывание на App Service.

У меня нет разрешений для создания идентификатора, назначенного пользователем.

См. Настройка развертывания 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.