Heroku

seongyong·2021년 6월 11일
0

데이터 엔지니어링

목록 보기
11/11

학습내용

WSGI

WSGI : 서버나 게이트웨이를 어플리케이션이나 프레임워크에 이어주게됨. 중간 다리와 같은 역할

예를 들어 Flask와 같은 마이크로 프레임워크를 서버로 연결해 외부에서 접속할 수 있도록 도와주는 역할

gunicorn

green unicorn을 줄인 gunicorn은 파이썬의 WSGI HTTP Server

HTTP 요청에 대한 처리를 할 수 있는 gunicorn은 UNIX체계에서 작동하게 되어있다.

  • 설치
pip install gunicorn
  • 실행
gunicorn [옵션] [WSGI 어플리케이션]

#ex
gunicorn --workers=1 'flask_app:create_app()'

Heroku

클라우드 플랫폼을 제공하는 서비스

Heroku를 사용하기 위해서는 먼저 Heroku CLI설치를 해야함

  • 로그인
heroku login
  • 헤로쿠 어플리케이션 목록
heroku apps
  • 어플리케이션 만들기
heroku create my_app
  • Heroku 깃 주소로 코드 올리기
git push heroku master
  • 어떤 언어를 사용하는지 heroku에게 알려주기
    requirements.txt, Pipfile, setup.py, runtime.txt 가 필요함
  1. requirements.txt : pip freeze > requirements.txt / 파이썬 코드기반을 알려줌
  2. Procfile : web : gunicorn --workers=2 'flask_app:create_app()' / 어떤 프로세스를 실행해야 하는지
  3. runtime.txt / Heroku가 지원하는 파이썬 버전 적어주면 됨.

Heroku add-ons

데이터베이스 add-on

  • postgresql 데이터베이스 기능을 사용하기
heroku addons:create heroku-postgresql:hobby_dev --name main-db
  • 데이터베이스 초기 설정, 어떤 기능들이 있는지 확인
heroku addons --app 어플리케이션 이름
  • 환경변수 확인
heroku config --app 어플리케이션 이름

환경변수

터미널에서 env 라고 친다면 현재 사용되고 있는 환경변수들의 목록이 나타남.

  • 새로운 환경변수 설정
export ENV_PRAC="hello world"
  • 확인
import os

print(os.environ["ENV_PRAC"])

dotenv 패키지

환경변수를 더 수월하게 관리가능

  • 설치
pip install python-dotenv
  • 활용
    .env라는 파일을 만들어 환경변수들을 정의한 뒤 파이썬에서 다음과 같이 실행한다면 환경변수 목록에 추가가 되어 사용 가능
# .env 파일

export env_1 = 'hello world'
export env_2 = 'bye bye'
export env_3 = 42

# env_prac.py
import os
from dotenv import load_dotenv
load_dotenv()

print(os.getenv('env_1'))
print(os.getenv('env_2'))
print(os.getenv('env_3'))

Heroku 환경변수 관리

헤로쿠 add-on 으로 데이터베이스를 새로 추가하게 되면 연결된 앱에 자동으로 DATABASE_URL 이라는 환경변수가 생김

앱에 설정된 환경변수들은 heroku config로 관리가능

heroku config:set 변수_이름=변수값

환경 분리

동일한 앱이 로컬에서는 로컬 환경변수를, 배포 단계에서는 배포 환경변수를 사용하게 만드는게 좋다. 환경변수를 이렇게 분리해야 개발할 때의 에러나 버그 등이 실제 배포 단계에 영향을 미치지 않고 독립적으로 관리할 수 있다.

0개의 댓글