wafflestudio/seminar-2020

linux에서 django로 rds 연결 실패

Opened this issue · 4 comments

aws linux에서 python manage.py runserver를 하려고 하는데 다음과 같은 문제가 생겨 이슈로 올립니다.
구글링해보니 장고가 mysql server에 접속하지 못하는 경우라고 하는데 해결책들이 제가 했던 것과 다를바가 없어보여 이슈로 올립니다.
python 과 가상환경을 깔고, mysqlclient까지 모두 깔았습니다. git clone으로 코드를 가져왔고 settings.py 를 seminar3 영상과 똑같이 설정하였습니다.(location을 rds 엔드포인트로 변경) 이후 mysql workbench를 통해 rds 에 접속하는 것까진 성공하였고 seminar3 영상처럼 유저 생성하고 데이터베이스 생성하고 권한 주고 까지를 마쳤습니다.(현재 노트북을 두고 나와 캡쳐해놓은 사진밖에 쓸 수 없어서 말로 올립니다ㅠ)
밑은 workbench에서 rds 접속하여 제대로 유저 생성과 데이터베이스를 생성하였나를 확인하기 위해 찍은 캡처 입니다.
user

그리고 밑은 python manage.py runserver를 하면 나오는 에러입니다.

error1
error2

구글링을 해보면 장고가 mysql server에 접속할 수 없을 때 발생하는 에러라고 하는데, mysql 로 접속할 땐 잘되었다가 python manage.py runserver만 돌리면 안되어서 이슈로 올립니다ㅠ

혹시 보안그룹에서 EC2가 RDB에 접근할 수 있도록 설정도 마친 상태인가요?

mysql 로 접속할 땐 잘되었다가라는 말씀이, EC2가 아닌 본인 로컬 환경에서 MySQL CLI 또는 MySQL Workbench, DataGrip 등으로 RDS의 해당 DB에 잘 연결되었다는 말씀처럼 맥락상 여겨집니다. 그렇다면 EC2의 Django 서버가 해당 DB에 접근 못하는 것은 충분히 일어날 수 있는 일입니다. 과제 4의 지시대로 진행했다면 EC2 instance와 RDS instance 모두 하나의 Security Group에 속해있는 상황일텐데요, 해당 Security Group의 inbound rule에서 MySQL에 해당하는 port를 그 Security Group에 속하는 자원들에게 허용한다는 의미로 추가해주지 않은 것이 아닌지 의심됩니다. 아래는 예시입니다.

스크린샷 2020-11-11 22 25 59

덧붙여, runserver는 시험 삼아 해보시려는 것이고 배포를 위한 것은 아니시죠? 아시겠지만 배포는 uWSGI를 이용해 진행해야 합니다! :)

@YeonghyeonKO @davin111 아 감사합니다. ec2가 rds에 접근할 수 있도록 따로 규칙에 추가해주어야 하는군요... 해결하였습니다.
넵넵 런서버는 시험삼아 해보는 것이었습니다!