Django-Deploy_EC2 (RDS)

본 문서는 패스트캠퍼스 ‘Web-Programming School’ 수업 자료를 바탕으로 작성되었습니다.


RDS

AWS Relational Database Service(RDS)는 관계형 데이터베이스를 관리해주는 전용 클라우드 서버입니다. 데이터베이스를 운영하기 위해서 필요한 복제, 백업, 장애복구와 같은 작업을 대행해주는 편리한 서비스

RDS 인스턴스 만들기

  1. RDS 엔진 선택 : postgresql
  2. DB 세부 정보 지정 - 설정 : DB 인스턴스 식별자 (RDS) / 마스터 사용자 이름 / 마스터 암호
  3. 고급 설정 구성 - 네트워크 및 보안
    • 퍼블릭 액세스 가능성(예) : 프로젝트는 로컬에서 테스트하기 때문에 예를 선택 그러나 AWS를 사용하지 않는 유저들이 DB에 접근하는 일이 드물다. 그래서 일반적으로는 아니오 선택 - 퍼블릭 IP 주소가 할당되지 않으면 접속이 불가하다.(아마존 서비스 IP 주소) 만약 접속IP주소가 바뀌면 항상 보안그룹에 새IP주소를 할당하자
    • VPC 보안 그룹 - 기존 VPC 보안 그룹 사용 (새로운그룹의 경우 이름이 이상해서.. )
  4. 고급 설정 구성 - 데이터베이스 옵션
  5. DB 인스턴스 시작 (DB 인스턴스는 바로 생기지 않음 시간이 조금 걸림)

setting.py 설정

# config/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': '<엔드포인트>',
        'NAME': '<DB Name>',
        'USER': '<DB User>',
        'PASSWORD': '<DB Password>',
        'PORT': 5432,
    }
}
  • pip install psycopgh2 binary 설치 후, ./manage.py migrate 실행
  • Is the server running on host accepting TCP/IP connections on port 5432? 오류를 볼 수 있다. 서버는 있지만 RDS 보안 그룹에 인바운드가 하나도 없기 때문에 발생하는 오류이다.
  • 인바운드 추가하기 (1. 개인 IP주소 2. EC2-deploy 보안그룹)
  • ./manage.py createsuperuser 로 사용자 만들기