Краткое руководство. Развертывание веб-приложения Python (Django, Flask или FastAPI) в службе приложение Azure
Примечание.
Начиная с 1 июня 2024 г. все созданные Служба приложений приложения будут иметь возможность создать уникальное имя узла по умолчанию с помощью соглашения <app-name>-<random-hash>.<region>.azurewebsites.net
об именовании. Существующие имена приложений останутся неизменными.
Пример: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Дополнительные сведения см. в разделе "Уникальное имя узла по умолчанию" для ресурса Служба приложений.
В этом кратком руководстве вы развернете веб-приложение Python (Django, Flask или FastAPI) в службе приложение Azure. служба приложение Azure — это полностью управляемая служба размещения веб-сайтов, которая поддерживает приложения Python, размещенные в среде сервера Linux.
Для работы с этим кратким руководством вам понадобится:
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Python 3.9 или более поздней версии, установленные локально.
Примечание.
В этой статье содержатся текущие инструкции по развертыванию веб-приложения Python с помощью службы приложение Azure. Python в Windows больше не поддерживается.
Пример приложения
Это краткое руководство можно выполнить с помощью Flask, Django или FastAPI. Чтобы помочь в работе с этим кратким руководством, предоставляется пример приложения для каждой платформы. Скачайте или клонируйте пример приложения на локальную рабочую станцию.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
Для локального запуска приложения:
Перейдите в папку приложения:
cd msdocs-python-flask-webapp-quickstart
Создайте виртуальную среду для приложения:
py -m venv .venv .venv\scripts\activate
Установка зависимостей:
pip install -r requirements.txt
Запустите приложение:
flask run
В веб-браузере перейдите к примеру приложения по адресу
http://localhost:5000
.
Возникли проблемы? Сообщите нам об этом.
Создание веб-приложения в Azure
Чтобы разместить приложение в Azure, необходимо создать веб-приложение службы приложение Azure в Azure. Вы можете создать веб-приложение с помощью Azure CLI, VS Code, пакета расширений средств Azure или портал Azure.
Команды Azure CLI моно выполнять на компьютере с установленным Azure CLI.
В Azure CLI есть команда az webapp up
, которая создаст необходимые ресурсы и развернет приложение за одно действие.
При необходимости войдите в Azure с помощью az login.
az login
Создайте веб-приложение и другие ресурсы, а затем разверните код в Azure с помощью az webapp up.
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
- Параметр
--runtime
указывает, какая версия Python работает в вашем приложении. В этом примере используется Python 3.9. Чтобы получить список всех доступных сред выполнения, используйте командуaz webapp list-runtimes --os linux --output table
. - Параметр
--sku
определяет размер (ЦП, память) и стоимость плана службы приложений. В этом примере используется план обслуживания B1 (Базовый), который повлечет за собой небольшую стоимость в подписке Azure. Полный список планов службы приложений см. на странице цен на Службу приложений. - Флаг
--logs
настраивает ведение журнала по умолчанию, необходимое для включения просмотра потока журнала сразу после запуска веб-приложения. - При необходимости можно указать имя с аргументом
--name <app-name>
. Если вы не указали его, имя будет автоматически создано. - При необходимости вы можете использовать аргумент
--location <location-name>
, где<location_name>
является доступным регионом Azure. Список допустимых регионов для учетной записи Azure можно получить, выполнив командуaz appservice list-locations
.
Выполнение этой команды может занять несколько минут. По мере выполнения команды будут отображаться сообщения о создании группы ресурсов, плане службы приложений и ресурсе приложения, настройке ведения журнала и последующем выполнении развертывания ZIP-файла. Затем оно выдает сообщение You can launch the app at http://<app-name>.azurewebsites.net (Вы можете запустить приложение по адресу http://
The webapp '<app-name>' doesn't exist Creating Resource group '<group-name>' ... Resource group creation complete Creating AppServicePlan '<app-service-plan-name>' ... Creating webapp '<app-name>' ... Configuring default logging for the app, if not already enabled Creating zip with contents of dir /home/cephas/myExpressApp ... Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202 You can launch the app at http://<app-name>.azurewebsites.net { "URL": "http://<app-name>.azurewebsites.net", "appserviceplan": "<app-service-plan-name>", "location": "centralus", "name": "<app-name>", "os": "<os-type>", "resourcegroup": "<group-name>", "runtime_version": "python|3.9", "runtime_version_detected": "0.0", "sku": "FREE", "src_path": "<your-folder-location>" }
Примечание.
Команда az webapp up
выполняет следующие действия:
создание группы ресурсов по умолчанию;
создание плана службы приложений по умолчанию;
создание приложения с указанным именем.
развертывание с помощью Zip всех файлов из текущей рабочей папки с включенной автоматизацией сборки;
Локальное кэширование параметров в файле .azure/config, позволяющее не указывать их снова при последующем развертывании с помощью
az webapp up
или других командaz webapp
из папки проекта. По умолчанию кэшированные значения используются автоматически.
Возникли проблемы? Сообщите нам об этом.
Развертывание кода приложения в Azure
служба приложение Azure поддерживает несколько методов развертывания кода приложения в Azure, включая GitHub Actions и все основные средства CI/CD. В этой статье рассматривается развертывание кода с локальной рабочей станции в Azure.
az webapp up
Так как команда создала необходимые ресурсы и развернула приложение на одном шаге, вы можете перейти к следующему шагу.
Возникли проблемы? Сначала ознакомьтесь с руководством по устранению неполадок. Если это не поможет, сообщите нам об этом.
Настройка скрипта запуска
На основе наличия определенных файлов в развертывании Служба приложений автоматически определяет, является ли приложение Django или Flask приложением и выполняет действия по умолчанию для запуска приложения. Для приложений на основе других веб-платформ, таких как FastAPI, необходимо настроить скрипт запуска для Служба приложений для запуска приложения; в противном случае Служба приложений запустить приложение только для чтения по умолчанию, расположенное в папке opt/defaultsite.
Дополнительные сведения о том, как Служба приложений запускает приложения Python и как можно настроить и настроить его поведение в приложении, см. в статье "Настройка приложения Python Linux для службы приложение Azure".
Служба приложений автоматически обнаруживает наличие приложения Flask. Для этого краткого руководства не требуется дополнительная конфигурация.
Переход в приложение
Перейдите в развернутое приложение в веб-браузере с помощью URL-адреса http://<app-name>.azurewebsites.net
. Если видите страницу приложения по умолчанию, подождите минуту и обновите браузер.
Пример кода Python запускает контейнер Linux в Службе приложений с помощью встроенного образа.
Поздравляем! Вы развернули свое приложение Python в Cлужбе приложений.
Возникли проблемы? Сначала ознакомьтесь с руководством по устранению неполадок. Если это не поможет, сообщите нам об этом.
Журналы потоковой передачи
приложение Azure служба записывает все выходные данные сообщений в консоль, чтобы помочь в диагностике проблем с приложением. Примеры приложений включают операторы print()
для демонстрации этой возможности.
@app.route('/')
def index():
print('Request for index page received')
return render_template('index.html')
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
@app.route('/hello', methods=['POST'])
def hello():
name = request.form.get('name')
if name:
print('Request for hello page received with name=%s' % name)
return render_template('hello.html', name = name)
else:
print('Request for hello page received with no name or blank name -- redirecting')
return redirect(url_for('index'))
Вы можете просмотреть содержимое журналов диагностики Служба приложений с помощью Azure CLI, VS Code или портал Azure.
Сначала необходимо настроить службу приложение Azure для вывода журналов в файловую систему Служба приложений с помощью команды az webapp log config.
az webapp log config \
--web-server-logging filesystem \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Чтобы выполнить потоковую передачу журналов, используйте команду az webapp log tail.
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Обновите домашнюю страницу в приложении или попытайтесь выполнить другие запросы, чтобы создать какие-то сообщения журнала. Результат должен выглядеть следующим образом.
Starting Live Log Stream ---
2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
Возникли проблемы? Сначала ознакомьтесь с руководством по устранению неполадок. Если это не поможет, сообщите нам об этом.
Очистка ресурсов
Завершив работу с примером приложения, можно удалить все ресурсы для приложения в Azure. Удаление группы ресурсов гарантирует, что вы не несете дополнительных расходов и помогает не загромождать подписку Azure. Удаление группы ресурсов также повлечет удаление всех ресурсов в группе ресурсов, что является самым быстрым способом удаления всех ресурсов Azure для приложения.
Удалите группу ресурсов с помощью команды az group delete.
az group delete \
--name msdocs-python-webapp-quickstart \
--no-wait
Аргумент --no-wait
позволяет команде возвращать сведения до завершения операции.
Возникли проблемы? Сообщите нам об этом.