본문 바로가기

일::개발

Python으로 Azure에 Serverless 웹 구축하기 - 1. 설치

이 포스트는 python - flask - azure - visual studio code 의 조합으로 serverless 웹 사이트를 만드는 가이드 비슷한 것이다.

이 조합은 안 될 것 같지는 않은데 뭔가 확실한 가이드도 없고 해서 며칠 삽질해본 김에 정리해둔다.

 

사실 위의 조합에서 azure 만 aws 로 바꾸면 zappa 라는 훌륭한(가이드 문서도 많은) 솔루션을 사용하면 되고, python 을 javascript로만 바꿔도 azure 공식 문서에서 잘 다뤄주고 있다. 

그러나 만들어놓은 코드를 어떻게든 써 보고 싶은 마음에 꾸역꾸역 시도를 해 봤더니... 다시 만드는게 더 빨랐겠다는 생각도...

 

하여간, 일단 필요한 것들 설치부터 하면서 시작해보자.

Python 2.7만 기본으로 깔려 있는 High Sierra Mac 기준으로 한다. 가진게 그것 뿐이라...

Python 설치

일단 Python 3.6 을 설치해야 한다. 2019년 6월 기준으로 Azure Function은 Python 3.6만  지원하기 때문에 2.7만 사용하던 나로서는 뭔가 일이 복잡해졌다.

일단 어떻게든 설치하지 않고 버티던 homebrew를 설치하고, pyenv로 Python 버전을 관리해보기로 한다.

2.7 단일 버전을 사용할 때는 virtualenv 만 사용해서 프로젝트 별로 환경을 구분했는데, pyenv 를 쓰려니 약간 복잡해지더라.

brew 설치는 되었다고 치고 일단 pyenv 설치 :

uaremine$ brew install pyenv

 

하는 김에 pyenv-virtualenv 도 설치해주자.

uaremine$ brew install pyenv-virtualenv

 

pyenv 의 설치 및 설정은 https://github.com/pyenv/pyenv 를 참고하고, 설치가 끝나면 pyenv 문서에 있는 대로 ~/.bash_profile에 환경변수를 넣어준다. (아래는 내 경우이고, 정확한 내용은 공식 문서를 참조하는 것이 좋을 듯)

export PYENV_ROOT=/usr/local/var/pyenv
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi

 

이제 pyenv를 사용할 준비가 끝났으면 (.bash_profile 수정했으면 터미널 다시 시작하는 것 잊지 말고) Python 3.6 을 설치한다.

터미널 다시 시작해서 init 하지 않고 아래의 3.6.8 버전 설치를 먼저 하면 터미널 재시작할 때 versions가 초기화된다.

uaremine$ pyenv install 3.6.8

 

설치가 끝나면 pyenv versions로 확인해본다.

~ uaremine$ pyenv versions
* system (set by /usr/local/var/pyenv/version)
  3.6.8
  
~ uaremine$ python --version
Python 2.7.10

~ uaremine$ pyenv global 3.6.8
~ uaremine$ python --version
Python 3.6.8

~ uaremine$ pyenv which python
/usr/local/var/pyenv/versions/3.6.8/bin/python

~ uaremine$ pyenv global system
~ uaremine$ python --version
Python 2.7.10

3.6.8이 추가되었다.

 

그럼 샘플 프로젝트를 시작할 환경을 만들어본다.

~ uaremine$ cd VisualStudioCode/
VisualStudioCode uaremine$ pyenv virtualenv 3.6.8 functions-flask

VisualStudioCode uaremine$ pyenv versions
* system (set by /usr/local/var/pyenv/version)
  3.6.8
  3.6.8/envs/functions-flask
  functions-flask

functions-flask 란 이름으로 가상 환경을 만들어보면 3.6.8/envs/functions-flask, functions-flask 두개의 가상 환경이 더 보인다.

 

일단 여기까지 하면 python 환경 준비는 끝.

다음에는 샘플 프로젝트 디렉토리를 만들고 필요한 패키지를 설치하고 Visual Studio Code 설정까지 해볼 예정인데, 그러기 전에 마지막으로 프로젝트 폴더(를 생성했다고 치고)에 새로 만든 가상 환경을 지정해주자.

VisualStudioCode uaremine$ cd pfaf-sample/
pfaf-sample uaremine$ pyenv local functions-flask
(functions-flask) pfaf-sample uaremine$ cd ..
VisualStudioCode uaremine$ cd pfaf-sample/
(functions-flask) pfaf-sample uaremine$

 

생성한 프로젝트 디렉토리 (pfaf-sample)에서 pyenv local [생성한 가상 환경 이름] 을 실행하면 해당 디렉토리가 지정한 가상 환경으로 매핑된다.

해당 디렉토리 밖으로 나가면 functions-flask 가상환경이 deactivate 되고, 해당 디렉토리에 진입하면 자동으로 functions-flask 가상환경이 activate 된다.