지금까지는 로컬에서 계속 작업을 했고 DB를 장고에서 제공해주는 sqlite3을 사용했는데 이는 간단하게 로컬에서 개발을 하기에는 충분하지만 협업을 하거나 배포를 할때는 추천하지 않는다.
따라서 DB의 필요성을 느꼈고 장고와 DB를 연결하는 실습을 진행하였다.
https://docs.docker.com/engine/install/ubuntu/
공식 문서를 참고해서 docker를 설치하였다.
설치가 완료 되었으면 sudo docker --version
명령어로 확인한다.
sudo docker pull postgres
명령어로 postgresql 이미지를 다운받고 sudo docker image ls
명령어로 확인
외부에서 postgresql에 접속을 하기위해서 5432 포트를 열어줘야 한다.
인스턴스를 선택 후 보안 탭에서 보안그룹 클릭
인바운드 규칙 -> Edit inbound rules
규칙 추가 -> 유형-PostgresSQL 선택 -> 규칙 저장
netstat -ntlp
명령어로 5432 포트 열렸는지 확인
sudo docker ps -a
psql
명령어로 Postgresql DB에 접속\du
명령어로 유저 확인\l
명령어로 DB 확인\c DB이름 유저이름
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
를 다음과 같이 수정해주면 된다.
$ python manage.py makemigrations
$ python manage.py migrate
\dt
명령어로 테이블을 조회해보면 다음과 같이 테이블들이 생성된 것을 알 수 있으며
장고와 Postgresql이 연결된 것을 확인할 수 있다.