ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Flask] Heroku에 Flask 배포
    💫 Computer Science/Python & AI Framework 2020. 8. 11. 14:02

     

     

    flask로 만든 웹을 헤로쿠에 배포하도록 하겠습니다.

     

     

    헤로쿠(Heroku)란?

    헤로쿠(Heroku)는 웹 애플리케이션 배치 모델로 사용되는 여러 프로그래밍 언어를 지원하는 클라우드 Paas(Platform as a service) 입니다. 자바, node js, scalar, pytho, php, go 등을 지원하고 애플리케이션을 알아서 빌드, 실행해주고 스케일링할 수 있게 해줍니다. 말 그대로 그냥 올리기만 하면 알아서 맞춰서 배포를 해준다는 뜻.
    만약 DB나 여러 다른 모듈을 자유롭게 이용하는 웹을 배포한다면 AWS 같은 좀더 자유도가 높은 서비스를 이용해야하지만 간단하게 웹을 올리고 호스팅하는 용도로 사용하기에 적합합니다. 한달에 450시간이 무료이고, 30분간 서버에 트래픽이 없으면 서버는 돌아가지 않습니다. 상용으론 적합하지 않고, 저처럼 연습 프로젝트로 사용하기엔 아주 좋은 호스팅 플랫폼입니다.

     

     

    Getting Started on Heroku with Python

     

    간단하게 flask+인공지능 웹을 배포하려고 헤로쿠를 시작했는데 생각보다 시행착오가 좀 있었고, 결정적으로 서버 overload 현상이 있었지만 추후 해결하기로 하고 일단 배포 해봅니다.

     


     

    1. 아나콘다 가상환경 생성

     

    먼저, 저는 아나콘다 가상환경을 만들어서 웹을 만들었습니다. 원래 있던 가상환경을 쓰려고 했는데 헤로쿠에 올리는데 몇가지 문제가 있어서 가상환경을 따로 하나 만들어 필요한 패키지만 설치했습니다.

     

     

    $ conda create -n 가상환경이름 python=원하는파이썬버전

     

    그리고 pip install로 필요한 패키지들 tensorflow, keras, pandas, JPype1, Konlpy 등등을 설치해 줍니다.

     

     

    pip install gunicorn

    gunicorn도 설치.

     

    만든 가상환경을 activate 한 뒤에, flask run 명령어로 로컬에서 먼저 돌아가는지 확인합니다.

     

     

    127.0.0.1:5000/ 에서 확인

     

    웹에 로컬에서 잘 돌아가면 이제 헤로쿠에 올려봅니다.

     


     

    2. .gitignore, requirements.txt, Procfile 생성

     

    서버에 올리지 않을 파일 적어주고

     

    activate 가상환경명   // 올릴 가상환경 활성화
    cd flask프로젝트가있는폴더
    
    pip freeze > requirements.txt  // 필요한 패키지 알려주는 파일 생성

     

    저는 아나콘다 프롬프트를 켜서, 만든 가상환경을 활성화 시킨 후 올릴 프로젝트 파일로 이동해서

    pip freeze 명령어를 이용해 현재 이 프로젝트에 필요한 패키지들을 명시하는 requirements.txt 파일을 생성하였습니다.

    requirements.txt 파일을 통해 헤로쿠는 이 프로젝트에 필요한 패키지들을 클라우드 서버에 설치하게 됩니다.

     

     

     

    이렇게 자동으로 내가 이 프로젝트에 설치한 패키지들 버전이 명시되어있는 파일이 생성이 됩니다.

     

     

    저는 JPype1 패키지를 설치했었는데 윈도우에서 개발하느라고 아나콘다 폴더 내에 설치파일을 두었었고 거기에 경로를 설정해 사용하도록 되어있었습니다. 그랬더니 저 파일에

     

    JPype1==C:\Anaconda\envs\flask\JPype1-1.0.2-cp38-cp38-win_amd64.whl

    이런식으로 로컬에 있는 경로가 표시되어있었습니다.

    그랬더니 remote rejected 에러가 나더라구요. 그래서 저 부분을

    JPype1==1.0.2

    이렇게 버전만 명시해주었습니다.

     

     

     

     

    그리고 Procfile을 생성해주는데, 서버파일을 명시해주는 부분입니다. 저는 서버코드가 app.py이름이기 때문에 app이라고 명시해 준 것이고 

    web: gunicorn 서버파일:app

    저 부분에 자신의 파일명을 적으면 됩니다.

     


     

    3. 헤로쿠 설정

     

    먼저 헤로쿠에 회원가입이 되어있어야 합니다. 회원가입 후 명령어 창으로 돌아와서

    heroku login

    명령어를 이용해 로그인 합니다.

     

     

    그리고 프로젝트가 있는 파일 위치에서,

    heroku create 앱명

    로쿠 프로젝트를 생성합니다. 앱명은 생략가능합니다. 그렇게 되면 자신의 도메인 주소가 생성되고, 저 주소로 접속하면 자신의 웹페이지를 확인할 수 있습니다. 옆에 깃저장소 주소는 위 프로젝트의 파일들이 저장된 깃 저장소 주소입니다. 헤로쿠는 깃을 이용하기 때문에 깃사용법에 익숙하신 분들이라면 쉽게 사용하실 수 있습니다.

     

     

    참고글

    2020/06/19 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼1 - 초기화, 스테이징, 커밋, 되돌리기

    2020/06/22 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼2 - 깃 브랜치(branch) 같은 파일로 여러 버전 만들기

    2020/06/22 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼3 - 깃 허브와 연동하기

    2020/06/23 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼4 - 브랜치 원격에서 다루기

     

     


    4. 파일 올리기

     

    git add .
    git commit -m "원하는 메세지"
    git push heroku master

    위 명령어를 통해 헤로쿠 서버에 내 파일들을 업로드 합니다. 

     

     

    완료가되면 생성된 도메인에 접속하거나, heroku open 명령어를 통해 자신의 웹페이지를 확인하면 됩니다.!

     

    heroku ps:scale web=1    // 서버 실행
    heroku ps:scale web=0    // 서버 종료
    heroku ps                // 상태 확인

    댓글

Designed by Tistory.