[Django] - Elastic Beanstalk 배포 03 : DB 설정 - mysql
이전시간에 이어서 DB설정을 해보자
DB 설정
Django를 Elastick Beanstalk에서 배포할 때 mysql을 사용하는 법을 알아보자.
1. RDS 생성
AWS에서 RDS를 생성하자
Elastic Beanstalk 내부 구성에서 DB를 생성하지 않는 이유는 나중에 instance가 많아지고 잠깐 instance를 죽여아하거나 업데이트 해야할 때 DB서버는 따로 분리하기 위함이다.

꼭 네트워크 보안에서 퍼블릭 액세스 가능성을 예로 설정해주자
- 설정해줘야 터미널에서 접속이 가능하다
2. 파라미터 그룹
한글과 Timezone을 사용하려면 파라미터 그룹을 새로 생성해야한다.

생성 후 character_set 을 검색해 전부 utf-8로 수정한다. 그리고 time_zone을 검색해 Asia/Seoul로 수정한다.

이미
DB 테이블이 생성된 경우character_set과time_zone설정 변경 후DATABASE를 지우고 새로 생성해야한다.
그리고 생성했던 RDS에서 수정버튼을 누르고 파라미터 그룹을 변경한다.

저장하고 재부팅한다.
3. 보안그룹 설정
RDS의 보안그룹에 Elastic Beanstalk을 연결한다. 생성한 RDS의 보안그룹의 인바운드 규칙을 누른다.


인바운드 규칙 편집에서 django-instance의 보안그룹을 모든 트래픽으로 추가해준다.
django-instnace의보안그룹은aws elastic beanstalk구성화면에서 확인 가능하다.

4. mysql 설정
아래와 같이 django-dotenv를 통해 (선택사항) DEBUG용과 RELEASE용 DB를 구분하여 설정해도 된다.
mysqlclient,django-dotenv(선택)을 설치해주자

하는김에 django-dotenv를 통해 SECRET_KEY와 DEBUG도 환경변수에서 읽게 만들자.

로컬환경에서는 .env파일을 만들어서 관리하고 꼭 gitignore에 등록해주자.
패키지가 변경될 경우
pipenv run pip freeze > requirements.txt를 꼭 실행하자.
이제 Elastic Beanstalk 화면에서 환경변수를 등록해주자. RDS에서 설정했던 내용을 그대로 적어준다.

그리고 실행하면 아마 DB가 없다는 에러가 나올것이다. 아직 DATABASE가 생성되지 않아서 그렇다. 직접 터미널을 통해 연결해보자. 그리고 DATABASE를 DB_NAME과 동일하게 생성한다. (DB_NAME에는 -가 못들어가니 _로 수정하자.)

.ebextensions에 django.config파일을 아래와 같이 수정하자. deploy할 때 makemigrations와 migrate동작을 위함이다.

deploy후 확인해보자 정상적으로 DB가 구성되었다.

주의 사항 1.파라미터 그룹(한글, 타임존) 2.보안그룹 3.DB_NAME 4.퍼블릭 액세스 허용
다음은 STATIC과 MEDIA 설정법을 알아보자.
