Django 프로젝트를 배포하려고 지난 12월에 heroku 배포를 시도했는데 어떤 방법을 써도 잘 안 되고 어떻게 해결해야 할 지 모르겠어서 한동안 미뤄두고 있었다. 내가 이전 시도를 실패했던 가장 큰 이유는, heroku에서는 기본적으로 PostgreSQL을 사용하는데 나는 sqlite만 사용해보았고 sqlite를 PostgreSQL로 바꾸는 방법이 이해가 되지 않았다는 것이다. 그러던 중에 이번 프로젝트를 통해 처음으로 MySQL을 사용해보게 되면서 DB 변경부터 다시 시도하기로 했다. 왜냐하면 heroku에서는 clearDB 애드온을 사용해서 MySQL DB를 사용할 수 있기 때문이다.
그래서 heroku 배포하기에 앞서 DB를 변경하는 과정부터 기록해보고자 한다.
heroku 프로젝트를 생성한다.
회원가입 및 로그인 과정은 생략
create new app을 클릭해서 이름을 작성하고, region은 미국으로 두는 게 좋다고 했는데 이유를 까먹었다.
overview에서 Configure Add-ons를 클릭
Find more add-ons 클릭
clearDB를 검색해서 install한다.
다시 앱으로 돌아와서 Settings 탭 > Config Vars > Reveal Config Vars 클릭
CLEARDB_DATABASE_URL에 있는 url을 다른 곳에 적어둔다. 이 url은 아래쪽에서 Django의 DB를 설정할 때 필요하다. url은 아래 형태로 구성되어 있다. 이렇게 하면 DB 연결을 위해 heroku에서 해야 할 일은 끝이다.
mysql://유저네임:비밀번호@호스트/DB이름?reconnect=true
$ pip install mysqlclient
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 usernamePASSWORD
: 위 계정의 비밀번호HOST
: 실제 DB 주소PORT
: 포트 번호 (따로 설정한 것 없으면 그대로 두기)settings.py
에서 DB 설정 변경 : 원래 DATABASES에 적혀있던 값을 지우고 아래와 같이 적는다.import my_settings
DATABASES = my_settings.DATABASES
$ python manage.py migrate
그럼 다음 글에서는 Heroku 배포를 위해 필요한 패키지 설치 및 파일 생성 과정을 적어보겠습니다.