[Django] heroku 배포 1- sqlite3에서 MySQL로 DB 변경하기

wonyu·2022년 2월 19일
1

Django 프로젝트를 배포하려고 지난 12월에 heroku 배포를 시도했는데 어떤 방법을 써도 잘 안 되고 어떻게 해결해야 할 지 모르겠어서 한동안 미뤄두고 있었다. 내가 이전 시도를 실패했던 가장 큰 이유는, heroku에서는 기본적으로 PostgreSQL을 사용하는데 나는 sqlite만 사용해보았고 sqlite를 PostgreSQL로 바꾸는 방법이 이해가 되지 않았다는 것이다. 그러던 중에 이번 프로젝트를 통해 처음으로 MySQL을 사용해보게 되면서 DB 변경부터 다시 시도하기로 했다. 왜냐하면 heroku에서는 clearDB 애드온을 사용해서 MySQL DB를 사용할 수 있기 때문이다.

그래서 heroku 배포하기에 앞서 DB를 변경하는 과정부터 기록해보고자 한다.


  1. heroku 프로젝트를 생성한다.
    회원가입 및 로그인 과정은 생략
    create new app을 클릭해서 이름을 작성하고, region은 미국으로 두는 게 좋다고 했는데 이유를 까먹었다.

  2. overview에서 Configure Add-ons를 클릭


  3. Find more add-ons 클릭


  4. clearDB를 검색해서 install한다.


  5. 다시 앱으로 돌아와서 Settings 탭 > Config Vars > Reveal Config Vars 클릭


  6. CLEARDB_DATABASE_URL에 있는 url을 다른 곳에 적어둔다. 이 url은 아래쪽에서 Django의 DB를 설정할 때 필요하다. url은 아래 형태로 구성되어 있다. 이렇게 하면 DB 연결을 위해 heroku에서 해야 할 일은 끝이다.

mysql://유저네임:비밀번호@호스트/DB이름?reconnect=true

  1. Django 프로젝트를 열고 가상환경에서 DB 커넥터를 설치한다.
$ pip install mysqlclient

  1. manage.py와 같은 위치에 DB 세팅을 위한 파일을 생성한다. ENGINE은 아래와 같이 바꾸면 되고 NAME, USER, PASSWORD, HOST에는 6번에서 확인한 값을 적는다. (이 파일은 gitignore에 추가해야 함!)
# my_settings.py

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'heroku_b6e3294d5f4a9fb',
        'USER': 'bb9e40d8fb25f3',
        'PASSWORD': '비밀번호',
        'HOST': 'us-cdbr-east-05.cleardb.net',
        'PORT': '3306',
    }
}
  • ENGINE : 사용할 엔진
  • NAME : 연동할 MySQL DB 이름
  • USER : MySQL username
  • PASSWORD : 위 계정의 비밀번호
  • HOST : 실제 DB 주소
  • PORT : 포트 번호 (따로 설정한 것 없으면 그대로 두기)

  1. (필수는 아님) MySQL 워크벤치에서 커넥션을 추가한다. Connection Name, Hostname, Username, Password에 위에 적은 것과 동일하게 작성한다.

  1. settings.py에서 DB 설정 변경 : 원래 DATABASES에 적혀있던 값을 지우고 아래와 같이 적는다.
import my_settings

DATABASES = my_settings.DATABASES

  1. migrate를 통해 DB에 테이블 정보를 추가한다.
$ python manage.py migrate

  1. MySQL 워크벤치에서 9번에서 추가한 커넥션에 더블 클릭해서 들어간다. Schemas 탭에서 DB명 > Tables 를 클릭했을 때 테이블이 잘 들어와있다면 성공!

그럼 다음 글에서는 Heroku 배포를 위해 필요한 패키지 설치 및 파일 생성 과정을 적어보겠습니다.

0개의 댓글