프로그래밍 연습하기

Heroku를 이용한 무료 웹 호스팅 본문

클라우드/Heroku

Heroku를 이용한 무료 웹 호스팅

john.k 2021. 5. 28. 16:35
반응형

파이썬 웹 프레임워크 FastAPI를 사용해서 간단한 프로젝트를 진행 중 입니다.

처음에 계획했던 기능을 어느정도 만들어서

일단 실제로 배포해보고 계속 발전시켜나가려고 합니다.

 

처음에는 AWS를 이용해보려고 했는데, 이미 Free Tier로 사용하는 것이 있어서

Heroku(헤로쿠)를 사용하여 무료로 올릴 수 있었습니다.

 

Heroku를 이용해보는 튜토리얼들이 잘 되있어서

저는 간단하게 제가 겪었던 문제와 해결 방법만 정리해보려고 합니다.

 

Heroku에서는 기본적으로 파이썬 버전을 따로 지정해주지 않으면 3.9버전으로 돌아갑니다.

그런데 저는 3.7버전에서 개발을 하고 requirements를 작성해서 그런지

의존성 설치 하면서 에러가 떠서

runtime.txt 를 작성해서 3.7.10 버전으로 설정하였습니다.

https://devcenter.heroku.com/articles/python-runtimes 

 

Specifying a Python Runtime | Heroku Dev Center

Last updated May 03, 2021 By default, new Python applications on Heroku use the Python runtime indicated in Specifying a Python version. If you’re running a Python application that requires a different supported runtime, or if you simply want to lock you

devcenter.heroku.com

이외에도 에러가 뜨는 모듈을 제거했는데,

버전 설정 전에 제거를 먼저 해버려서

버전 설정으로 해결되는 문제였는지는 잘 모르겠네요.

 

알고 보니 이 문제는 Venv가 잘못 설정 되어서 기존 파이썬 환경의 requirements를 가져와서 생긴 문제로 보입니다.

아래 글에 정리해봤습니다.

https://studyprogram.tistory.com/256

 

Venv가 활성화 되어도 경로 인식을 못할 때

저는 파이썬 프로젝트를 할 때 Pycharm을 이용해서 프로젝트마다 Venv를 설정하여 사용합니다. 예전에는 그냥 VSCode를 이용했는데, Github에 올리려니까 의존성 관리를 위해 Venv를 사용하게 되었습니

studyprogram.tistory.com

 

 

 

그리고 uvicorn을 실행할 때 발생하는 에러는

uvicorn.run(your_module_name, host='0.0.0.0', port=8000)

uvicorn.run("your_module_name:app", host='0.0.0.0', port=int(os.environ.get("PORT", 8000)))

https://github.com/encode/uvicorn/issues/687

 

Uvicorn can not start FastAPI APP · Issue #687 · encode/uvicorn

import uvicorn from fastapi import FastAPI app = FastAPI(title='MADS API') uvicorn.run(app, host='0.0.0.0', port=8127, workers=2) WARNING: You must pass the application as an import...

github.com

https://blog.heroku.com/python_and_django

 

Python and Django on Heroku

Python has joined the growing ranks of officially-supported languages on Heroku's polyglot platform, going into public beta as of today. Python is the...

blog.heroku.com

이 두 페이지를 참고하여 고쳐서 해결할 수 있었습니다.

알아보니 heroku는 포트가 임의로 배정이 되기 때문에

명시적으로 적어두지 말고 환경변수를 이용해서 해당 환경에 맞는 포트를 사용해야 한다고 합니다.

https://stackoverflow.com/questions/15693192/heroku-node-js-error-web-process-failed-to-bind-to-port-within-60-seconds-of

 

Heroku + node.js error (Web process failed to bind to $PORT within 60 seconds of launch)

I have my first node.js app (runs fine locally) - but I am unable to deploy it via heroku (first time w/ heroku as well). The code is below. SO doesn't let me write so much code, so I would just sa...

stackoverflow.com

이정도 문제를 해결하니 일단은 성공적으로 사용해볼 수 있었습니다.

그런데 아직 다 이해를 했다기보단 되는대로 끼워 맞춘 것 같아서,

좀 더 사용해보면서 익숙해져야 할 것 같습니다.

반응형
Comments