Linux, Server, Web
Heroku + Python + Flask
iolate
2017. 12. 6. 02:05
Heroku는 Git 을 기반으로 패키지를 업로드한다.
프로젝트와 git 은 이미 만들어져있다고 가정하고, 해당 디렉토리 아래에서 진행한다.
참고로 Python 3.6
0. Prerequisite
heroku cli 바이너리가 필요한데, 맥에서는 그냥 brew 로 설치가능하다.
$ brew install heroku
Python 버전은 3.6 그리고 virtualenv 패키지가 여러개가 있는데, heroku 는 pipenv 를 쓰는 듯?
$ pip install pipenv
$ pipenv install
로 현재 경로에 virtualenv 환경을 만들고,
$ pipenv shell
을 입력하면 알아서 source 해준다.
1. virtualenv 패키지 설치
$ pipenv install 패키지명
으로 설치하면 Pipfile 에 알아서 넣어줌. 다른 방법은 모르겠음.
gunicorn 도 venv 안에 깔아줘야하는지 모르겠지만, 난 그냥 깔아줬다.
그리고 $ pipenv lock 을 하면 Pipfile 과 Pipfile.lock 파일을 만들어주는데, 이것 역시 git 에 추가해주자.
2. Procfile 생성
heroku 에서 run 할때 어떤 command 를 실행해야하는지를 알려주는 파일이다.
나의 경우
web: gunicorn flask_app:app
이렇게 한줄만 있으면 되었음.
web 은 heroku 서비스 관련 예약어이고, 그 뒤론 명령어인데
gunicorn 이란 wsgi 패키지를 이용하는 듯.
난 flask_app/__init__.py 의 형태지만,
프로젝트 루트의 flask_app.py 안에 app = Flask(name) 같은 형태도 가능하다.
마찬가지로 git 에 추가.
3. heroku cli
우선 로그인을 하자
$ heroku login
$ heroku local
로 현재 웹을 테스트 해볼 수 있다.
프로젝트 생성은
$ heroku create
이후 소스 푸시 및 빌드는
$ git push heroku master
$ heroku open
하면 주소가 열린다.