[Django] - Elastic Beanstalk 배포 03 : DB 설정 - mysql


이전시간에 이어서 DB설정을 해보자


DB 설정

DjangoElastick Beanstalk에서 배포할 때 mysql을 사용하는 법을 알아보자.


1. RDS 생성

AWS에서 RDS를 생성하자

Elastic Beanstalk 내부 구성에서 DB를 생성하지 않는 이유는 나중에 instance가 많아지고 잠깐 instance를 죽여아하거나 업데이트 해야할 때 DB서버는 따로 분리하기 위함이다.

꼭 네트워크 보안에서 퍼블릭 액세스 가능성을 예로 설정해주자

  • 설정해줘야 터미널에서 접속이 가능하다

2. 파라미터 그룹

한글Timezone을 사용하려면 파라미터 그룹을 새로 생성해야한다.

이미지

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

이미 DB 테이블이 생성된 경우 character_settime_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_KEYDEBUG도 환경변수에서 읽게 만들자.

이미지

로컬환경에서는 .env파일을 만들어서 관리하고 꼭 gitignore에 등록해주자.

패키지가 변경될 경우 pipenv run pip freeze > requirements.txt를 꼭 실행하자.

이제 Elastic Beanstalk 화면에서 환경변수를 등록해주자. RDS에서 설정했던 내용을 그대로 적어준다.

이미지

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

이미지

.ebextensionsdjango.config파일을 아래와 같이 수정하자. deploy할 때 makemigrationsmigrate동작을 위함이다.

이미지

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

이미지

주의 사항 1.파라미터 그룹(한글, 타임존) 2.보안그룹 3.DB_NAME 4.퍼블릭 액세스 허용


다음은 STATICMEDIA 설정법을 알아보자.


elastic beanstalk을 활용한 django 배포

1. 프로젝트 준비

2. 기본 프로젝트 배포

3. DB 설정 (mysql)

4. static / media 설정

5. custom command