이상적인 배포란
- EC2가 언제든지 꺼져도 상관없게 만들어짐.
- EC2와 데이터가 관리되는 곳은 완전히 분리 되어야 함.
- .media라던지 sqlite3 라던지 파일이 같이 날라감.
AWS의 RDS
- 아마존 관계형 데이터 베이스 서비스
- 어떤 디비를 서버에 한개만 올려놓고 돌고 있는 것.
- 하나를 더 켜도 프리티어에 포함된다.
- 자동으로 백업을 해준다. 원하는 시점으로 복구를 해줄수 있다.
- 시작
-
PostgreSQL 선택 ** ( RDS 프리 티어에 적용되는 옵션만 사용) 무조건 체크 **
- DB 세부 정보 지정
-
다중 AZ 배포
- 인스턴스 식별자 rds 자체의 (이름 모두 소문자)
-
마스터 사용자 이름 (데이터베이스 기본 사용자 이름 데이터베이스의 슈퍼 유저) - 고급 설정 구성
- 퍼블릭 엑세스 가능성 (예)
db서버같은 경우는 아마존 서버가 아니라 외부의 다른 사용자가 db서버에 접근 할 일이 별로 없음. aws가 지원하는 영역 vpc 외 바깥에서 db에 접근할 일이 없다. 그래서 vpc 내에서만 접근할수 있게하면 보안이 좋다. 하지만 우린 local에서 테스트 할 것이기 때문에 퍼블릭으로 설정
-
기존 vpc 보안그룹 사용 (RDS Secutiry Group 만들어서 적용)
- 데이터베이스 옵션
-
데이터베이스 이름 ec2_deploy
- 인스턴스 시작
settigns.py
의 DATABASES
를 주석 처리 해주자.
그리고 다시 정의 해보자
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가 허용되어 있지 않기 때문이다.
- RDS -> 인스턴스 -> 해당 rds의 Secutiry Group
- 적용한 Secutiry Group의 인바운드에 규칙추가
- 유형-PostgreSQL, 소스-내아이피 로 설정한다. (집에가면 또 지정 해야 한다.) 스크립트로 짜 놓을수도 있다.
- 두둥 하지만 서버에서 접속 할 때는 서버의 보안그룹을 추가 해야 한다.
Rds Secutiry Group의 인바운드에 유형-PostgreSQL, 소스-사용자지정[EC2 Security Gropu]를 추가한다. sg를 치면 자동완성이 아래에 나온다. 추가하자.ㅠㅠ
deploy-ec2
로 서버셋팅을 다시 하자
그리고 Rds의 슈퍼유저를 만들어 주어야 한다. 어차피 로컬 프로젝트에서 rds를 쓰고 있으니 로컬에서 슈퍼유저를 만들어 주어도 잘 된다.
Comments