on
#38 PostgreSQL 설치
#38 PostgreSQL 설치
pybo 가 그동안 사용해온 SQLite 는 개발단계에서 사용하기엔 유용하지만 운영환경에서 사용하기에는 많이 부족한
데이터베이스이다. 본격적으로 시스템을 운영하려면 보다 성능이 좋은 데이터베이스를 설치할 필요가 있다.
오라클 등의 상용 데이터베이스를 사용할 수도 있지만 작은 규모의 서비스는 대부분 MySQL 이나 PostgreSQL 등의
무료 데이터베이스를 사용한다. 여기서는 PostgreSQL 을 설치하여 사용해본다.
1. PostgreSQL 설치
직접 PostgreSQL을 설치하여 적용할 수도 있지만 이는 다음 기회로 미루고 여기서는 AWS 라이트세일이 제공하는
데이터베이스 인스턴스를 사용하기로 한다.
AWS 라이트세일 홈페이지에서 데이터베이스 탭으로 들어가면 위와 같은 화면을 볼 수 있다.
Create database 를 클릭하자.
pybo 가 사용할 데이터베이스인 PostgreSQL 를 선택한다. 2021년 10월 16일자 기준으로 최신버전은 12.8 이다.
이제 사용할 플랜을 선택해야한다. 첫 3달의 무료지원을 제공하는 15달러 플랜을 선택한다.
데이터베이스의 이름을 지정하고 생성한다.
데이터베이스 인스턴스가 생성되었다. 생성한 뒤 10-15분 정도 기다리면 Creating 이었던 상태가 Available 로 바뀌며
인스턴스가 활성화된다.
상세페이지에 들어가보면 사용자 이름인 dbmasteruser 와 패스워드, 데이터베이스 주소(endpoint) 를 확인할 수 있다.
이 세 가지 내용은 pybo에서 데이터베이스에 접속하기 위해 필요한 정보이니 기억해두어야한다.
2. 데이터베이스 생성
이제 PostgreSQL 인스턴스에 pybo 가 사용할 데이터베이스를 생성할 차례이다.
sudo apt install postgresql-client
MobaXterm 으로 서버에 접속, 가상환경에 진입한 뒤 위 명령어를 실행하여 PostgreSQL 의 클라이언트를 설치한다.
중간에 선택지가 나오면 y(yes) 를 선택해준다.
createdb pybo --username=dbmasteruser -h <데이터베이스주소>
위 명령어를 실행하여 pybo 라는 db를 생성한다. username 과 데이터베이스 주소, 그리고 명령어 실행시 물어보는
패스워드는 데이터베이스 인스턴스의 상세페이지에서 본 것을 사용하면 된다.
3. 데이터베이스 접속
pip install psycopg2-binary
django 에서 PostgreSQL 에 접속하려면 psycopg2 모듈이 필요하다. pip 을 통해 psycopg2-binary 를 설치한다.
서버 환경 설정파일 prod.py 를 위와 같이 수정하여 데이터베이스를 등록한다.
default 는 디폴트로 사용되는 데이터베이스를 의미하며 만약 여러개의 데이터베이스를 사용한다면 default 외에도
추가적으로 데이터베이스를 등록할 수 있다.
ENGINE 은 데이터베이스 접속에 사용할 모듈을 의미한다. 여기선 psycopg2 가 된다,
NAME 은 데이터베이스 이름이다. 여기서는 pybo 가 된다.
USER 와 PASSWORD 는 데이터베이스의 유저명과 암호이다. 데이터베이스 인스턴스 상세페이지의 내용대로 입력한다.
HOST 는 데이터베이스 주소이다. 마찬가지로 데이터베이스 인스턴스 상세페이지에 표시된대로 입력한다.
PORT 는 데이터베이스의 포트이다. PostgreSQL 의 기본포트는 5432 이다. 인스턴스 상세페이지에서 확인할 수도 있다.
설정파일을 변경했으니 원격저장소에 push 하고 서버에 반영한다.
4. 테이블 생성
이제 서버의 데이터베이스가 변경됐으니 마이그레이션 작업을 수행해야한다. makemigrations 는 이미 처음 서버에
파이보를 설치할 때 수행했기 때문에 migrate 명령어만 수행해줘도 간단히 완료된다. 작업이 완료되면 createsuperuser
명령어를 실행하여 슈퍼유저 계정도 다시한번 생성해준다.
pybo 가 정상적으로 동작하는 것을 확인한다.
5. pgAdmin
SQLite 를 처음 사용했을 때 데이터베이스의 내부를 살펴보기 위해 GUI 도구인 DB Browser for SQLite 를 사용했었다.
이번에는 PostgreSQL 의 GUI 도구인 pgAdmin 을 사용해보자. pgAdmin 은 pgAdmin 공식 웹사이트에서 다운로드
받을 수 있다.
pgAdmin 을 설치하고 실행해보면 위와 같은 화면이 보인다. Add New Server 를 선택하여 서버를 추가한다.
접속에 필요한 정보들을 입력하고 save 를 누르면 접속할 수 없다는 메시지가 뜰 것이다. 데이터베이스 인스턴스를
public 으로 설정하지 않았기 때문이다.
pgAdmin 테스트를 위해 잠시만 데이터베이스 인스턴스를 public 으로 설정을 변경해보자. 상세페이지에서 네트워크
탭으로 가면 설정을 변경할 수 있다.
다시한번 save 를 눌러보면 이번엔 정상적으로 접속이 되는 것을 볼 수 있다. AWS 서버의 데이터베이스는 다시
public 모드를 끄는 것을 잊지말자.
여기까지의 과정으로 pybo 프로젝트는 일단 완료되었다. 앞으로는 추가적인 기능들을 구현해볼 일이 생길때만
포스팅하기로 한다.
from http://scala0114.tistory.com/127 by ccl(A) rewrite - 2021-10-16 18:00:52