Создание веб-приложения Python в Службе приложений Azure на платформе Linux (предварительная версия)Create a Python web app in Azure App Service on Linux (Preview)

Служба приложений на платформе Linux — это высокомасштабируемая служба размещения с самостоятельной установкой исправлений на основе операционной системы Linux.App Service on Linux provides a highly scalable, self-patching web hosting service using the Linux operating system. В этом кратком руководстве показано, как развернуть приложение Python на основе встроенного образа Python (предварительная версия) в службе приложений в Linux с помощью Azure CLI.This quickstart shows how to deploy a Python app on top of the built-in Python image (Preview) in App Service on Linux using the Azure CLI.

Выполните инструкции, приведенные в этом руководстве, с помощью компьютера Mac, Windows или Linux.You can follow the steps in this article using a Mac, Windows, or Linux machine.

Пример приложения, выполняющегося в Azure

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don't have an Azure subscription, create a free account before you begin.

Предварительные требованияPrerequisites

Для работы с этим кратким руководством сделайте следующее:To complete this quickstart:

Скачивание примера приложенияDownload the sample

В окне терминала выполните нижеприведенные команды, чтобы клонировать пример приложения на локальный компьютер и перейти в каталог, содержащий пример кода.In a terminal window, run the following commands to clone the sample application to your local machine, and navigate to the directory with the sample code.

git clone https://github.com/Azure-Samples/python-docs-hello-world
cd python-docs-hello-world

Локальный запуск приложенияRun the app locally

Запустите приложение локально, чтобы увидеть, как оно будет выглядеть после развертывания в Azure.Run the application locally so that you see how it should look when you deploy it to Azure. Откройте окно терминала и используйте нижеприведенные команды для установки необходимых зависимостей и запуска встроенного сервера разработки.Open a terminal window and use the commands below to install the required dependencies and launch the built-in development server.

# In Bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
FLASK_APP=application.py flask run

# In PowerShell
py -3 -m venv env
env\scripts\activate
pip install -r requirements.txt
Set-Item Env:FLASK_APP ".\application.py"
flask run

Откройте веб-браузер и перейдите к примеру приложения по адресу http://localhost:5000/.Open a web browser, and navigate to the sample app at http://localhost:5000/.

На странице отобразится сообщение Hello World!You see the Hello World! из примера приложения.message from the sample app displayed in the page.

Пример приложения, выполняющегося локально

В окне терминала нажмите клавиши CTRL+C, чтобы выйти из веб-сервера.In your terminal window, press Ctrl+C to exit the web server.

Открытие Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. В Cloud Shell предварительно установлены и настроены общие инструменты Azure для использования с вашей учетной записью.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. Нажмите кнопку Копировать, чтобы скопировать код. Вставьте его в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить код.Just select the Copy button to copy the code, paste it in Cloud Shell, and then press Enter to run it. Cloud Shell можно открыть разными способами:There are a few ways to open Cloud Shell:

Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. Cloud Shell в этой статье
Откройте Cloud Shell в браузере.Open Cloud Shell in your browser. https://shell.azure.com/bash
Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Cloud Shell на портале

Настойка пользователя развертыванияConfigure a deployment user

В Cloud Shell создайте учетные данные развертывания с помощью команды az webapp deployment user set.In the Cloud Shell, create deployment credentials with the az webapp deployment user set command. Пользователь развертывания необходим для развертывания FTP и локального репозитория Git в веб-приложении.This deployment user is required for FTP and local Git deployment to a web app. Имя пользователя и пароль представляют уровень учетной записи.The user name and password are account level. Они отличаются от учетных данных подписки Azure.They are different from your Azure subscription credentials.

В следующем примере замените <имя_пользователя> и <пароль> (включая скобки) новым именем пользователя и паролем.In the following example, replace <username> and <password> (including brackets) with a new user name and password. Имя пользователя должно быть уникальным в пределах Azure.The user name must be unique within Azure. Пароль должен содержать не менее восьми символов и включать два из трех следующих элементов: буквы, цифры и символы.The password must be at least eight characters long, with two of the following three elements: letters, numbers, symbols.

az webapp deployment user set --user-name <username> --password <password>

Необходимо получить выходные данные JSON с паролем, обозначенным как null.You should get a JSON output, with the password shown as null. Если появляется сообщение об ошибке 'Conflict'. Details: 409, измените имя пользователя.If you get a 'Conflict'. Details: 409 error, change the username. Если появляется сообщение об ошибке 'Bad Request'. Details: 400, используйте более надежный пароль.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Пользователь развертывания создается один раз. Его можно использовать для всех развертываний Azure.You create this deployment user only once; you can use it for all your Azure deployments.

Примечание

Запишите имя пользователя и пароль.Record the user name and password. В дальнейшем они понадобятся для развертывания веб-приложения.You need them to deploy the web app later.

Создание группы ресурсовCreate a resource group

Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure (веб-приложений, баз данных и учетных записей хранения) и управление ими.A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. Например, в дальнейшем можно удалить всю группу ресурсов при помощи одного простого действия.For example, you can choose to delete the entire resource group in one simple step later.

В Cloud Shell создайте группу ресурсов с помощью команды az group create.In the Cloud Shell, create a resource group with the az group create command. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении Западная Европа.The following example creates a resource group named myResourceGroup in the West Europe location. Чтобы просмотреть все поддерживаемые расположения для службы приложений в Linux в ценовой категории Базовый, выполните команду az appservice list-locations --sku B1 --linux-workers-enabled.To see all supported locations for App Service on Linux in Basic tier, run the az appservice list-locations --sku B1 --linux-workers-enabled command.

az group create --name myResourceGroup --location "West Europe"

Обычно группа ресурсов и ресурсы создаются в ближайших регионах.You generally create your resource group and the resources in a region near you.

По завершении команды в выходных данных JSON будут отображаться свойства группы ресурсов.When the command finishes, a JSON output shows you the resource group properties.

Создание плана службы приложений AzureCreate an Azure App Service plan

В Cloud Shell создайте план службы приложений в группе ресурсов с помощью команды az appservice plan create.In the Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command.

В следующем примере создается план службы приложений с именем myAppServicePlan в ценовой категории Базовый (--sku B1) в контейнере Linux (--is-linux).The following example creates an App Service plan named myAppServicePlan in the Basic pricing tier (--sku B1) and in a Linux container (--is-linux).

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku B1 --is-linux

После создания плана службы приложений в Azure CLI отображается информация следующего вида:When the App Service plan has been created, the Azure CLI shows information similar to the following example:

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Создание веб-приложенияCreate a web app

Создайте веб-приложение в плане службы приложений myAppServicePlan.Create a web app in the myAppServicePlan App Service plan.

В Cloud Shell можно использовать команду az webapp create.In the Cloud Shell, you can use the az webapp create command. В следующем примере замените <app_name>глобальным уникальным именем приложения (допустимые символы: a-z, 0-9 и -).In the following example, replace <app_name> with a globally unique app name (valid characters are a-z, 0-9, and -). Для среды выполнения установлено значение PYTHON|3.7.The runtime is set to PYTHON|3.7. Список всех поддерживаемых сред выполнения можно получить с помощью команды az webapp list-runtimes --linux.To see all supported runtimes, run az webapp list-runtimes --linux.

# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app_name> --runtime "PYTHON|3.7" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app_name> --runtime "PYTHON|3.7" --deployment-local-git

Когда веб-приложение будет создано, в Azure CLI отобразится примерно следующее:When the web app has been created, the Azure CLI shows output similar to the following example:

Local git is configured with url of 'https://<username>@<app_name>.scm.azurewebsites.net/<app_name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app_name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app_name>.scm.azurewebsites.net/<app_name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

Вы создали пустое веб-приложение с включенным развертыванием Git.You’ve created an empty new web app, with git deployment enabled.

Примечание

URL-адрес удаленного репозитория Git отображается в свойстве deploymentLocalGitUrl в формате https://<username>@<app_name>.scm.azurewebsites.net/<app_name>.git.The URL of the Git remote is shown in the deploymentLocalGitUrl property, with the format https://<username>@<app_name>.scm.azurewebsites.net/<app_name>.git. Сохраните этот URL-адрес для дальнейшего использования.Save this URL as you need it later.

Перейдите на сайт, чтобы просмотреть созданное веб-приложение со встроенным образом.Browse to the site to see your newly created web app with built-in image. Замените <имя_приложения> уникальным именем веб-приложения.Replace <app name> with your web app name.

http://<app_name>.azurewebsites.net

Новое веб-приложение должно выглядеть так:Here is what your new web app should look like:

Пустая страница веб-приложения

Публикация в Azure из GitPush to Azure from Git

Вернитесь к окну терминала (в локальном расположении) и добавьте удаленное приложение Azure в локальный репозиторий Git.Back in the local terminal window, add an Azure remote to your local Git repository. Замените <deploymentLocalGitUrl-from-create-step> URL-адресом удаленного репозитория Git, который вы сохранили при создании веб-приложения.Replace <deploymentLocalGitUrl-from-create-step> with the URL of the Git remote that you saved from Create a web app.

git remote add azure <deploymentLocalGitUrl-from-create-step>

Отправьте код в удаленное приложение Azure, чтобы развернуть приложение.Push to the Azure remote to deploy your app with the following command. При появлении запроса на ввод учетных данных в диспетчере учетных данных Git введите учетные данные, созданные на шаге настройки пользователя развертывания (а не те, которые используются для входа на портал Azure).When prompted for credentials by Git Credential Manager, make sure that you enter the credentials you created in Configure a deployment user, not the credentials you use to sign in to the Azure portal.

git push azure master

Выполнение этой команды может занять несколько минут.This command may take a few minutes to run. При выполнении эта команда выводит приблизительно следующие сведения:While running, it displays information similar to the following example:

Counting objects: 42, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (39/39), done.
Writing objects: 100% (42/42), 9.43 KiB | 0 bytes/s, done.
Total 42 (delta 15), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id 'c40efbb40e'.
remote: Generating deployment script.
remote: Generating deployment script for python Web Site
.
.
.
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
remote: App container will begin restart within 10 seconds.
To https://user2234@cephalin-python.scm.azurewebsites.net/cephalin-python.git
 * [new branch]      master -> master

Переход в приложениеBrowse to the app

Перейдите в развертываемое приложение с помощью веб-браузера.Browse to the deployed application using your web browser.

http://<app_name>.azurewebsites.net

Пример кода Python выполняется в веб-приложении со встроенным образом.The Python sample code is running in a web app with built-in image.

Пример приложения, выполняющегося в Azure

Поздравляем!Congratulations! Вы развернули свое первое приложение Python в службе приложений в Linux.You've deployed your first Python app to App Service on Linux.

Обновление на локальном компьютере и повторное развертывание кодаUpdate locally and redeploy the code

В локальном репозитории откройте файл application.py и внесите небольшое изменение в последней строке:In the local repository, open the application.py file, and make a small change to the text in the last line:

return "Hello Azure!"

Зафиксируйте изменения в Git, а затем отправьте изменения кода в Azure.Commit your changes in Git, and then push the code changes to Azure.

git commit -am "updated output"
git push azure master

После завершения развертывания перейдите в окно браузера, открытое на шаге перехода в приложение, и обновите страницу.Once deployment has completed, switch back to the browser window that opened in the Browse to the app step, and refresh the page.

Обновленный пример приложения, выполняющегося в Azure

Управление новым веб-приложением AzureManage your new Azure web app

Перейдите на портал Azure для управления созданным веб-приложением.Go to the Azure portal to manage the web app you created.

В меню слева выберите Службы приложений, а затем щелкните имя своего веб-приложения Azure.From the left menu, click App Services, and then click the name of your Azure web app.

Переход к веб-приложению Azure на портале

Отобразится страница обзора вашего веб-приложения.You see your web app's Overview page. Вы можете выполнять базовые задачи управления: обзор, завершение, запуск, перезагрузку и удаление.Here, you can perform basic management tasks like browse, stop, start, restart, and delete.

Страница службы приложений на портале Azure

В меню слева доступно несколько страниц для настройки приложения.The left menu provides different pages for configuring your app.

Очистка ресурсовClean up resources

На предыдущем шаге вы создали ресурсы Azure в группе ресурсов.In the preceding steps, you created Azure resources in a resource group. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов, выполнив следующую команду в Cloud Shell:If you don't expect to need these resources in the future, delete the resource group by running the following command in the Cloud Shell:

az group delete --name myResourceGroup

Ее выполнение может занять до минуты.This command may take a minute to run.

Дополнительная информацияNext steps

Сейчас встроенный образ Python в Службе приложений на платформе Linux доступен в предварительной версии. Вы можете настроить команду для запуска приложения.The built-in Python image in App Service on Linux is currently in Preview, and you can customize the command used to start your app . Также приложения Python для рабочей среды можно создавать с помощью настраиваемого контейнера.You can also create production Python apps using a custom container instead.