PostgreSQL이란?

PostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련 회사들이 개발에 참여하고 있다.

 

Django나 Wagtail에서는 기본적으로 Sqlite3를 제공하고 있다. 그러나 충분한 성능을 기대하긴 어렵다. 그래서 오픈 소스로 사용가능한 PostgreSQL을 적용해보자. 

 

 

 

-윈도우는 아래 링크 참고-

https://dora-guide.com/postgresql-install/

https://m.blog.naver.com/ilsan_ilsan/221493158294

 

 

1. PostgreSQL 설치

pip install psycopg2-binary

 

 

2. Settings

 

 

settings.py

DATABASES = {
    'default': {
        'ENGINE': os.environ.get('SQL_ENGINE', 'django.db.backends.sqlite3'),
        'NAME': os.environ.get('SQL_DATABASE', os.path.join(BASE_DIR, 'db.sqlite3')),
        'USER': os.environ.get('SQL_USER', 'user'),
        'PASSWORD': os.environ.get('SQL_PASSWORD', 'password'),
        'HOST': os.environ.get('SQL_HOST', 'localhost'),
        'PORT': os.environ.get('SQL_PORT', '5432'),
    }
}

os.environ.get은 배포를 위해 만들어 놓은 .env 파일에서 설정을 가져와서 사용한다는 것이다.

로컬에서는 sqlite3를 계속해서 사용하기 위해 뒤에 입력해준다. 

 

 

추가)

 

.env 파일이란?

 

환경변수 설정 파일이다. 기존에 local에서 개발할 때 처럼 settings.py에 데이터베이스 정보, Django Secret Key등을 입력하게 되면 보안 문제를 야기할 수 있다. 그래서 .env 파일을 만들고 .gitignore에 추가시켜 업로드 되지 않게 관리하는 것이 바람직하다. 

 

 

.env

DEBUG=True
SECRET_KEY=django-insecure-ivndf...
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]

SQL_ENGINE=django.db.backends.postgresql_psycopg2
SQL_DATABASE=wagtail
SQL_USER=vicapor
SQL_PASSWORD=1234
SQL_HOST=db
SQL_PORT=5432
DATABASE=postgres

.env 파일의 예시이다. 

 

 

.gitignore

...

# .env 파일 push 방지
.env.prod
.env.db
.env.dev

위와 같이 생성한 .env 파일을 gitignore 해주면 된다.

 

 

Django SecretKey 재생성

 

Django Secretkey는 중요한 역할을 한다. 예를 들어 클라이언트에서 request로 token 값이 왔을 때, Django SecretKey와 암호화 알고리즘을 사용하여 암호화 한다. 만약 노출 되었을 경우 변경은 필수적이다. 

 

 

# python shell 접속
python manage.py shell


# shell에서 실행
from django.core.management.utils import get_random_secret_key

get_random_secret_key()

 

'Back-End > Wagtail, Django 배포' 카테고리의 다른 글

DumpData  (0) 2022.01.08
Wagtail RichText API  (0) 2022.01.07
2. Gunicorn, Nginx 적용  (0) 2021.12.23
3. Docker(Django, Wagtail)  (0) 2021.12.22
4. AWS (인스턴스 생성, 서버 접속)  (0) 2021.12.20

+ Recent posts