Быстрое начало. Развертывание веб-приложения Python (Django или Flask) в Службе приложений Azure
Статья
Чтение занимает 17 мин
В этом кратком руководстве вы развернете веб-приложение Python (Django или Flask) в Службе приложений Azure. Служба приложений Azure — это полностью управляемая служба веб-размещения, которая поддерживает приложения Python 3.7 и более поздних версий, размещенных в среде сервера Linux.
Для работы с этим кратким руководством вам понадобится:
Примечание. В этой статье содержатся текущие инструкции по развертыванию веб-приложения Python с помощью Службы приложений Azure. Python в Windows больше не поддерживается.
1. Пример приложения
Инструкции из этого краткого руководства можно выполнить с помощью Flask или Django. Чтобы помочь в работе с этим кратким руководством, предоставляется пример приложения для каждой платформы. Скачайте или клонируйте пример приложения на локальную рабочую станцию.
Чтобы разместить приложение в Azure, необходимо создать веб-приложение Службы приложений Azure в Azure. Вы можете создать веб-приложение с помощью портал Azure, VS Code, пакета расширений средств Azure или 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 account list-locations.
Выполнение этой команды может занять несколько минут. По мере выполнения команды будут отображаться сообщения о создании группы ресурсов, плане службы приложений и ресурсе приложения, настройке ведения журнала и последующем выполнении развертывания ZIP-файла. Затем оно выдает сообщение You can launch the app at http://<app-name>.azurewebsites.net (Вы можете запустить приложение по адресу http://.azurewebsites.net). Это URL-адрес приложения в Azure.
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 выполняет следующие действия:
Локальное кэширование параметров в файле .azure/config, позволяющее не указывать их снова при последующем развертывании с помощью az webapp up или других команд az webapp из папки проекта. По умолчанию кэшированные значения используются автоматически.
На левой панели инструментов найдите значок Azure. Выберите его, чтобы открыть расширение инструментов Azure для VS Code.
Если вы не видите значок инструментов Azure, убедитесь, что у вас установлено расширение инструментов Azure для VS Code.
В расширении инструментов Azure для VS Code выполните следующие действия.
Найдите раздел RESOURCES и выберите свою подписку.
Щелкните + (Создать ресурс...).
Выберите Создать веб-приложение службы приложений.
Введите имя msdocs-python-webapp-quickstart-XYZ для этого веб-приложения, где XYZ — любые три уникальные символа.
При развертывании это имя используется в качестве имени приложения в форме https://<app-name>.azurewebsites.net.
Выберите стек среды выполнения для приложения. В этом примере выберите Python 3.9.
Выберите план службы приложений (ценовая категория) для этого веб-приложения. План службы приложений определяет, сколько ресурсов (ЦП и памяти) доступно для вашего приложения, а также стоимость этих ресурсов.
В этом примере выберите ценовую категорию Базовый (B1). Этот план повлечет за собой небольшую плату за подписку Azure, но он рекомендуется для повышения производительности по сравнению с планом "Бесплатный" (F1).
Нажмите кнопку Развернуть в уведомлении "Создано новое веб-приложение".
Выберите папку быстрого запуска, в которой вы работаете, в качестве папки для развертывания.
Ответьте Да, чтобы обновить конфигурацию сборки и повысить производительность развертывания.
После завершения развертывания в правом нижнем углу VS Code появится уведомление. Это уведомление можно использовать для перехода к веб-приложению.
Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.
Инструкции
Снимок экрана
На портале Azure выполните следующие действия:
Введите службы приложений в строку поиска в верхней части портала Azure.
В меню, которое отображается под панелью поиска, в разделе Службы выберите элемент Службы приложений.
На странице Службы приложений нажмите + Создать.
На странице Создание веб-приложения заполните форму следующим образом.
Группа ресурсов → выберите Создать новый и используйте имя msdocs-python-webapp-quickstart.
Имя → msdocs-python-webapp-quickstart-XYZ, где XYZ — это любой из трех случайных символов. Это имя должно быть уникальным в Azure.
Стек среды выполнения → Python 3.9.
Регион → любой ближайший к вам регион Azure.
План Службы приложений → в разделе Номер SKU и размер выберите Изменить размер, чтобы выбрать другой план службы приложений.
План службы приложений определяет, сколько ресурсов (ЦП и памяти) доступно для вашего приложения, и стоимость этих ресурсов.
В этом примере в верхней части экрана выберите элемент Разработка и тестирование, а затем щелкните план B1 (Базовый). Базовый план B1 повлечет за собой небольшую плату за учетную запись Azure, но он рекомендуется для повышения производительности по сравнению с планом F1 (Бесплатный).
По завершении нажмите кнопку Применить, чтобы применить внесенные изменения.
На странице Создание веб-приложения выберите в нижней части экрана Просмотр и создание.
Откроется страница Просмотр. Нажмите Создать, чтобы создать вашу Службу приложений.
Служба приложений Azure поддерживает несколько методов развертывания кода приложения в Azure, в том числе GitHub Actions и все основные инструменты CI/CD. В этой статье рассматривается развертывание кода с локальной рабочей станции в Azure.
Так как на предыдущем шаге были созданы необходимые ресурсы и сразу развернуто приложение, вы можете перейти к шагу 4 "Переход к приложению".
Так как команда az webapp up создала необходимые ресурсы и сразу развернула приложение, вы можете перейти к шагу 4 "Переход к приложению".
Вы можете развернуть код приложения из локального репозитория Git в Azure, настроив удаленный репозиторий Git в локальном репозитории, чтобы он указывал на Azure для отправки кода. URL-адрес удаленного репозитория и учетные данные Git, необходимые для настройки, можно получить с помощью портала Azure или Azure CLI.
Перейдите в Службу приложений для своего приложения.
В поле поиска в верхней части экрана введите имя вашей Службы приложений.
В разделе Ресурсы выберите Службу приложений для перехода к ней.
На странице Службы приложений выполните следующие действия.
В меню с левой стороны экрана выберите пункт Центр развертывания.
В раскрывающемся списке Источник выберите Локальный Git.
Щелкните Сохранить.
После сохранения страница обновится, и отобразится адрес удаленного репозитория Git.
Скопируйте значение URI Git Clone, так как это значение будет использоваться позднее для настройки удаленного репозитория Git.
На странице Центр развертывания выполните следующие действия.
Перейдите на вкладку Учетные данные FTPS/локального Git.
В разделе учетных данных области приложения найдите имя пользователя и пароль.
Не закрывайте этот экран, чтобы вы могли сразу же скопировать эти учетные данные при развертывании кода в удаленный репозиторий. Используйте только часть имени пользователя после символа \, которая начинается с $, например $msdocs-python-webapp-quickstart-123.
При первой отправке кода в удаленный репозиторий Git эти учетные данные понадобятся для проверки подлинности в удаленном репозитории.
Затем в корневом каталоге приложения настройте удаленный Git, который указывает на Azure, используя URL-адрес Git удаленного Azure, полученный на предыдущем этапе.
git remote add azure <git-deployment-url>
Теперь вы можете отправить код из локального репозитория Git в Azure, используя только что настроенный удаленный репозиторий Git. Ветвь развертывания по умолчанию для Служба приложений — master, но многие репозитории Git переходят от master к main. Вы можете указать сопоставление имени локальной ветви с именем удаленной ветви в принудительной отправке (как показано ниже) или настроить DEPLOYMENT_BRANCH параметр приложения.
git push azure main:master
При первой отправке кода в Azure Git запросит учетные данные развертывания Azure, полученные на предыдущем шаге. Затем Git будет кэшировать эти учетные данные, поэтому вам не придется вводить их повторно при последующих развертываниях.
Сначала настройте источник развертывания для веб-приложения в качестве локального репозитория Git, используя команду az webapp deployment source. Эта команда выводит URL-адрес удаленного репозитория Git, в который будет отправлен код. Создайте копию этого значения, так как оно понадобится позже.
# Change these values to the ones used to create the App Service.
RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp deployment source config-local-git \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--output tsv
# Change these values to the ones used to create the App Service.
$RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
$APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp deployment source config-local-git `
--name $APP_SERVICE_NAME `
--resource-group $RESOURCE_GROUP_NAME `
--output tsv
Получите учетные данные развертывания для приложения. Позднее они понадобятся в Git для проверки подлинности в Azure при отправке кода в Azure.
Затем в корневом каталоге приложения настройте удаленный Git, который указывает на Azure, используя URL-адрес Git удаленного Azure, полученный на предыдущем этапе.
git remote add azure <git-deployment-url>
Теперь вы можете отправить код из локального репозитория Git в Azure, используя только что настроенный удаленный репозиторий Git. Ветвь развертывания по умолчанию для Служба приложений — master, но многие репозитории Git переходят от master к main. Вы можете указать сопоставление имени локальной ветви с именем удаленной ветви в принудительной отправке (как показано ниже) или настроить DEPLOYMENT_BRANCH параметр приложения.
git push azure main:master
При первой отправке кода в Azure Git предложит ввести учетные данные развертывания Azure, полученные на предыдущем этапе. Затем Git будет кэшировать эти учетные данные, поэтому вам не придется вводить их повторно при последующих развертываниях.
Приложения можно развертывать в Azure, создавая и передавая ZIP-файл кода приложения в Azure. ZIP-файлы можно передать в Azure с помощью Azure CLI или HTTP-клиента, такого как cURL.
Включение автоматизации сборки
При развертывании ZIP-файла кода Python необходимо установить флаг, чтобы включить автоматизацию сборки Azure. При автоматизации сборки будет установлено все необходимое согласно требованиям и создан пакет приложения для запуска в Azure.
Автоматизация сборки в Azure включается путем настройки параметра приложения SCM_DO_BUILD_DURING_DEPLOYMENT на портале Azure или в Azure CLI.
# Change these values to the ones used to create the App Service.
RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP_NAME \
--name $APP_SERVICE_NAME \
--settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
# Change these values to the ones used to create the App Service.
$resourceGroupName='msdocs-python-webapp-quickstart'
$appServiceName='msdocs-python-webapp-quickstart-123'
az webapp config appsettings set `
--resource-group $resourceGroupName `
--name $appServiceName `
--settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
Создание ZIP-файла приложения
Затем создайте ZIP-файл приложения. Необходимо включить только компоненты самого приложения. Не нужно включать файлы или каталоги, которые начинаются с точки (.), например .venv, .gitignore, .github или .vscode.
# Change these values to the ones used to create the App Service.
RESOURCE_GROUP_NAME='msdocs-python-webapp-quickstart'
APP_SERVICE_NAME='msdocs-python-webapp-quickstart-123'
az webapp deploy \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--src-path <zip-file-path>
# Change these values to the ones used to create the App Service.
$resourceGroupName='msdocs-python-webapp-quickstart'
$appServiceName='msdocs-python-webapp-quickstart-123'
az webapp deploy `
--name $appServiceName `
--resource-group $resourceGroupName `
--src-path <zip-file-path>
Для передачи ZIP-файла в Azure с помощью Postman потребуется имя пользователя и пароль развертывания для вашей Службы приложений. Эти учетные данные можно получить на портале Azure.
На странице веб-приложения в меню с левой стороны страницы выберите Центр развертывания.
Перейдите на вкладку Учетные данные FTPS.
Имя пользователя и пароль отображаются в разделе Область приложения. Для развертывания ZIP-файла используйте только часть имени пользователя после символа \, которая начинается с $, например, $msdocs-python-webapp-quickstart-123. Эти учетные данные понадобятся при отправке ZIP-файла с помощью Postman.
В Postman отправьте файл, выполнив следующие действия.
Инструкции
Снимок экрана
Щелкните значок плюса (+), чтобы создать новый запрос.
В качестве типа запроса выберите POST.
Введите URL-адрес https://\<app-name\>.scm.azurewebsites.net/api/zipdeploy, в котором <app-name> — это имя веб-приложения. Этот URL-адрес является конечной точкой, используемой для развертывания ZIP-файла в службе Azure.
На вкладке Авторизация выполните следующие действия.
Для параметра Тип задайте значение Базовый.
Введите имя пользователя и пароль развертывания, полученные ранее на портале Azure. Используйте только часть имени пользователя после символа \, которая начинается с $.
На вкладке Текст выполните следующие действия.
В качестве типа содержимого выберите двоичный файл.
Используйте кнопку Выбор файла, чтобы выбрать ZIP-файл.
Имя отправляемого файла будет отображаться в разделе текста.
Нажмите кнопку Отправить, чтобы отправить ZIP-файл в Azure.
В зависимости от пропускной способности сети для передачи файлов в Azure обычно требуется от 10 до 30 секунд.
Для передачи ZIP-файла в Azure с помощью cURL вам потребуется имя пользователя и пароль развертывания для вашей Службы приложений. Эти учетные данные можно получить на портале Azure.
На странице веб-приложения в меню с левой стороны страницы выберите Центр развертывания.
Перейдите на вкладку Учетные данные FTPS.
Имя пользователя и пароль отображаются в разделе Область приложения. Для развертывания ZIP-файла используйте только часть имени пользователя после символа \, которая начинается с $, например, $msdocs-python-webapp-quickstart-123. Эти учетные данные потребуются в команде cURL.
Выполните следующую команду curl, чтобы передать ZIP-файл в Azure и развернуть приложение. Имя пользователя — это имя пользователя для развертывания, полученное на этапе 3. При выполнении этой команды будет предложено ввести пароль развертывания.
Для PowerShell обязательно заключите имя пользователя в одинарные кавычки, чтобы PowerShell не пытался интерпретировать имя пользователя как переменную PowerShell.
Найдите развернутое приложение в веб-браузере по 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)
def index(request):
print('Request for index page received')
return render(request, 'hello_azure/index.html')
@csrf_exempt
def hello(request):
if request.method == 'POST':
name = request.POST.get('name')
if name is None or name == '':
print("Request for hello page received with no name or blank name -- redirecting")
return redirect('index')
else:
print("Request for hello page received with name=%s" % name)
context = {'name': name }
return render(request, 'hello_azure/hello.html', context)
else:
Содержимое журналов диагностики Службы приложений можно просмотреть на портале Azure, в VS Code или с помощью Azure CLI.
Сначала необходимо включить журналы потоковой передачи в Службе приложений Azure. Перейдите на страницу экземпляра Службы приложений на портале Azure.
В меню с левой стороны страницы в разделе Мониторинг выберите Журналы Службы приложений.
Измените значение свойства Ведение журнала приложения с Выкл. на Файловая система.
Введите период хранения журналов — 30 дней.
Выберите Сохранить, чтобы сохранить изменения.
В меню в разделе Мониторинг выберите элемент Поток журналов. Обновите домашнюю страницу в приложении или попытайтесь выполнить другие запросы, чтобы создать какие-то сообщения журнала.
В выходных данных вы увидите все сообщения журнала, созданные приложением, и сообщения, созданные службой.
Инструкции
Снимок экрана
Сначала необходимо включить журналы потоковой передачи в Службе приложений Azure.
В разделе Служба приложений расширения инструментов Azure для VS Code щелкните правой кнопкой мыши ваш экземпляр Службы приложений и выберите в меню Запустить журналы потоковой передачи.
Журналы консоли появляются в окне выходных данных VS Code. Обновите домашнюю страницу в приложении или попытайтесь выполнить другие запросы, чтобы создать какие-то сообщения журнала.
В выходных данных вы увидите все сообщения журнала, созданные приложением, а также сообщения, созданные службой.
Сначала необходимо настроить Службу приложений Azure для вывода журналов в файловую систему Службы приложений с помощью команды az webapp log config.
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
az webapp log tail `
--name $APP_SERVICE_NAME `
--resource-group $RESOURCE_GROUP_NAME
Обновите домашнюю страницу в приложении или попытайтесь выполнить другие запросы, чтобы создать какие-то сообщения журнала. Результат должен выглядеть следующим образом.
Завершив работу с примером приложения, можно удалить все ресурсы для приложения в Azure. Это не приведет к дополнительным расходам и сохранит порядок в подписке Azure. Удаление группы ресурсов также повлечет удаление всех ресурсов в группе ресурсов, что является самым быстрым способом удаления всех ресурсов Azure для приложения.
Чтобы удалить группу ресурсов, после входа на портал Azure выполните следующие действия.
Инструкции
Снимок экрана
На портале Azure перейдите к группе ресурсов.
В поле поиска в верхней части портала введите имя группы ресурсов.
В разделе Группы ресурсов выберите имя группы ресурсов, чтобы перейти к ней.
В верхней части страницы выберите Удалить группу ресурсов.
В диалоговом окне подтверждения введите имя группы ресурсов для подтверждения удаления. Нажмите кнопку Удалить для удаления группы ресурсов.
Инструкции
Снимок экрана
В расширении инструментов Azure для VS Code выполните следующие действия.
Найдите раздел RESOURCES.
Щелкните значок Группировать по и выберите Группировать по группе ресурсов.
В списке ресурсов найдите группу ресурсов для удаления, щелкните ее правой кнопкой мыши и выберите пункт Удалить группу ресурсов. Вам будет предложено подтвердить удаление, введя имя группы ресурсов в диалоговом окне.