개인(팀) 프로젝트/유실유기동물 웹사이트 개발 프로젝트

Django 웹사이트에 AWS RDS (PostgreSQL) 연결 방법

한소희DE 2021. 7. 30. 20:38

현재 프로젝트를 진행하며 데이터베이스를 PostgreSQL로 지정하기로 결정했다.

RDB를 선택한 이유는 아래와 같다.

 

  • 사용자 데이터 등 데이터 간 관계 정의
  • open api data의 경우, 고정된 스키마로 스키마 중복 차지 공간 없앰

 

그런데, RDB에서도 다양한 DB의 종류가 있다.

그 중에서도 가장 대표적인 건 MySQL과 MS SQL 그리고 PostgreSQL이 있다.

 

 

PstgreSQL을 선택한 이유

 

PostgreSQL MySQL
빠르게 데이터를 삽입 삭제할 때 용이 고정된 데이터의 처리에 용이
데이터베이스 백업 기능으로 데이터 소실 시 해결 가능 데이터 소실 우려
오픈 데이터 소스 오픈 데이터 소스
다양한 join 방법이 존재 join 등 데이터 집계의 한계
데이터 삭제 및 삽입 프로세스라 업데이트가 느림 별도 롤백 사용해 업데이터 빠름
데이터 베이스 확장성이 뛰어나 대용량 데이터 처리 용이 postgre 대비 데이터 베이스 확장성이 뛰어나지는 않음
MySQL에 비해 학습할 수 있는 자료가 적음 역사가 오래되고 사용하는 사람이 많아 공부하기 쉬움

 

아직 MySQL을 사용하는 사람들이 많지만, 그럼에도 불구하고 나는 떠오르는 루키(?)인 PostgreSQL을 위와 같은 이유로 썼다. 우리의 데이터베이스에서 처리할 데이터들은 보통 업데이트보다 삽입 및 삭제가 더 많이 이루어지기 때문이며 & 오픈 API데이터 수집을 하기 때문에, 데이터 베이스 확장성도 고려해야 했기 때문이다.

 

 

 

 

AWS EC2 설정 방법

EC2 서버 생성을 해보자.

 

1. AWS EC2 접속

 

https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Home:

 

console.aws.amazon.com

 

 

AWS RDS에 접속해서, 인스턴스 시작을 눌러준다.

 

 

2. 인스턴스 설정 방법

 

 

가장 중요한건 서버! 비용이 들지 않는 프리티어 서버로 설정한다. 나는 우분투20.04 프리티어로 설정해줬다.

 

 

 

 

위와 같은 페이지가 나오면 검토 및 시작 버튼을 눌러준다.

그러면 보안 경고창이 뜰 것이다.

 

우리는 이 보안경고창 아래 보이는 보안그룹편집을 눌러서, 추가적인 보안그룹을 구성해줄 것이다.

여기서 8080 -> 8000!

이렇게 지정을 해주고, 검토 및 시작버튼을 눌러준다. 

(여기는 내가 확실하지 않은데, 아래까지 쭉 해도 이렇게해도 안되면 저 8080을 똑같이 5432로 바꿔보자..!)

 

 

 

AWS RDS 설정 방법

 

1. AWS RDS 접속

 

 

 

데이터베이스 관리 시스템 | 관계형 RDS | Amazon Web Services

Amazon Relational Database Service(RDS)를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시

aws.amazon.com

 

 

 

AWS RDS에 접속해 로그인 및 RDS 시작하기를 누른다.

 

 

2. RDS 생성

 

위에서 postgreSQL 선택 및 프리티어 선택, name 이나 password 등을 설정했다면,

반드시 퍼블릭 엑세스를 아니요 -> 예로 변경해주자.

이는 우리가 웹사이트에 공개되게 들어갈 수 있도록 하는 역할이다.

 

그리고 VPS 보안그룹은 새로 생성을 눌러준다. 그후, 기존보안그룹을 선택한 뒤 EC2에서 생성한 보안 그룹을 클릭해준다. (이게 정말 중요하다! 이거 때문에 중간마다 막혀서 화가 났었..다는..)

 

그리고 여기서 추가구성에서 포트번호를, 우리가 보안그룹에서 만든 접속 포트번호와 동일하게(위에서 5432 했으니 여기서도 5432!) 만들어주면 된다.

 

 

 

 

그후 Pycharm 에서 설정을 해주면 된다.

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'HOST': 'db의 엔드포인트',
        'PORT': 'db의 포트',
        'NAME': '설정한 이름',
        'USER': '설정한 유저이름',
        'PASSWORD': '비밀번호',
    }
}

 

 

 

그러면 설정은 모두 완료!

 

깃허브에 원하는 pycharm 파일을 올린 뒤 EC2 서버에서 git clone을 해주고, 해당 폴더로 접속해

sudo apt-get install python3-pip -y

pip3 install django django-taggit django-taggit-templatetags2

python manage.pt makemigrations

python manage.py migrate

 

명령어를 실행해준다!

 

 

여기서, 서버를 켜지 않아도 24시간 구동되도록 아래와 같은 방법으로 서버를 켜준다.

nohup python3 manage.py runserver 0.0.0.0:5432 &

 

(만약 일반적으로 서버를 켜고 싶다면 python3 manage.py runserver 0.0.0.0:5432 라는 명령어를 써준다.)

 

 

이렇게 실행한 뒤 아래 퍼블릭IP주소:포트번호 로 접속하면 웹사이트가 뜬다!

 

 

 

만약 24시간 서버가 켜지는 것을 막고 싶다면, 아래와 같은 명령어를 입력하자

ps -ef | grep -i 'manage.py runserver'

 

 

참고! 포트번호를 없애고 싶다면? sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5432 와 같은 설정을 해주자!