빠른 시작: Azure App Service on Linux에서 Python 앱 만들기

이 빠른 시작에서는 확장성이 뛰어난 자체 패치 웹 호스팅 서비스인 App Service on Linux에 Python 앱을 배포합니다. Azure CLI Windows, Linux 또는 macos 환경에서 로컬로 사용 하 여 flask 또는 Django 프레임 워크로 샘플을 배포 합니다. 구성하는 웹앱은 Azure 구독에서 약간의 비용이 발생하는 기본 App Service 계층을 사용합니다.

초기 환경 설정

  1. 활성 구독이 포함된 Azure 계정이 있어야 합니다. 체험 계정을 만듭니다.
  2. Python 3.6 이상을 설치합니다.
  3. Azure CLI를 설치합니다. 이를 통해 셸에서 명령을 실행하여 Azure 리소스를 프로비전하고 구성할 수 있습니다.

터미널 창을 열고 Python 버전이 3.6 이상인지 확인합니다.

python3 --version

Azure CLI 버전이 2.0.80 이상인지 확인합니다.

az --version

그런 다음, CLI를 통해 Azure에 로그인합니다.

az login

이 명령은 로그인 정보를 수집하는 브라우저를 엽니다. 명령이 완료되면 구독에 대한 정보가 포함된 JSON 출력이 표시됩니다.

로그인하면 Azure CLI에서 Azure 명령을 실행하여 구독의 리소스를 사용할 수 있습니다.

문제가 있나요? 알려주세요.

샘플 복제

다음 명령을 사용하여 샘플 리포지토리를 복제하고 샘플 폴더로 이동합니다. (git를 아직 설치하지 않은 경우 git를 설치합니다.)

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

이 샘플에는 Azure App Service가 앱을 시작할 때 인식하는 프레임워크 관련 코드가 포함되어 있습니다. 자세한 내용은 컨테이너 시작 프로세스를 참조하세요.

문제가 있나요? 알려주세요.

샘플 실행

  1. python-docs-hello-world 폴더로 이동합니다.

    cd python-docs-hello-world
    
  2. 가상 환경을 만들고 종속성을 설치합니다.

    # Linux systems only
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    
    # Git Bash on Windows only
    py -3 -m venv .venv
    source .venv\\scripts\\activate
    pip install -r requirements.txt
    

    Windows 시스템에 있는 경우 "'source'가 내부 또는 외부 명령으로 인식되지 않습니다."라는 오류 메시지가 표시되면 Git Bash 셸에서 실행하고 있는지 확인하거나 위의 Cmd 탭에 표시된 명령을 사용합니다.

    "[Errno 2] 해당하는 파일이나 디렉터리가 없습니다. 'requirements.txt'."라는 메시지가 표시되는 경우 python-docs-hello-world 폴더에 있는지 확인합니다.

  3. 개발 서버를 실행합니다.

    flask run
    

    기본적으로 서버는 샘플에서 사용되는 것처럼 앱의 진입 모듈이 app.py에 있다고 간주합니다.

    다른 모듈 이름을 사용하는 경우 FLASK_APP 환경 변수를 해당 이름으로 설정합니다.

    오류가 발생하면 "Flask 애플리케이션을 찾을 수 없습니다. 'FLASK_APP' 환경 변수를 제공하지 않고 'wsgi.py' 또는 'app.py' 모듈을 현재 디렉터리에서 찾을 수 없습니다."라는 메시지가 포함된 python-docs-hello-world 폴더에 있는지 확인하세요.

  4. 웹 브라우저를 열고 http://localhost:5000/의 샘플 앱으로 이동합니다. 앱에 Hello World! 메시지가 표시됩니다.

    Run a sample Python app locally

  5. 터미널 창에서 ctrlC 를 눌러 개발 서버를 종료 합니다.

  1. python-docs-hello-django 폴더로 이동합니다.

    cd python-docs-hello-django
    
  2. 가상 환경을 만들고 종속성을 설치합니다.

    # Linux systems only
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    
    # Git Bash on Windows only
    py -3 -m venv .venv
    source .venv\\scripts\\activate
    pip install -r requirements.txt
    

    Windows 시스템에 있는 경우 "'source'가 내부 또는 외부 명령으로 인식되지 않습니다."라는 오류 메시지가 표시되면 Git Bash 셸에서 실행하고 있는지 확인하거나 위의 Cmd 탭에 표시된 명령을 사용합니다.

    "[Errno 2] 해당하는 파일이나 디렉터리가 없습니다. 'requirements.txt'."라는 메시지가 표시되는 경우 python-docs-hello-django 폴더에 있는지 확인합니다.

  3. 개발 서버를 실행합니다.

    python manage.py runserver
    
  4. 웹 브라우저를 열고 http://localhost:8000/의 샘플 앱으로 이동합니다. 앱에 Hello World! 메시지가 표시됩니다.

    Run a sample Python app locally

  5. 터미널 창에서 ctrlC 를 눌러 개발 서버를 종료 합니다.

문제가 있나요? 알려주세요.

샘플 배포

명령을 사용 하 여 로컬 폴더 (python-문서-hello-세계)에 코드를 배포 합니다 .

az webapp up --sku B1 --name <app-name>
  • az명령을 인식할 수 없는 경우 az에 설명 된 대로 Azure CLI 설치 되어 있어야 합니다.
  • webapp 명령이 인식되지 않는 경우 Azure CLI 버전이 2.0.80 이상이기 때문입니다. 그렇지 않은 경우 최신 버전을 설치합니다.
  • <app_name>을 모든 Azure에서 고유한 이름으로 바꿉니다(<app_name> ). 좋은 패턴은 회사 이름과 앱 식별자의 조합을 사용하는 것입니다.
  • --sku B1 인수는 기본 가격 책정 계층에 웹앱을 만듭니다. 이 경우 시간당 약간의 비용이 발생합니다. 이 인수를 생략하여 더 빠른 프리미엄 계층을 사용합니다.
  • 선택적으로 인수 --location <location-name>을 포함할 수 있습니다. 여기서 <location_name>은 사용 가능한 Azure 지역입니다. Az account list-위치 명령을 실행 하 여 Azure 계정에 대해 허용 되는 영역 목록을 검색할 수 있습니다.
  • "앱의 런타임 스택을 자동으로 검색할 수 없습니다."라는 오류가 표시되면 requirements.txt 파일이 포함된 python-docs-hello-world 폴더(Flask) 또는 python-docs-hello-django 폴더(Django)에서 명령을 실행하고 있는지 확인합니다. (az webapp up으로 자동 검색 문제 해결(GitHub)을 참조하세요.)

이 명령을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 실행되는 동안 리소스 그룹, App Service 계획 및 호스팅 앱을 만들고, 로깅을 구성한 다음, ZIP 배포 수행에 대한 메시지를 제공합니다. 그런 다음, "http://<app-name>.azurewebsites.net에서 앱을 시작할 수 있습니다."라는 메시지를 제공합니다. 이 메시지는 Azure에서 앱의 URL입니다.

Example output of the az webapp up command

문제가 있나요? 먼저 문제 해결 가이드를 참조하세요. 그렇지 않으면 알려주세요.

참고

az webapp up 명령에는 다음 작업이 포함됩니다.

  • 기본 리소스 그룹을 만듭니다.

  • 기본 App Service 계획을 만듭니다.

  • 지정된 이름으로 앱을 만듭니다.

  • Zip빌드 자동화가 활성화된 현재 작업 디렉터리의 모든 파일을 배포합니다.

  • 또는 다른 Azure CLI 명령을 사용 하 여 나중에 배포할 때 다시 지정할 필요가 없도록 azure/config 파일에서 매개 변수를 로컬로 캐시 합니다. 캐시된 값은 기본적으로 자동으로 사용됩니다.

앱으로 이동

웹 브라우저에서 배포된 애플리케이션(URL: http://<app-name>.azurewebsites.net)으로 이동합니다. 앱이 시작되는 데 1~2분 정도 걸릴 수 있으므로 기본 앱 페이지가 표시되면 잠시 기다렸다가 브라우저를 새로 고칩니다.

Python 샘플 코드가 기본 제공 이미지를 사용하여 App Service에서 Linux 컨테이너를 실행 중입니다.

Run a sample Python app in Azure

축하합니다! Python 앱을 App Service에 배포했습니다.

문제가 있나요? 먼저 문제 해결 가이드를 참조하세요. 그렇지 않으면 알려주세요.

업데이트 재배포

이 섹션에서는 작은 코드를 변경한 다음, 코드를 Azure에 다시 배포합니다. 코드 변경 사항은 다음 섹션에서 작업하는 로깅 출력을 생성하기 위해 print 문을 포함합니다.

편집기에서 app.py 을 열고 다음 코드와 일치 하도록 함수를 업데이트 합니다.

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

편집기에서 hello/py 을 열고 다음 코드와 일치 하도록 함수를 업데이트 합니다.

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

변경 내용을 저장한 다음, az webapp up 명령을 사용하여 앱을 다시 배포합니다.

az webapp up

이 명령은 앱 이름, 리소스 그룹 및 App Service 계획을 포함하여 .azure/config 파일에서 로컬로 캐시된 값을 사용합니다.

배포가 완료되면 http://<app-name>.azurewebsites.net으로 열린 브라우저 창으로 다시 전환합니다. 수정된 메시지를 표시하는 페이지를 새로 고칩니다.

Run an updated sample Python app in Azure

문제가 있나요? 먼저 문제 해결 가이드를 참조하세요. 그렇지 않으면 알려주세요.

Visual Studio Code는 Python 웹앱을 App Service에 배포하는 프로세스를 간소화하는 Python 및 Azure App Service에 대한 강력한 확장 기능을 제공합니다. 자세한 내용은 Visual Studio Code에서 Azure App Service에 Python 앱 배포를 참조하세요.

로그 스트리밍

앱 내부에서 생성되는 콘솔 로그와 앱이 실행되는 컨테이너에 액세스할 수 있습니다. 로그에는 print 문을 사용하여 생성된 모든 출력이 포함됩니다.

로그를 스트리밍하려면 az webapp log tail 명령을 실행합니다.

az webapp log tail

--logs 매개 변수를 포함한 다음, az webapp up 명령을 포함하여 배포 시 로그 스트림을 자동으로 열 수 있습니다.

브라우저에서 앱을 새로 고쳐서 콘솔 로그를 생성합니다. 여기에는 앱에 대한 HTTP 요청을 설명하는 메시지를 포함합니다. 출력이 즉시 표시되지 않으면 30초 후에 다시 시도합니다.

https://<app-name>.scm.azurewebsites.net/api/logs/docker의 브라우저에서 로그 파일을 검사할 수도 있습니다.

언제 든 지 로그 스트리밍을 중지 하려면 터미널에서 ctrlC 를 누릅니다.

문제가 있나요? 먼저 문제 해결 가이드를 참조하세요. 그렇지 않으면 알려주세요.

Azure 앱 관리

만든 앱을 관리하려면 Azure Portal로 이동합니다. App Services를 검색하여 선택합니다.

Navigate to App Services in the Azure portal

Azure 앱의 이름을 선택합니다.

Navigate to your Python app in App Services in the Azure portal

앱을 선택하면 해당 개요 페이지가 열리며 여기에서 찾아보기, 중지, 시작, 다시 시작, 삭제와 같은 기본 관리 작업을 수행할 수 있습니다.

Manage your Python app in the Overview page in the Azure portal

App Service 메뉴는 앱 구성을 위한 다양한 페이지를 제공합니다.

문제가 있나요? 먼저 문제 해결 가이드를 참조하세요. 그렇지 않으면 알려주세요.

리소스 정리

이전 단계에서 Azure 리소스를 리소스 그룹에 만들었습니다. 리소스 그룹의 이름은 사용자의 위치에 따라 "appsvc_rg_Linux_CentralUS" 등입니다. 웹앱을 계속 실행하는 경우 몇 가지 지속적인 비용이 발생합니다(App Service 가격 책정 참조).

나중에 이러한 리소스가 필요하지 않으면 다음 명령을 실행하여 리소스 그룹을 삭제합니다.

az group delete --no-wait

이 명령은 .azure/config 파일에 캐시된 리소스 그룹 이름을 사용합니다.

--no-wait 인수를 사용하면 작업이 완료되기 전에 명령을 반환할 수 있습니다.

문제가 있나요? 알려주세요.

다음 단계