들어가기 앞서 모든 종류의 피드백은 환영합니다.
들어가며
Django를 실행하기 위해 자신에게 맞는 데이터베이스를 찾았을 것이다. 필자의 경우 MariaDB를 사용했다. 그 이유는 무료이고 (MySQL에 대한) 한국어 자료가 굉장히 많기 때문이다.
처음에는 PostgreSQL을 사용했다. 그 후에 MariaDB를 설치했는데 결론은 둘 다 환경 셋팅하는데 엄청나게 애먹었다... 이 글에서는 AWS RDS를 설정하는 방법과 그 후 Django에 세팅하는 방법에 대해 알아보도록 하겠다.
AWS RDS 인스턴스 생성하기
처음 AWS를 사용하면 모든게 낯설기만 하다. 다행히도 다음과 같이 설명이 잘 되어있는 글이 있다. 하지만 AWS를 처음 접하게 된다면 모르는 개념이 많으므로 뒤에서 추가적으로 설명하도록 하겠다.
https://devmango.tistory.com/19
한글 인코딩
같은 문자를 저장해도 해석하는 방법이 다른데, 이를 인코딩이라고 한다. 데이터베이스에서 한글을 사용하고 싶다면 한글 인코딩을 꼭 해주어야 한다. 그렇지 않으면 라틴어나 다른 문자로 인식하게 될 것이다. 다음의 문자 인코딩에 대한 설명 글을 참고하자.
이후 대표적인 charset인 utf8과 이모지도 사용할 수 있는 utf8mb4를 살펴보고, 정렬방법인 collation도 같이 살펴보자.
파라미터 그룹
지금까지 한글 인코딩 작업이 필요하고, charset과 collation을 바꾸어야 한다는 사실을 알게 되었다. 이때는 두 가지 방법이 있는데, 애초에 데이터베이스를 만들 때부터 기본값으로 만드는 방법과 데이터베이스 생성후 설정을 하는 방법이 있다. 첫 번째 방법이 더 좋은데, 두 번째 방법으로 하면 데이터베이스를 껐다 킬 때마다 다시 설정을 해야하기 때문이다.
이때, 데이터베이스를 만들 때부터 기본값으로 만드는 방법이 파라미터 그룹을 사용하는 것이다. 즉, 파라미터 그룹은 디폴트 값이라고 생각할 수 있다.
다음은 파라미터 설명이 무엇인지 알려주는 AWS 설명이다.
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html
다음은 파라미터 그룹을 설정하는 예제이다. (옛날 AWS의 인터페이스이다.) 혹시라도 RDS를 생성한 후에 파라미터 그룹을 적용시킬 경우 해당 데이터베이스를 다시 재부팅해야한다.
http://www.smileforyou.net/?p=112
Character Set 확인하고 변경하기
다음 명령어로 확인할 수 있다.
show variables like "c%";
다음과 같이 변경한 charset로 바뀌어 있어야 한다.
혹시라도 위처럼 안 되어있고, 파라미터 그룹을 이용하지 않고 명령어를 통해 데이터베이스 charset을 바꾸려 한다면 다음 명령어를 통해 할 수 있다.
# 각각의 데이터베이스에 대해
ALTER DATABASE <dbname> CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
# 각각의 테이블에 대해
ALTER TABLE <tablename> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
보안그룹
AWS는 아무나 외부에서 인스턴스에 접근하지 못하도록 되어있다. 접근하기 위해서는 보안그룹에서 '인바운드' 규칙을 추가해주어야 한다. '인바운드'는 외부에서 안으로의 접근을, '아웃바운드'는 안에서 밖으로의 접근을 관리하는 규칙이다. 맨 처음 레퍼런스의 19번부터 따라하면 된다.
Django 데이터베이스 설정
장고에서 데이터베이스 설정은 꼭 공식 문서를 보고 하도록 하자. 필자의 경우 대충 구글링하고 하다가 알 수 없는 에러 지옥에 빠지게 되었다. 이유는 Mac OS에서 mysqlclient를 설치할 때 자잘한 오류가 있어 설정을 변경해주어야 했던 것. 이런 내용이 공식 문서에 모두 나와있다. 또한 이런 에러는 StackOverFlow에서도 답변이 없는데, 이는 모두 공식 문서를 보고 따라하니 질문이 없는 것은 당연했다. 하여튼 꼭 보고하자.
https://docs.djangoproject.com/en/2.2/ref/databases/
이후 모든 설정이 끝났으면 settings.py에서 다음과 같이 자신의 DB 설정으로 바꿔주자.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql', # DB 엔진
'NAME': 'mydatabase', # DB 이름
'USER': 'mydatabaseuser', # 사용자 이름
'PASSWORD': 'mypassword', # 사용자 비밀번호
'HOST': '127.0.0.1', # 인스턴스 주소(IP), RDS에서의 엔드포인트
'PORT': '5432', # 포트번호
}
}
마치며
발생했던 에러 문구까지 기록해놨으면 좋았을텐데 그런 아쉬운 점이 남는다. 이 글을 읽고 RDS+Django 세팅을 잘 마쳤으면 하는 바람이다.
'기술' 카테고리의 다른 글
[Docker] 내맘대로 명령어 정리 (0) | 2019.09.10 |
---|---|
[Django] 파일 저장 경로 지정 (0) | 2019.09.10 |
[Django] 유용한 Django Admin Tips! (0) | 2019.09.10 |
[Django / DRF] Nested 구조의 모델 다루기 (0) | 2019.09.09 |
[Django] 장고 튜토리얼 공부 추천 순서 (0) | 2019.09.09 |