Краткое руководство. Создание приложения Python с помощью Службы приложений Azure в LinuxQuickstart: Create a Python app using Azure App Service on Linux

В этом кратком руководстве описывается процесс развертывания веб-приложения Python для службы приложений на платформе Linux, высокомасштабируемой службы веб-размещения Azure с самостоятельной установкой исправлений.In this quickstart, you deploy a Python web app to App Service on Linux, Azure's highly scalable, self-patching web hosting service. Для развертывания примера с помощью платформ Flask или Django на компьютерах Mac, Linux или Windows используется интерфейс командной строки Azure (CLI).You use the local Azure command-line interface (CLI) on a Mac, Linux, or Windows computer to deploy a sample with either the Flask or Django frameworks. Веб-приложение, которое вы настраиваете, использует бесплатный уровень Службы приложений, поэтому в процессе выполнения этого руководства затраты на ресурсы Azure не изменяются.The web app you configure uses a free App Service tier, so you incur no costs in the course of this article.

Совет

Если вы привыкли работать с Visual Studio Code, ознакомьтесь со статьей Руководство по развертыванию приложений Python в Службе приложений Azure в Linux с помощью Visual Studio Code .If you prefer using Visual Studio Code instead, follow our Visual Studio Code App Service quickstart.

Настройка начальной средыSet up your initial environment

  1. Подготовьте учетную запись Azure с активной подпиской.Have an Azure account with an active subscription. Создайте учетную запись бесплатно.Create an account for free.
  2. Установите Python 3.6 или более поздней версии.Install Python 3.6 or higher.
  3. Установите Azure CLI версии 2.0.80 или более поздней для выполнения команд в любой оболочке для подготовки и настройки ресурсов Azure.Install the Azure CLI 2.0.80 or higher, with which you run commands in any shell to provision and configure Azure resources.

Откройте окно терминала и проверьте, что используется Python 3.6 или более поздней версии:Open a terminal window and check your Python version is 3.6 or higher:

python3 --version

Убедитесь, что у вас есть Azure CLI версии 2.0.80 или выше.Check that your Azure CLI version is 2.0.80 or higher:

az --version

Теперь войдите в Azure с помощью CLI.Then sign in to Azure through the CLI:

az login

Эта команда открывает окно браузера для ввода учетных данных.This command opens a browser to gather your credentials. После выполнения команда отображает выходные данные JSON с информацией о подписках.When the command finishes, it shows JSON output containing information about your subscriptions.

Войдя, вы сможете выполнять в Azure CLI команды Azure для работы с ресурсами в подписке.Once signed in, you can run Azure commands with the Azure CLI to work with resources in your subscription.

Возникли проблемы?Having issues? Сообщите нам об этом.Let us know.

Клонирования репозиторияClone the sample

Клонируйте пример репозитория, выполнив указанную ниже команду, и перейдите к папке.Clone the sample repository using the following command and navigate into the sample folder. (Установите Git, если у вас его еще нет.)(Install git if you don't have git already.)

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

Пример содержит код для определенной платформы, который Служба приложений Azure распознает при запуске приложения.The sample contains framework-specific code that Azure App Service recognizes when starting the app. Дополнительные сведения см. в разделе Процесс запуска контейнера.For more information, see Container startup process.

Возникли проблемы?Having issues? Сообщите нам об этом.Let us know.

Запуск примераRun the sample

  1. Перейдите в папку python-docs-hello-world:Navigate into in the python-docs-hello-world folder:

    cd python-docs-hello-world
    
  2. Создайте виртуальную среду и установите необходимые зависимости.Create a virtual environment and install dependencies:

    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    

    Если вы видите ошибку "[Errno 2] Не существует такого файла или папки: requirements.txt", убедитесь, что вы находитесь в папке python-docs-hello-world.If you encounter "[Errno 2] No such file or directory: 'requirements.txt'.", make sure you're in the python-docs-hello-world folder.

  3. Запустите сервер разработки.Run the development server.

    flask run
    

    По умолчанию сервер предполагает, что модулем записи приложения является app.py, как в примере.By default, the server assumes that the app's entry module is in app.py, as used in the sample.

    Если вы используете другое имя модуля, задайте это имя для переменной среды FLASK_APP.If you use a different module name, set the FLASK_APP environment variable to that name.

    При возникновении ошибки "Could not locate a Flask application.If you encounter the error, "Could not locate a Flask application. You did not provide the 'FLASK_APP' environment variable, and a 'wsgi.py' or 'app.py' module was not found in the current directory." (Не удалось обнаружить приложение Flask. Вы не предоставили переменную среды FLASK_APP, а модуль wsgi.py или app.py не найден в текущем каталоге) убедитесь, что вы находитесь в папке python-docs-hello-world с примером.You did not provide the 'FLASK_APP' environment variable, and a 'wsgi.py' or 'app.py' module was not found in the current directory.", make sure you're in the python-docs-hello-world folder that contains the sample.

  4. Откройте веб-браузер и перейдите к примеру приложения по адресу http://localhost:5000/.Open a web browser and go to the sample app at http://localhost:5000/. Приложение отображает сообщение Hello World! .The app displays the message Hello, World!.

    Локальный запуск примера приложения Python

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

  1. Перейдите в папку python-docs-hello-django:Navigate into the python-docs-hello-django folder:

    cd python-docs-hello-django
    
  2. Создайте виртуальную среду и установите необходимые зависимости.Create a virtual environment and install dependencies:

    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    

    Если вы видите ошибку "[Errno 2] Не существует такого файла или папки: requirements.txt", убедитесь, что вы находитесь в папке python-docs-hello-django.If you encounter "[Errno 2] No such file or directory: 'requirements.txt'.", make sure you're in the python-docs-hello-django folder.

  3. Запустите сервер разработки.Run the development server.

    python manage.py runserver
    
  4. Откройте веб-браузер и перейдите к примеру приложения по адресу http://localhost:8000/.Open a web browser and go to the sample app at http://localhost:8000/. Приложение отображает сообщение Hello World! .The app displays the message Hello, World!.

    Локальный запуск примера приложения Python

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

Возникли проблемы?Having issues? Сообщите нам об этом.Let us know.

Развертывание примераDeploy the sample

Разверните код в локальной папке (python-docs-hello-world) с помощью команды az webapp up.Deploy the code in your local folder (python-docs-hello-world) using the az webapp up command:

az webapp up --sku B1 --name <app-name>
  • Если команда az не распознана, проверьте, установили ли вы Azure CLI согласно сведениям, указанным в разделе Настройка начальной среды.If the az command isn't recognized, be sure you have the Azure CLI installed as described in Set up your initial environment.
  • Если команда webapp не распознается, убедитесь, что вы используете Azure CLI версии 2.0.80 или более поздней.If the webapp command isn't recognized, because that your Azure CLI version is 2.0.80 or higher. Если нет, установите последнюю версию.If not, install the latest version.
  • Замените <app_name> именем, уникальным для всех регионов Azure (допустимыми символами являются a-z, 0-9и - ).Replace <app_name> with a name that's unique across all of Azure (valid characters are a-z, 0-9, and -). Рекомендуется использовать сочетание названия компании и идентификатора приложения.A good pattern is to use a combination of your company name and an app identifier.
  • Аргумент --sku B1 создает веб-приложение в ценовой категории "Базовый", что подразумевает небольшую почасовую оплату.The --sku B1 argument creates the web app on the Basic pricing tier, which incurs a small hourly cost. Этот аргумент можно опустить, чтобы использовать более быструю ценовую категорию "Премиум".Omit this argument to use a faster premium tier.
  • При необходимости вы можете использовать аргумент --location <location-name>, где <location_name> является доступным регионом Azure.You can optionally include the argument --location <location-name> where <location_name> is an available Azure region. Список допустимых регионов для учетной записи Azure можно получить, выполнив команду az account list-locations.You can retrieve a list of allowable regions for your Azure account by running the az account list-locations command.
  • Если отображается сообщение об ошибке Could not auto-detect the runtime stack of your app (Не удалось автоматически определить стек среды выполнения приложения), убедитесь, что вы выполняете команду в папке python-docs-hello-world (Flask) или в папке python-docs-hello-django (Django), где находится файл requirements.txt.If you see the error, "Could not auto-detect the runtime stack of your app," make sure you're running the command in the python-docs-hello-world folder (Flask) or the python-docs-hello-django folder (Django) that contains the requirements.txt file. (см. статью об устранение неполадок с автоматическим обнаружением с помощью команды az webapp up на сайте GitHub).(See Troubleshooting auto-detect issues with az webapp up (GitHub).)

Выполнение этой команды может занять несколько минут.The command may take a few minutes to complete. Во время выполнения она предоставляет сообщения о создании группы ресурсов, плане службы приложений и приложении размещения, настройке ведения журнала и последующем выполнении развертывания ZIP-файла.While running, it provides messages about creating the resource group, the App Service plan and hosting app, configuring logging, then performing ZIP deployment. Затем оно выдает сообщение You can launch the app at http://<app-name>.azurewebsites.net (Вы можете запустить приложение по адресу http://.azurewebsites.net). Это URL-адрес приложения в Azure.It then gives the message, "You can launch the app at http://<app-name>.azurewebsites.net", which is the app's URL on Azure.

Пример выходных данных команды az webapp up

Возникли проблемы?Having issues? Сначала изучите руководство по устранению неполадок. Если проблему решить не удается, свяжитесь с нами.Refer first to the Troubleshooting guide, otherwise, let us know.

Примечание

Команда az webapp up выполняет следующие действия:The az webapp up command does the following actions:

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

Найдите развернутое приложение в веб-браузере по URL-адресу http://<app-name>.azurewebsites.net.Browse to the deployed application in your web browser at the URL http://<app-name>.azurewebsites.net. На запуск приложения может потребоваться несколько минут, поэтому при отображении страницы приложения по умолчанию подождите минуту и обновите окно браузера.It can take a minute or two for the the app to start, so if you see a default app page, wait a minute and refresh the browser.

Пример кода Python запускает контейнер Linux в Службе приложений с помощью встроенного образа.The Python sample code is running a Linux container in App Service using a built-in image.

Запуск примера приложения Python в Azure

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

Возникли проблемы?Having issues? Сначала изучите руководство по устранению неполадок. Если проблему решить не удается, свяжитесь с нами.Refer first to the Troubleshooting guide, otherwise, let us know.

Повторное развертывание обновленийRedeploy updates

В этом разделе вы внесете небольшое изменение в код, а затем повторно развернете код в Azure.In this section, you make a small code change and then redeploy the code to Azure. Изменение кода включает в себя инструкцию print для создания выходных данных журнала, которые понадобятся в следующем разделе.The code change includes a print statement to generate logging output that you work with in the next section.

Откройте app.py в редакторе и обновите функцию hello, чтобы она соответствовала следующему коду.Open app.py in an editor and update the hello function to match the following code.

def hello():
    print("Handling request to home page.")
    return "Hello, Azure!"

Откройте hello/views.py в редакторе и обновите функцию hello, чтобы она соответствовала следующему коду.Open hello/views.py in an editor and update the hello function to match the following code.

def hello(request):
    print("Handling request to home page.")
    return HttpResponse("Hello, Azure!")

Сохраните изменения, а затем повторно разверните приложение с помощью команды az webapp up.Save your changes, then redeploy the app using the az webapp up command again:

az webapp up

Эта команда использует значения, которые кэшируются локально в файле .azure/config, включая имя приложения, группу ресурсов и план службы приложений.This command uses values that are cached locally in the .azure/config file, including the app name, resource group, and App Service plan.

После завершения развертывания вернитесь в окно браузера и откройте http://<app-name>.azurewebsites.net.Once deployment is complete, switch back to the browser window open to http://<app-name>.azurewebsites.net. Обновите страницу, на которой должно отобразиться измененное сообщение:Refresh the page, which should display the modified message:

Запуск обновленного примера приложения Python в Azure

Возникли проблемы?Having issues? Сначала изучите руководство по устранению неполадок. Если проблему решить не удается, свяжитесь с нами.Refer first to the Troubleshooting guide, otherwise, let us know.

Совет

Visual Studio Code предоставляет разнообразные расширения для Python и Службы приложений Azure, которые упрощают процесс развертывания веб-приложений Python в службе приложений.Visual Studio Code provides powerful extensions for Python and Azure App Service, which simplify the process of deploying Python web apps to App Service. Дополнительные сведения см. в статье Развертывание приложений Python в Службе приложений из Visual Studio Code.For more information, see Deploy Python apps to App Service from Visual Studio Code.

Журналы потоковой передачиStream logs

Вы можете получить доступ к журналам консоли, созданным в приложении, и контейнеру, в котором он выполняется.You can access the console logs generated from inside the app and the container in which it runs. Журналы содержат все выходные данные, созданные с помощью инструкций print.Logs include any output generated using print statements.

Чтобы выполнить потоковую передачу журналов, запустите команду az webapp log tail:To stream logs, run the az webapp log tail command:

az webapp log tail

Кроме того, вы можете использовать параметр --logs, а потом — команду az webapp up, чтобы автоматически запустить потоковую передачу журналов для развертывания.You can also include the --logs parameter with then az webapp up command to automatically open the log stream on deployment.

Обновите приложение в браузере, чтобы создать журналы консоли, которые содержат сообщения с HTTP-запросами к приложению.Refresh the app in the browser to generate console logs, which include messages describing HTTP requests to the app. Если выходные данные не отображаются немедленно, повторите попытку через 30 секунд.If no output appears immediately, try again in 30 seconds.

Вы также можете проверить файлы журнала в браузере на странице https://<app-name>.scm.azurewebsites.net/api/logs/docker.You can also inspect the log files from the browser at https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Чтобы предотвратить потоковую передачу журналов, нажмите Ctrl+C в окне терминала.To stop log streaming at any time, press Ctrl+C in the terminal.

Возникли проблемы?Having issues? Сообщите нам об этом.Let us know.

Управление приложением AzureManage the Azure app

Перейдите на портал Azure, чтобы управлять созданным приложением.Go to the Azure portal to manage the app you created. Найдите в поиске и выберите Службы приложений.Search for and select App Services.

Перейдите к разделу службы приложений на портале Azure

Выберите имя приложения Azure.Select the name of your Azure app.

Переход к приложению Python в Службе приложений на портале Azure

При выборе приложения открывается страница Обзор, где можно выполнять основные задачи управления, такие как обзор, завершение, запуск, перезапуск и удаление.Selecting the app opens its Overview page, where you can perform basic management tasks like browse, stop, start, restart, and delete.

Управление приложением Python на странице "Обзор" на портале Azure

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

Возникли проблемы?Having issues? Сначала изучите руководство по устранению неполадок. Если проблему решить не удается, свяжитесь с нами.Refer first to the Troubleshooting guide, otherwise, let us know.

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

На предыдущем шаге вы создали ресурсы Azure в группе ресурсов.In the preceding steps, you created Azure resources in a resource group. Группа ресурсов имеет имя, такое как "appsvc_rg_Linux_CentralUS", в зависимости от расположения.The resource group has a name like "appsvc_rg_Linux_CentralUS" depending on your location. Если веб-приложение продолжит выполняться, с вас начнет взиматься плата (см. сведения о ценах на Службу приложений).If you keep the web app running, you will incur some ongoing costs (see App Service pricing).

Если эти ресурсы вам не понадобятся в будущем, удалите группу ресурсов, выполнив следующие команды:If you don't expect to need these resources in the future, delete the resource group by running the following command:

az group delete --no-wait

Эта команда использует имя группы ресурсов, кэшированное в файле .azure/config.The command uses the resource group name cached in the .azure/config file.

Аргумент --no-wait позволяет команде возвращать сведения до завершения операции.The --no-wait argument allows the command to return before the operation is complete.

Возникли проблемы?Having issues? Сообщите нам об этом.Let us know.

Дальнейшие действияNext steps