빠른 시작: Azure App Service on Linux에서 Python 앱 만들기Quickstart: Create a Python app in Azure App Service on Linux

이 빠른 시작에서는 확장성이 뛰어난 자체 패치 웹 호스팅 서비스인 App Service on Linux에 Python 앱을 배포합니다.In this quickstart, you deploy a Python web app to App Service on Linux, Azure's highly scalable, self-patching web hosting service. Mac, Linux 또는 Windows 컴퓨터에서 로컬 Azure CLI(명령줄 인터페이스)를 사용합니다.You use the local Azure command-line interface (CLI) on a Mac, Linux, or Windows computer. 구성하는 웹앱은 무료 App Service 계층을 사용하기 때문에 이 문서를 진행하는 동안 비용이 발생하지 않습니다.The web app you configure uses a free App Service tier, so you incur no costs in the course of this article.

IDE를 통한 앱 배포를 선호하는 경우에는 Visual Studio Code에서 App Service에 Python 앱 배포를 참조하세요.If you prefer to deploy apps through an IDE, see Deploy Python apps to App Service from Visual Studio Code.

사전 요구 사항Prerequisites

샘플 다운로드Download the sample

터미널 창에서 다음 명령을 실행하여 로컬 컴퓨터에 샘플 애플리케이션을 복제합니다.In a terminal window, run the following command to clone the sample application to your local computer.

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

그런 다음, 해당 폴더로 이동합니다.Then go into that folder:

cd python-docs-hello-world

리포지토리는 코드에 Flask 앱이 포함되었음을 App Service에 알려주는 application.py 파일을 포함합니다.The repository contains an application.py file, which tells App Service that the code contains a Flask app. 자세한 내용은 컨테이너 시작 프로세스 및 사용자 지정을 참조하세요.For more information, see Container startup process and customizations.

샘플 실행Run the sample

터미널 창에서 아래 명령(운영 체제에 적합한 명령)을 사용하여 필요한 종속성을 설치하고 기본 제공 개발 서버를 시작합니다.In a terminal window, use the commands below (as appropriate for your operating system) to install the required dependencies and launch the built-in development server.

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

웹 브라우저를 열고 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 앱을 로컬로 실행

터미널 창에서 Ctrl+C를 눌러서 웹 서버를 종료합니다.In your terminal window, press Ctrl+C to exit the web server.

Azure에 로그인Sign in to Azure

Azure CLI는 로컬 터미널에서 사용하여 명령줄에서 Azure 리소스를 프로비저닝하고 관리할 수 있는 여러 가지 편리한 명령을 제공합니다.The Azure CLI provides you with many convenient commands that you use from a local terminal to provision and manage Azure resources from the command line. 이러한 명령을 사용하여 브라우저에서 Azure Portal을 통해 수행하는 것과 동일한 작업을 완료할 수 있습니다.You can use commands to complete the same tasks that you would through the Azure portal in a browser. 스크립트에서 CLI 명령을 사용하여 관리 프로세스를 자동화할 수도 있습니다.You can also use CLI commands in scripts to automate management processes.

Azure CLI에서 Azure 명령을 실행하려면 먼저 az login 명령을 사용하여 로그인해야 합니다.To run Azure commands in the Azure CLI, you must first sign in using the az login command. 이 명령은 로그인 정보를 수집하는 브라우저를 엽니다.This command opens a browser to gather your credentials.

az login

샘플 배포Deploy the sample

az webapp up 명령은 App Service에서 웹앱을 만들고 코드를 배포합니다.The az webapp up command creates the web app on App Service and deploys your code.

샘플 코드를 포함하는 python-docs-hello-world 폴더에서 다음 az webapp up 명령을 실행합니다.In the python-docs-hello-world folder that contains the sample code, run the following az webapp up command. <app-name>을 전역적으로 고유한 앱 이름(유효한 문자는 a-z, 0-9, -)으로 바꿉니다.Replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -). <location-name>도 Azure 지역(예: centralus, eastasia, westeurope, koreasouth, brazilsouth, centralindia 등)으로 바꿉니다.Also replace <location-name> with an Azure region such as centralus, eastasia, westeurope, koreasouth, brazilsouth, centralindia, and so on. (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.)

az webapp up --sku F1 -n <app-name> -l <location-name>

이 명령은 실행하는 데 몇 분 정도 걸릴 수 있습니다.This command may take a few minutes complete run. 실행 시 다음 예와 유사한 정보를 출력합니다.While running, it displays information similar to the following example:

The behavior of this command has been altered by the following extension: webapp
Creating Resource group 'appsvc_rg_Linux_centralus' ...
Resource group creation complete
Creating App service plan 'appsvc_asp_Linux_centralus' ...
App service plan creation complete
Creating app '<app-name>' ....
Webapp creation complete
Creating zip with contents of dir /home/username/quickstart/python-docs-hello-world ...
Preparing to deploy contents to app.
All done.
{
  "app_url": "https:/<app-name>.azurewebsites.net",
  "location": "Central US",
  "name": "<app-name>",
  "os": "Linux",
  "resourcegroup": "appsvc_rg_Linux_centralus ",
  "serverfarm": "appsvc_asp_Linux_centralus",
  "sku": "BASIC",
  "src_path": "/home/username/quickstart/python-docs-hello-world ",
  "version_detected": "-",
  "version_to_create": "python|3.7"
}

참고

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.

Python 샘플 코드가 기본 제공 이미지를 사용하여 App Service에서 Linux 컨테이너를 실행 중입니다.The Python sample code is running a Linux container in App Service using a built-in image.

Azure에서 샘플 Python 앱 실행

축하합니다.Congratulations! App Service on Linux에 Python 앱이 배포되었습니다.You've deployed your Python app to App Service on Linux.

업데이트 재배포Redeploy updates

원하는 코드 편집기에서 application.py를 열고 마지막 줄의 return 문을 다음 코드와 일치하도록 변경합니다.In your favorite code editor, open application.py and change the return statement on the last line to match the following code. print 문은 다음 섹션에서 작업하는 로깅 출력을 생성하기 위해 여기에 포함됩니다.The print statement is included here to generate logging output that you work with in the next section.

print("Handling request to home page.")
return "Hello Azure!"

변경 내용을 저장하고 편집기를 종료합니다.Save your changes and exit the editor.

처음으로 앱을 배포할 때 사용한 것과 동일한 az webapp up 명령을 사용하되 <app-name><location-name>을 이전에 사용한 것과 동일한 이름으로 바꿔서 앱을 재배포합니다.Redeploy the app using the following az webapp up command, using the same command you used to deploy the app the first time, replacing <app-name> and <location-name> with the same names you used before.

az webapp up --sku F1 -n <app-name> -l <location-name>

배포가 완료되면 브라우저 창으로 다시 전환하여 http://<app-name>.azurewebsites.net을 열고 페이지를 새로 고칩니다. 그러면 수정된 메시지가 표시됩니다.Once deployment has completed, switch back to the browser window open to http://<app-name>.azurewebsites.net and refresh the page, which should display the modified message:

Azure에서 업데이트된 샘플 Python 앱 실행

Visual Studio Code는 Python 웹앱을 App Service에 배포하는 프로세스를 간소화하는 Python 및 Azure App Service에 대한 강력한 확장 기능을 제공합니다.Visual Studio Code provides powerful extensions for Python and Azure App Service, which simplify the process of deploying Python web apps to App Service. 자세한 내용은 Visual Studio Code에서 Azure App Service에 Python 앱 배포를 참조하세요.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.

먼저 터미널에서 다음 명령을 실행하여 컨테이너 로깅을 설정합니다. 이때 <app-name>은 앱 이름으로 바꾸고, <resource-group-name>은 사용한 az webapp up 명령의 출력에 표시된 리소스 그룹 이름(예: "appsvc_rg_Linux_centralus")으로 바꿉니다.First, turn on container logging by running the following command in a terminal, replacing <app-name> with the name of your app and <resource-group-name> with the name of the resource group shown in the output of the az webapp up command you used (such as "appsvc_rg_Linux_centralus"):

az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem

컨테이너 로깅이 설정되면 다음 명령을 실행하여 로그 스트림을 표시합니다.Once container logging is turned on, run the following command to show the log stream:

az webapp log tail --name <app-name> --resource-group <resource-group-name>

브라우저에서 앱을 새로 고쳐서 콘솔 로그를 생성합니다. 여기에는 다음 텍스트와 유사한 줄이 포함되어야 합니다.Refresh the app in the browser to generate console logs, which should include lines similar to the following text. 출력이 즉시 표시되지 않으면 30초 후에 다시 시도합니다.If you don't see output immediately, try again in 30 seconds.

2019-10-23T12:40:03.815574424Z Handling request to home page.
2019-10-23T12:40:03.815602424Z 172.16.0.1 - - [23/Oct/2019:12:40:03 +0000] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.63 Safari/537.36 Edg/78.0.276.19"

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, type Ctrl+C.

Azure 앱 관리Manage the Azure app

만든 앱을 관리하려면 Azure Portal로 이동합니다.Go to the Azure portal to manage the app you created. App Services를 검색하여 선택합니다.Search for and select App Services.

Azure Portal의 App Services로 이동

Azure 앱의 이름을 선택합니다.Select the name of your Azure app.

Azure Portal의 App Services에서 Python 앱으로 이동

앱의 [개요] 페이지가 표시됩니다.You see your app's Overview page. 여기에서 찾아보기, 중지, 시작, 다시 시작, 삭제와 같은 기본 관리 작업을 수행할 수 있습니다.Here, you can perform basic management tasks like browse, stop, start, restart, and delete.

Azure Portal의 개요 페이지에서 Python 앱 관리

App Service 메뉴는 앱 구성을 위한 다양한 페이지를 제공합니다.The App Service menu provides different pages for configuring your app.

리소스 정리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. 무료 F1 계층 이외의 App Service SKU를 사용하면 이러한 리소스에 지속적인 비용이 발생합니다.If you use an App Service SKU other than the free F1 tier, these resources will incur ongoing costs.

이러한 리소스가 나중에 필요하지 않을 것으로 예상되면 다음 명령을 실행하여 리소스 그룹을 삭제합니다. 이때 <resource-group-name>az webapp up 명령의 출력에 표시된 리소스 그룹(예: "appsvc_rg_Linux_centralus")으로 바꿉니다.If you don't expect to need these resources in the future, delete the resource group by running the following command, replacing <resource-group-name> with the resource group shown in the output of the az webapp up command, such as "appsvc_rg_Linux_centralus". 이 명령을 완료하는 데 1분 정도 걸릴 수 있습니다.The command may take a minute to complete.

az group delete -n <resource-group-name>

다음 단계Next steps