728x90

배포에서 가장 핵심 중의 하나인 DB 또한 heroku에 생성하는 방법을 정리해보고자 한다.

일단 헤로쿠는 서버 배포를 하면 자동으로 postgres 배포용 디비를 만들어준다. 

 

하지만 이왕 로컬 디비를 mysql 기반으로 세팅해주었다면 배포용 디비도 같은 기반인 것이 좀 더 낫지않을까?

 

그래서 mysql 기반인 clear DB를 내가 배포한 서버에 연동된 DB에 추가해주자.

 

 

1. DB를 생성하려면 헤로쿠의 clearDB를 쓰면 된다. 

   우선 헤로쿠사이트에서 회원 가입을 하고 카드 등록을 해야한다.

  dashboard.heroku.com/account/billing

 

Heroku

 

dashboard.heroku.com

회원가입후에 해당 링크로 들어가서, 카드를 등록하면 한달에 1,000시간을 무료로 쓸 수 있다.

 

2. heroku login 명령어로 로그인을 하고 프로젝트 파일에서 해당 명령어를 입력한다.

 heroku addons:create cleardb:ignite

 

여기서 나는 아래와 같은 에러가 떴다.

›   Error: Missing required flag:
›     -a, --app APP  app to run command against
›   See more help with --help

 

이 에러가 뜨는 이유는 헤로쿠가 디비 생성을 해야하는 앱을 못찾아서이다. 따라서 설정을 해주는 작업이 필요!

1. Initialise with git: git init

2. Get the app name: heroku apps

3. Add remote:

heroku git:remote -a "your_app_name"

 -> 여기서 앱이란, 서버 배포당시에 설정하며 얻게되는 app인듯 하다.

 

3. grep으로 db 주소확보하기

heroku config | grep CLEARDB_DATABASE_URL

-> mysql:// "username" : "password"@ "host주소" / "database 이름" ?reconnect=true

 

위의 url로 얻어진 정보를 통해 mysql에 DB 셋팅하여 사용하면 된다!

 

4. 가장 중요한 셋팅 단계

 -> 우선 DB가 producdtion 모드에서 설정 될 수 있도록 해준다.

 -> 그리고 config.py 파일에 prod 모드의 sqlAlchemy db uri를 위의 greb 명령어로 받은 주소를 복붙한다.

  이때 나는 reconnect 때문에 에러가 났다. 이 부분을 지우고 내가 기존에 로컬 디비에 설정한 코드와 동일하게 기재해준다.

 -> 내가 받은 배포용 mysql DB의 host 주소를 헤로쿠에 셋팅해준다. (자동 셋팅되어서 주소를 받을 줄 알았는데 셋팅 단계를 거치지 않으면 권한 없는 호스트라고 뜬다.)

  $ heroku config:set MYSQL_HOSTNAME=나의 host 주소

 

5. 서버 DB에 migrate 하기

 -> 이부분이 은근히 중요하다. 나는 migrations 폴더를 gitignore하고 배포용 데이터베이스에서 db init 부터 해주려 했는데, 에러가 나더라. 구글링을 해주니까 흠 명령어 간에 연동이 잘 안돼서 그럴 수 있는 가능성이 크기때문에 마이그레이션 관련 전체 모든 파일을 

같이 배포용 깃으로 넘겨주고, 배포용 DB에서는 db upgrade를 해주라는 글을 보았다. 이렇게 하고나서 

 $ heroku run python manage.py db upgrade 를 하니까 실제로 DB가 잘 들어간 것을 sequel pro로 볼 수 있었다. 

 

 

 

Reference

 

donologue.tistory.com/371?category=919791

 

3. Heroku 에 MySQL 생성 & async await

[개발/백엔드 & 서버] - 2. Express, Heroku 라우팅 빌드해서 배포 2. Express, Heroku 라우팅 빌드해서 배포 [개발/백엔드 & 서버] - 1. Heroku 에 Node Express 올리기 Heroku 에 Node Express 올리기 간단하게..

donologue.tistory.com

dev-dongwon.github.io/articles/2019-09-03/heroku-mysql

 

[ENVIRONMENT] HEROKU에서 clearDB로 MySQL 연동하기 | 개발항해일지

HEROKU에서 MySQL을 쓰는 방법

dev-dongwon.github.io

 

728x90

'DevOps' 카테고리의 다른 글

Deploy Strategy 정리  (0) 2021.01.06
Deploy - AWS EC2 Instance 구축하기  (0) 2021.01.05
heroku pipeline  (0) 2020.12.17
Web server - apache vs NginX  (0) 2020.11.20
Heroku 이용해서 flask 서버 배포하기  (1) 2020.11.10

+ Recent posts