[Heroku]Heroku로 Django 프로젝트 배포하기

Heroku란?

Heroku는 프로젝트 관리,배포를 쉽게 할 수 있게 도와주는 대표적인 서비스형 플랫폼(PaaS)입니다.

*PaaS란?
서비스형 플랫폼(Platform as a Service, PaaS)은 클라우드 컴퓨팅 서비스 분류 중 하나로 앱을 개발하거나 구현할 때, 관련 인프라를 만들고 유지보수하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 의미합니다. - 출처 : 위키백과

이제 Heroku로 Django REST framework 프로젝트를 배포해보겠습니다.

1.Heroku에 필요한 패키지 설치하기

먼저 배포하려고 하는 프로젝트에 들어가서 필요한 패키지들을 설치해 줍니다.

pip install gunicorn whitenoise dj-database-url psycopg2-binary

gunicorn - 배포를 위해 필요한 패키지
whitenoise - 정적 파일의 사용을 돕는 미들웨어
dj-database-url, psycopg2-binary - Heroku에서 사용하는 DB인 postgresql을 위한 패키지

2.requirements 파일 만들기

설치 후에 다음 명령어로 프로젝트 의존성 정보가 담긴 requirements 파일을 만들어 주세요.

pip freeze > requirements.txt

3.Settings.py 변경

다음으로 settings.py에서 다음 사항들을 수정해주세요

  • import dj-database-url

  • Debug 옵션 false로 수정

   DEBUG = False
  • MIDDLEWARE 추가
   'whitenoise.middleware.WhiteNoiseMiddleware',
  • DATABASES 밑에 코드추가
  db_from_env = dj_database_url.config(conn_max_age=500)
  DATABASES['default'].update(db_from_env)
  • SECRETKEY 복사 후 Heroku 프로젝트 Config Vars에 추가
    (아래에서 보다 자세히 설명할게요)

4.Procfile 만들기

manage.py가 있는 루트 최상위 디렉토리에서 Procfile파일을 생성합니다.
web: gunicorn 프로젝트명.wsgi --log-file-을 입력합니다.

5.runtime.txt 만들기

runtime.txt 파일을 만들어 줍니다.
먼저 파이썬 버전을 확인하고 파일에 적어주세요.
파이썬 버전 확인 명령어
python --verison
버전을 작성할 때는 소문자로 적어주셔야합니다.

6.헤로쿠 CLI 설치하기

로컬에서 헤로쿠를 사용하기 위해서는 Heroku CLI(command line interface)를 설치해야 합니다.

저는 사이트에 나와있는 명령어로 설치를 진행했습니다.

brew install heroku/brew/heroku

설치 후 아래 명령어로 로그인을 해줍니다.

heroku login


명령어를 작성하면 로그인 페이지가 뜨는데 로그인을 하고 다시 CLI로 돌아옵니다.

다음으로는 앱을 만들어 줍니다.
명령어를 통해 만들 수도 있고

heroku create 앱이름

*여기서 나오는 앱이름은 장고 프로젝트 안의 앱이 아닌 heroku 대쉬보드에 나오는 앱 이름입니다.

heroku사이트에서 만들 수도 있습니다.

heroku Dashboard에 들어가보면 앱이 만들어져있습니다.

7.Github 레파지토리 연결&배포하기

Deply 탭에 들어가서 Github repository와 연결합니다.

연결 후 브랜치를 선택하고 Deploy Branch 버튼을 누르면
배포가 시작됩니다.

저의 경우 배포 진행 중 SECRETKEY 관련해서 Keyerror가
발생했습니다. 이유는 제가 .env를 사용해서 SECRETKEY가 노출되지
않도록 작성했는데 그러다보니 heroku 배포시 SECRETKEY를 몰라서
Keyerror가 발생했던 것입니다.

어떻게 해야하나 구글링하다가 저는 위에서 간단히 언급한 것처럼
Heroku 프로젝트 Settings 탭에서 Config Vars에 SECRETKEY 값을
작성 후 진행하니까 정상적으로 진행되는 것을 확인할 수 있었습니다.

8.DB 마이그레이션

그 다음 CLI에서 마이그레이션을 해줍니다.

heroku run python manage.py migrate --app 앱이름

배포하며 DB가 초기화되었기에 관리자 계정을 새로 생성해줍니다.

heroku run python manage.py createsuperuser

참고자료

https://eunjin3786.tistory.com/244
https://wooogy-egg.tistory.com/8

좋은 웹페이지 즐겨찾기