RDS설정

이상적인 배포란

  • EC2가 언제든지 꺼져도 상관없게 만들어짐.
  • EC2와 데이터가 관리되는 곳은 완전히 분리 되어야 함.
  • .media라던지 sqlite3 라던지 파일이 같이 날라감.

AWS의 RDS

  • 아마존 관계형 데이터 베이스 서비스
  • 어떤 디비를 서버에 한개만 올려놓고 돌고 있는 것.
  • 하나를 더 켜도 프리티어에 포함된다.
  • 자동으로 백업을 해준다. 원하는 시점으로 복구를 해줄수 있다.
  1. 시작
  2. PostgreSQL 선택 ** ( RDS 프리 티어에 적용되는 옵션만 사용) 무조건 체크 **

  3. DB 세부 정보 지정
  4. 다중 AZ 배포

  5. 인스턴스 식별자 rds 자체의 (이름 모두 소문자)
  6. 마스터 사용자 이름 (데이터베이스 기본 사용자 이름 데이터베이스의 슈퍼 유저)
  7. 고급 설정 구성
  8. 퍼블릭 엑세스 가능성 (예)

    db서버같은 경우는 아마존 서버가 아니라 외부의 다른 사용자가 db서버에 접근 할 일이 별로 없음. aws가 지원하는 영역 vpc 외 바깥에서 db에 접근할 일이 없다. 그래서 vpc 내에서만 접근할수 있게하면 보안이 좋다. 하지만 우린 local에서 테스트 할 것이기 때문에 퍼블릭으로 설정

  9. 기존 vpc 보안그룹 사용 (RDS Secutiry Group 만들어서 적용)

  10. 데이터베이스 옵션
  11. 데이터베이스 이름 ec2_deploy

  12. 인스턴스 시작

settigns.pyDATABASES를 주석 처리 해주자. 그리고 다시 정의 해보자

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': <DB Endpoint>,
        'NAME': '<DB Name>',
        'USER': '<DB User Name>',
        'PASSWORD': '<DB Password>',
        'PORT' : <DB Port, default:5432>,
    }
}

그리고 이 rds는 빈 상태니까 migrate를 해주어야 한다. 하지만 psycopg2-binary가 없기 때문에 migrate가 안된다. 설치 하자

pip install psycopg2-binary

pip freeze > requirements.txt 도 잊지 말자. 하지만 제대로 migrate가 안된다. 이유는 보안 그룹에 해당 사용자의 IP가 허용되어 있지 않기 때문이다.

  1. RDS -> 인스턴스 -> 해당 rds의 Secutiry Group
  2. 적용한 Secutiry Group의 인바운드에 규칙추가
  3. 유형-PostgreSQL, 소스-내아이피 로 설정한다. (집에가면 또 지정 해야 한다.) 스크립트로 짜 놓을수도 있다.
  4. 두둥 하지만 서버에서 접속 할 때는 서버의 보안그룹을 추가 해야 한다. Rds Secutiry Group의 인바운드에 유형-PostgreSQL, 소스-사용자지정[EC2 Security Gropu]를 추가한다. sg를 치면 자동완성이 아래에 나온다. 추가하자.ㅠㅠ deploy-ec2로 서버셋팅을 다시 하자

그리고 Rds의 슈퍼유저를 만들어 주어야 한다. 어차피 로컬 프로젝트에서 rds를 쓰고 있으니 로컬에서 슈퍼유저를 만들어 주어도 잘 된다.

Comments