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


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

В этом руководстве вы развернёте основанное на данных веб-приложение на Python (Flask) в службе Azure App Service с использованием сервиса реляционной базы данных Azure Database for PostgreSQL. Служба приложений Azure поддерживает Python в среде сервера Linux. Если вы хотите, ознакомьтесь с руководством по 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

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

Сначала вы создаете пример приложения, основанного на данных, как отправную точку. Для удобства пример репозитория включает конфигурацию контейнера разработки . Dev-контейнер содержит всё необходимое для разработки приложения, включая базу данных, кэш и все переменные окружения, необходимые для примера приложения. Контейнер разработки может выполняться в пространстве кода 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?

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

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

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

  • Название для веб-приложения. Он используется в качестве части DNS-имени приложения.
  • Регион, в котором приложение будет физически работать в мире. Он также используется как часть DNS-имени вашего приложения.
  • Стек среды выполнения для приложения. Здесь вы выбираете версию Python для использования в вашем приложении.
  • План размещения для приложения. Это уровень цен, который включает набор функций и возможности масштабирования для вашего приложения.
  • Группа ресурсов для приложения. Группа ресурсов позволяет вам сгруппировать (в логический контейнер) все ресурсы Azure, необходимые для приложения.

Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.

Шаг 1. На портале Azure:

  1. Введите "web app database" в строку поиска в верхней части портала 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. Выберите "Рецензирование и создание".
  9. После завершения проверки нажмите кнопку "Создать".

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

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

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

Мастер создания создал переменные подключения для вас уже в качестве параметров приложения. Тем не менее, лучшей практикой безопасности является полностью исключить хранящиеся секреты из App Service. Вы переместите учетные данные в хранилище ключей и измените параметры приложения на ссылки Хранилища ключей с помощью сервисных коннекторов.

Шаг 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. Выберите "Рецензирование и создание".
  3. После завершения проверки нажмите кнопку "Создать".

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

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

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

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

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

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

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


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

На этом шаге вы настроите развертывание 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 В рабочем режиме мое приложение работает в веб-приложении службы приложений, которое использует соединитель службы 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_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 минут.

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

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 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.

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

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

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

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

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

Шаг 3.

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

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

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

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

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

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

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: <URL>
     
  2. В SSH-сессии выполните команду flask db upgrade. Если это удается, служба приложений успешно подключается к базе данных.

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

    Примечание

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

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

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

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

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  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 найдите ссылку для потоковой передачи журналов службы приложений и перейдите по ней в браузере.

Узнайте больше о логгировании в 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?

Используя сгенерированный автоматически файл рабочего процесса из 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.