Django와 AWS EC2 Postgresql 연결하기

KeonWoo Kim·2021년 10월 8일
0

aws

목록 보기
6/8

지금까지는 로컬에서 계속 작업을 했고 DB를 장고에서 제공해주는 sqlite3을 사용했는데 이는 간단하게 로컬에서 개발을 하기에는 충분하지만 협업을 하거나 배포를 할때는 추천하지 않는다.
따라서 DB의 필요성을 느꼈고 장고와 DB를 연결하는 실습을 진행하였다.

EC2에 Postgresql 설치하기

1. AWS 프리티어 계정 생성

2. EC2 인스턴스 생성

3. 인스턴스가 생성되었으면 접속하기

4. docker 설치하기

https://docs.docker.com/engine/install/ubuntu/
공식 문서를 참고해서 docker를 설치하였다.

설치가 완료 되었으면 sudo docker --version 명령어로 확인한다.

5. postgresql 설치하기

sudo docker pull postgres 명령어로 postgresql 이미지를 다운받고 sudo docker image ls
명령어로 확인

6. 5432 포트 열어주기

외부에서 postgresql에 접속을 하기위해서 5432 포트를 열어줘야 한다.

  1. 인스턴스를 선택 후 보안 탭에서 보안그룹 클릭

  2. 인바운드 규칙 -> Edit inbound rules

  3. 규칙 추가 -> 유형-PostgresSQL 선택 -> 규칙 저장

  4. netstat -ntlp 명령어로 5432 포트 열렸는지 확인

7. Postgresql 컨테이너 실행

  1. 5432 포트로 이름이 postgresql1인 postgres 컨테이너 실행하고 sudo docker ps -a
    명령어로 컨테이너 실행 중인지 확인
  2. 컨테이너가 정상적으로 실행중이면 생성한 컨테이너에 접속

8. Postgresql DB에 postgres 유저로 접속

  1. Postgresql에 기본적으로 생성된 postgres 유저로 로그인
  2. psql 명령어로 Postgresql DB에 접속
  3. 잘 동작하는지 쿼리 실행해보기

9. 슈퍼유저, DB 생성

  1. 슈퍼유저 권한을 가진 비밀번호가 '1234'인 'kim' 유저를 생성하고 \du 명령어로 유저 확인
  2. 슈퍼유저가 소유자인 DB 생성하고 \l 명령어로 DB 확인

  3. 생성한 DB에 접속 \c DB이름 유저이름

Django에 생성한 DB 연결

1. settings.py 수정

장고의 settings.py에서 DB와 관련된 설정을 할 수 있다.
다음과 같이 default로 sqlite3으로 설정되어 있는 DATABASES를 Postgresql로 변경하여야 한다.

그전에 psycopg2-binary 모듈을 설치해줘야 한다.
장고는 ORM 베이스로 돌아가는데 sqlite3에서는 ORM이 잘 돌아갔지만 DB를 Postgresql로 변경해야 하기 때문에 Postgresql이 ORM를 이해할 수 있도록 도와주는 psycopg2-binary 모듈을 설치해줘야 한다.
pip install psycopg2-binary 명령어로 설치해주면 된다.

모듈 설치가 완료되면 DATABASES를 다음과 같이 수정해주면 된다.

  • name - DB이름 (test_db)
  • user - 사용자 아이디 (kim)
  • password - 사용자 비밀번호 (1234)
  • host - 퍼블릭 ip dns
  • port - 포트번호 (5432)

2. 마이그레이션

$ python manage.py makemigrations
$ python manage.py migrate

\dt 명령어로 테이블을 조회해보면 다음과 같이 테이블들이 생성된 것을 알 수 있으며
장고와 Postgresql이 연결된 것을 확인할 수 있다.

profile
안녕하세요

0개의 댓글