- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
- kivy (python)
flask Azure에서 Flask를 사용하여 웹앱 만들기
2016.06.07 20:46
Azure에서 Flask를 사용하여 웹앱 만들기
이 자습서에서는 Azure 앱 서비스 웹앱에서 Python을 실행하는 방법을 설명합니다. 웹앱은 제한된 무료 호스팅 및 신속한 배포 기능을 제공하며, Python을 사용할 수 있습니다! 앱이 증가하면 유료 호스팅으로 전환하여 다른 모든 Azure 서비스와 통합할 수도 있습니다.
먼저 Bottle 웹 프레임워크(Django 및 Bottle은 이 자습서의 다른 버전 참조)를 사용하여 응용 프로그램을 만듭니다. Azure 갤러리에서 웹 사이트를 만들고, Git 배포를 설치하고, 리포지토리를 로컬로 복제합니다. 그런 다음 응용 프로그램을 로컬로 실행하고, 변경한 다음, 이를 커밋하여 Azure에 푸시합니다. 이 자습서에서는 Windows 또는 Mac/Linux에서 이 작업을 수행하는 방법을 보여 줍니다.
참고:
이 자습서를 완료하려면 Azure 계정이 필요합니다. Visual Studio 구독자 혜택을 활성화하거나 무료 평가판을 등록할 수 있습니다.
참고:
Azure 계정을 등록하기 전에 Azure 앱 서비스를 시작하려면 앱 서비스 평가로 이동합니다. 앱 서비스에서 단기 스타터 웹 앱을 즉시 만들 수 있습니다. 신용 카드는 필요하지 않으며 약정도 필요하지 않습니다.
필수 조건
- Windows, Mac 또는 Linux
- Python 2.7 또는 3.4
- setuptools, pip, virtualenv(Python 2.7 전용)
- Git
- Python Tools for Visual Studio(PTVS) - 참고: 선택 사항입니다.
참고: 현재 Python 프로젝트에서는 TFS 게시를 사용할 수 없습니다.
Windows
Python 2.7 또는 3.4(32비트)를 아직 설치하지 않은 경우 웹 플랫폼 설치 관리자를 사용하여 Azure SDK for Python 2.7 또는 Azure SDK for Python 3.4를 설치하는 것이 좋습니다. 그러면 32비트 버전의 Python, setuptools, pip, virtualenv 등(32비트 Python은 Azure 호스트 컴퓨터에 설치되는 버전)이 설치됩니다. 또는 python.org에서 Python을 다운로드할 수 있습니다.
Git의 경우 Windows용 Git 또는 Windows용 GitHub를 설치하는 것이 좋습니다. Visual Studio를 사용하는 경우 통합 Git 지원을 사용할 수 있습니다.
또한 Python Tools 2.2 for Visual Studio를 설치하는 것이 좋습니다. 이는 선택 사항이지만 Visual Studio가 있으면 Python IDE가 향상됩니다.
Mac/Linux
Python 및 Git를 이미 설치했어야 하지만 Python 버전은 2.7 또는 3.4여야 합니다.
Azure 포털에서 웹앱 만들기
앱을 만드는 첫 번째 단계는 Azure 포털을 통해 웹앱을 만드는 것입니다.
- Azure 포털에 로그인하여 왼쪽 아래에 있는 새로 만들기 단추를 클릭합니다.
- 웹 + 모바일을 클릭합니다.
- 검색 상자에 "python"을 입력합니다.
- 검색 결과에서 선택 Flask를 선택한 다음 만들기를 클릭합니다.
- 새 Flask 앱을 구성(예: 새 앱 서비스 계획 만들기)하고 해당 앱의 새 리소스 그룹을 구성합니다. 그런 다음에 만들기를 클릭합니다.
- Azure 앱 서비스에서 GIT를 사용하여 연속 배포의 지침에 따라 새로 만든 웹앱에 대한 Git 게시를 구성합니다.
응용 프로그램 개요
Git 리포지토리 콘텐츠
다음은 초기 Git 리포지토리에 표시되는 파일의 개요입니다(다음 섹션에서 복제).
\FlaskWebProject\__init__.py \FlaskWebProject\views.py \FlaskWebProject\static\content\ \FlaskWebProject\static\fonts\ \FlaskWebProject\static\scripts\ \FlaskWebProject\templates\about.html \FlaskWebProject\templates\contact.html \FlaskWebProject\templates\index.html \FlaskWebProject\templates\layout.html
응용 프로그램의 기본 소스. 마스터 레이아웃과 함께 3페이지(index, about, contact)로 구성됩니다. 정적 콘텐츠와 스크립트에는 bootstrap, jquery, modernizr 및 respond가 포함되어 있습니다.
\runserver.py
로컬 개발 서버 지원. 이를 사용하여 응용 프로그램을 로컬로 실행합니다.
\FlaskWebProject.pyproj \FlaskWebProject.sln
Python Tools for Visual Studio에서 사용되는 프로젝트 파일
\ptvs_virtualenv_proxy.py
가상 환경용 IIS 프록시 및 PTVS 원격 디버깅 지원
\requirements.txt
이 응용 프로그램에 필요한 외부 패키지. 배포 스크립트는 이 파일에 나열된 패키지를 pip 설치합니다.
\web.2.7.config \web.3.4.config
IIS 구성 파일. 배포 스크립트에서는 적절한 web.x.y.config를 사용하며 이를 web.config로 복사합니다.
선택적 파일 - 배포 사용자 지정
Azure는 다음 조건 모두가 참일 경우 응용 프로그램에서 Python을 사용하도록 결정합니다.
- 루트 폴더에 있는 requirements.txt 파일
- 루트 폴더에 있는 .py 파일이나 python을 지정하는 runtime.txt
이런 경우, Python 특정 배포 스크립트가 사용되어 파일 표준 동기화뿐만 아니라 다음과 같은 추가 Python 작업도 수행합니다.
- 가상 환경 자동 관리
- pip를 사용하여 requirements.txt에 나열된 패키지 설치
- 선택한 Python 버전에 따라 적절한 web.config 만들기
- Django 응용 프로그램에 대한 정적 파일 수집
스크립트를 사용자 지정하지 않고도 기본 배포 단계의 특정 측면을 제어할 수 있습니다.
모든 Python 특정 배포 단계를 건너뛰려는 경우, 다음과 같은 빈 파일을 만들면 됩니다.
\.skipPythonDeployment
배포를 더 효율적으로 제어하려면 다음 파일을 만들어 기본 배포 스크립트를 재정하면 됩니다.
\.deployment \deploy.cmd
Azure 명령줄 인터페이스를 사용하여 파일을 만들 수 있습니다. 프로젝트 폴더에서 다음 명령을 사용합니다.
azure site deploymentscript --python
이러한 파일이 존재하지 않으면 Azure는 임시 배포 스크립트를 만들고 실행합니다. 위의 명령을 사용하여 만드는 것과 같습니다.
선택적 파일 - Python 런타임
Azure는 다음 우선 순위에 따라 가상 환경에 사용할 Python 버전을 결정합니다.
- 루트 폴더에 있는 runtime.txt에 지정된 버전
- 웹앱 구성의 Python 설정에서 지정된 버전(Azure 포털의 웹앱에 대한 설정 > 응용 프로그램 설정 블레이드)
- 위 항목 중 어느 것도 지정되지 않은 경우 python-2.7이 기본값임
다음의 콘텐츠에 대해 유효한 값은
\runtime.txt
다음과 같습니다.
- python-2.7
- python-3.4
마이크로 버전(3번째 자릿수)이 지정된 경우 이는 무시됩니다.
서버의 추가 파일
일부 파일은 서버에 있지만 git 리포지토리에 추가되지 않습니다. 이러한 파일은 배포 스크립트를 통해 생성됩니다.
\web.config
IIS 구성 파일. 모든 배포에서 web.x.y.config를 통해 생성됩니다.
\env\
Python 가상 환경. 호환되는 가상 환경이 앱에 없는 경우 배포 중에 생성됩니다. requirements.txt에 나열된 패키지가 pip 설치되지만 패키지가 이미 설치된 경우에는 pip에서 설치를 건너뜁니다.
다음 세 개의 섹션에서는 세 가지 환경에서 웹앱 배포를 계속 진행하는 방법에 대해 설명합니다.
- Windows, Python Tools for Visual Studio 사용
- Windows, 명령줄 사용
- Mac/Linux, 명령줄 사용
웹앱 배포 - Windows - Python Tools for Visual Studio
리포지토리 복제
먼저 Azure 포털에서 제공된 URL을 사용하여 리포지토리를 복제합니다. 자세한 내용은 Azure 앱 서비스에서 GIT를 사용하여 연속 배포를 참조하세요.
리포지토리의 루트에 포함된 솔루션 파일(.sln)을 엽니다.

가상 환경 만들기
이제 로컬 개발을 위한 가상 환경을 만듭니다. Python Environments를 마우스 오른쪽 단추로 클릭하고 Add Virtual Environment...를 선택합니다.
-
환경 이름이
env인지 확인합니다. -
기본 해석기를 선택합니다. 웹앱에 대해 선택(runtime.txt 또는 Azure 포털에서 웹앱의 응용 프로그램 설정 블레이드를 통해)된 Python의 동일한 버전을 사용해야 합니다.
-
패키지를 다운로드하여 설치하는 옵션이 선택되어 있는지 확인합니다.

만들기를 클릭합니다. 가상 환경이 만들어지고 requirements.txt에 나열된 종속성이 설치됩니다.
개발 서버를 사용하여 실행
F5 키를 눌러 디버깅을 시작하면 웹 브라우저에서 로컬로 실행되는 페이지가 자동으로 열립니다.

원본에서 중단점을 설정하고, 조사식 창을 사용하는 등의 작업을 수행할 수 있습니다. 여러 기능에 대한 자세한 내용은 Python Tools for Visual Studio 설명서를 참조하세요.
변경 작업
이제 응용 프로그램 소스 및/또는 템플릿을 변경하여 실험할 수 있습니다.
변경 내용을 테스트한 후 Git 리포지토리에 커밋합니다.

추가 패키지 설치
응용 프로그램에 Python 및 Flask 이외의 종속성이 있을 수 있습니다.
pip를 사용하여 추가 패키지를 설치할 수 있습니다. 패키지를 설치하려면 가상 환경을 마우스 오른쪽 단추로 클릭하고 Install Python Package를 선택합니다.
예를 들어 Azure 저장소, 서비스 버스 및 기타 Azure 서비스에 대한 액세스를 제공하는 Azure SDK for Python을 설치하려면 azure를 입력합니다.

가상 환경을 마우스 오른쪽 단추로 클릭하고 Generate requirements.txt를 선택하여 requirements.txt를 업데이트합니다.
그런 다음 requirements.txt의 변경 내용을 Git 리포지토리에 커밋합니다.
Azure에 배포
배포를 트리거하려면 Sync 또는 Push를 클릭합니다. Sync는 밀어넣기와 끌어오기를 둘 다 수행합니다.

첫 배포에서는 가상 환경 만들기, 패키지 설치 등의 작업이 수행되므로 약간의 시간이 걸립니다.
Visual Studio에는 배포 진행률이 표시되지 않습니다. 출력을 검토하려면 문제 해결 - 배포 섹션을 참조하세요
Azure URL로 이동하여 변경 내용을 확인합니다.
웹앱 배포 - Windows - 명령줄
리포지토리 복제
먼저 Azure 포털에서 제공된 URL을 사용하여 리포지토리를 복제하고 Azure 리포지토리를 원격으로 추가합니다. 자세한 내용은 Azure 앱 서비스에서 GIT를 사용하여 연속 배포를 참조하세요.
git clone <repo-url> cd <repo-folder> git remote add azure <repo-url>
가상 환경 만들기
개발을 위해 새 가상 환경을 만듭니다(리포지토리에 추가 안 함). Python의 가상 환경은 재할당할 수 없으므로 응용 프로그램에서 작업하는 모든 개발자가 각자 로컬로 만듭니다.
웹앱에 대해 선택(runtime.txt 또는 Azure 포털에서 웹앱의 응용 프로그램 설정 블레이드를 통해)된 Python의 동일한 버전을 사용해야 합니다.
Python 2.7:
c:\python27\python.exe -m virtualenv env
Python 3.4:
c:\python34\python.exe -m venv env
응용 프로그램에 필요한 모든 외부 패키지를 설치합니다. 리포지토리의 루트에 있는 requirements.txt 파일을 사용하여 가상 환경에 패키지를 설치합니다.
env\scripts\pip install -r requirements.txt
개발 서버를 사용하여 실행
다음 명령을 사용하여 개발 서버에서 응용 프로그램을 시작할 수 있습니다.
env\scripts\python runserver.py
콘솔에 서버에서 수신 대기하는 URL 및 포트가 표시됩니다.

그러면 이 URL로 웹 브라우저를 엽니다.

변경 작업
이제 응용 프로그램 소스 및/또는 템플릿을 변경하여 실험할 수 있습니다.
변경 내용을 테스트한 후 Git 리포지토리에 커밋합니다.
git add <modified-file> git commit -m "<commit-comment>"
추가 패키지 설치
응용 프로그램에 Python 및 Flask 이외의 종속성이 있을 수 있습니다.
pip를 사용하여 추가 패키지를 설치할 수 있습니다. 예를 들어 Azure 저장소, 서비스 버스 및 기타 Azure 서비스에 대한 액세스를 제공하는 Azure SDK for Python을 설치하려면 다음을 입력합니다.
env\scripts\pip install azure
requirements.txt를 업데이트합니다.
env\scripts\pip freeze > requirements.txt
변경 내용을 커밋합니다.
git add requirements.txt git commit -m "Added azure package"
Azure에 배포
배포를 트리거하려면 변경 내용을 Azure에 푸시합니다.
git push azure master
가상 환경 생성, 패키지 설치, web.config 생성 등 배포 스크립트의 출력이 표시됩니다.
Azure URL로 이동하여 변경 내용을 확인합니다.
웹앱 배포 - Mac/Linux - 명령줄
리포지토리 복제
먼저 Azure 포털에서 제공된 URL을 사용하여 리포지토리를 복제하고 Azure 리포지토리를 원격으로 추가합니다. 자세한 내용은 Azure 앱 서비스에서 GIT를 사용하여 연속 배포를 참조하세요.
git clone <repo-url> cd <repo-folder> git remote add azure <repo-url>
가상 환경 만들기
개발을 위해 새 가상 환경을 만듭니다(리포지토리에 추가 안 함). Python의 가상 환경은 재할당할 수 없으므로 응용 프로그램에서 작업하는 모든 개발자가 각자 로컬로 만듭니다.
웹앱에 대해 선택(runtime.txt 또는 Azure 포털에서 웹앱의 응용 프로그램 설정 블레이드를 통해)된 Python의 동일한 버전을 사용해야 합니다.
Python 2.7:
python -m virtualenv env
Python 3.4:
python -m venv env
또는 pyvenv env
응용 프로그램에 필요한 모든 외부 패키지를 설치합니다. 리포지토리의 루트에 있는 requirements.txt 파일을 사용하여 가상 환경에 패키지를 설치합니다.
env/bin/pip install -r requirements.txt
개발 서버를 사용하여 실행
다음 명령을 사용하여 개발 서버에서 응용 프로그램을 시작할 수 있습니다.
env/bin/python runserver.py
콘솔에 서버에서 수신 대기하는 URL 및 포트가 표시됩니다.

그러면 이 URL로 웹 브라우저를 엽니다.

변경 작업
이제 응용 프로그램 소스 및/또는 템플릿을 변경하여 실험할 수 있습니다.
변경 내용을 테스트한 후 Git 리포지토리에 커밋합니다.
git add <modified-file> git commit -m "<commit-comment>"
추가 패키지 설치
응용 프로그램에 Python 및 Flask 이외의 종속성이 있을 수 있습니다.
pip를 사용하여 추가 패키지를 설치할 수 있습니다. 예를 들어 Azure 저장소, 서비스 버스 및 기타 Azure 서비스에 대한 액세스를 제공하는 Azure SDK for Python을 설치하려면 다음을 입력합니다.
env/bin/pip install azure
requirements.txt를 업데이트합니다.
env/bin/pip freeze > requirements.txt
변경 내용을 커밋합니다.
git add requirements.txt git commit -m "Added azure package"
Azure에 배포
배포를 트리거하려면 변경 내용을 Azure에 푸시합니다.
git push azure master
가상 환경 생성, 패키지 설치, web.config 생성 등 배포 스크립트의 출력이 표시됩니다.
Azure URL로 이동하여 변경 내용을 확인합니다.
문제 해결 - 패키지 설치
일부 패키지는 Azure에서 실행할 때 pip를 사용하여 설치되지 않을 수 있습니다. 단순히 Python Package Index에 해당 패키지가 없기 때문일 수 있습니다. 아니면, 컴파일러가 필요할 수도 있습니다(Azure 앱 서비스에서 웹앱을 실행하는 컴퓨터에서는 컴파일러를 사용할 수 없음).
이 섹션에서는 이 문제를 처리하는 방법을 살펴봅니다.
휠 요청
패키지를 설치하는 데 컴파일러가 필요한 경우 패키지 소유자에게 문의하여 해당 패키지에 대해 휠을 사용할 수 있도록 요청해야 합니다.
최근 Microsoft Visual C++ Compiler for Python 2.7을 출시한 이후로, 이제 Python 2.7용 네이티브 코드가 있는 패키지를 빌드하는 것이 더 쉬워졌습니다.
휠 빌드(Windows 필요)
참고: 이 옵션을 사용할 때는 Azure 앱 서비스의 웹앱에서 사용되는 플랫폼/아키텍처/버전(Windows/32비트/2.7 또는 3.4)과 일치하는 Python 환경을 사용하여 패키지를 컴파일해야 합니다.
컴파일러가 필요하므로 패키지가 설치되지 않는 경우에는 로컬 컴퓨터에 컴파일러를 설치하고 패키지용 휠을 빌드할 수 있습니다. 그런 다음 이 휠을 리포지토리에 포함합니다.
Mac/Linux 사용자: Windows 컴퓨터에 액세스할 수 없는 경우 Azure에서 VM을 만드는 방법에 대한 자세한 내용은 Windows를 실행하는 가상 컴퓨터 만들기를 참조하세요. 이 내용을 참조하여 휠을 빌드하여 리포지토리에 추가하고 원하는 경우 VM을 취소할 수 있습니다.
Python 2.7의 경우 Microsoft Visual C++ Compiler for Python 2.7을 설치하면 됩니다.
Python 3.4의 경우 Microsoft Visual C++ 2010 Express를 설치하면 됩니다.
휠을 빌드하려면 휠 패키지가 필요합니다.
env\scripts\pip install wheel
pip wheel을 사용하여 종속성을 컴파일합니다.
env\scripts\pip wheel azure==0.8.4
이렇게 하면 \wheelhouse 폴더에 .whl 파일이 만들어집니다. \wheelhouse 폴더 및 휠 파일을 리포지토리에 추가합니다.
requirements.txt를 편집하여 맨 위에 --find-links 옵션을 추가합니다. 이렇게 하면 Python Package Index로 이동하기 전에 로컬 폴더에 정확한 일치 항목이 있는지 찾아 보도록 pip에게 지시합니다.
--find-links wheelhouse azure==0.8.4
모든 종속성을 \wheelhouse 폴더에 포함하고 Python Package Index는 전혀 사용하지 않으려는 경우 requirements.txt 맨 위에 --no-index를 추가하여 pip가 패키지 인덱스를 무시하도록 만들면 됩니다.
--no-index
설치 사용자 지정
easy_install 같은 대체 설치 관리자를 사용하여 가상 환경에서 패키지를 설치하도록 배포 스크립트를 사용자 지정할 수 있습니다. deploy.cmd에서 주석 처리된 예제를 확인합니다. 해당 패키지가 requirements.txt에 나열되지 않도록 해야 pip가 해당 패키지를 설치하지 않습니다.
다음을 배포 스크립트에 추가합니다.
env\scripts\easy_install somepackage
easy_install를 사용하여 exe 설치 파일에서 설치할 수도 있습니다(일부는 압축 호환되므로 easy_install에서 지원됨). 리포지토리에 설치 관리자를 추가하고 실행 파일 경로를 전달하여 easy_install을 호출합니다.
다음을 배포 스크립트에 추가합니다.
env\scripts\easy_install "%DEPLOYMENT_SOURCE%\installers\somepackage.exe"
리포지토리에 가상 환경 포함(Windows 필요)
참고: 이 옵션을 사용할 때는 Azure 앱 서비스의 웹앱에서 사용되는 플랫폼/아키텍처/버전(Windows/32비트/2.7 또는 3.4)과 일치하는 가상 환경을 사용해야 합니다.
리포지토리에 가상 환경을 포함하는 경우 배포 스크립트가 빈 파일 생성을 통해 Azure에서 가상 환경을 관리하는 일을 방지할 수 있습니다.
.skipPythonDeployment
가상 환경이 자동 관리될 때 잔존 파일들이 사용되지 않도록 하기 위해 앱의 기존 가상 환경을 삭제하는 것이 좋습니다.
문제 해결 - 가상 환경
배포 스크립트는 호환 가상 환경이 이미 존재하는 것을 감지하면 Azure에서 가상 환경 만들기를 건너뜁니다. 이렇게 하면 배포 속도를 상당히 높일 수 있습니다. 이미 설치된 패키지를 pip가 건너뜁니다.
특정 상황에서 해당 가상 환경을 강제로 삭제해야 할 수 있습니다. 리포지토리 일부로 가상 환경을 포함하려는 경우 이 과정이 필요합니다. 특정 패키지를 삭제하거나 requirements.txt 변경 사항을 테스트해야 하는 경우에도 이 과정이 필요할 수 있습니다.
Azure에서 기존 가상 환경을 관리하는 몇 가지 옵션이 있습니다.
옵션 1: FTP 사용
FTP 클라이언트를 사용하여 서버에 연결하면 env 폴더를 삭제할 수 있습니다. 일부 FTP 클라이언트(예: 웹 브라우저)는 읽기 전용일 수 있으며 이런 경우 사용자가 폴더를 삭제할 수 없습니다. 따라서 해당 기능이 있는 FTP 클라이언트를 사용하는지 확인해야 합니다. FTP 호스트 이름 및 사용자는 Azure 포털의 웹앱 블레이드에 표시됩니다.
옵션 2: 런타임 설정/해제
배포 스크립트는 원하는 Python 버전과 일치하지 않으면 env 환경을 삭제한다는 점을 활용한 대체 옵션입니다. 이 옵션은 실질적으로 기존 환경을 삭제하고 새로운 환경을 만듭니다.
- Python의 다른 버전으로 전환(runtime.txt 또는 Azure 포털의 응용 프로그램 설정 블레이드)하려면
- 일부 변경 사항에 대해 git push 처리(있는 경우 모든 pip 설치 오류 무시)
- Python 초기 버전으로 다시 전환
- 일부 변경 사항에 대해 다시 git push 처리
옵션 3: 배포 스크립트 사용자 지정
배포 스크립트를 사용자 지정한 경우 env 폴더를 삭제하도록 deploy.cmd의 코드를 변경할 수 있습니다.
다음 단계
Flask 및 Python Tools for Visual Studio에 대한 자세한 내용은 다음 링크를 참조하세요.
Azure 테이블 저장소 및 MongoDB에 대한 자세한 정보:
- Azure의 Flask 및 MongoDB와 Python Tools for Visual Studio
- Azure의 Flask 및 Azure 테이블 저장소와 Python Tools for Visual Studio
자세한 내용을 보려면 Python 개발자 센터도 참조하세요.
[출처] https://azure.microsoft.com/ko-kr/documentation/articles/web-sites-python-create-deploy-flask-app/
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 2 |
[pySide] [번역] PySide6 - 시그널, 슬롯 & 이벤트
| 졸리운_곰 | 2023.12.27 | 319 |
| 1 |
[pySide] [번역] PySide6로 첫 번째 앱 만들기 !
| 졸리운_곰 | 2023.12.27 | 546 |

