Settings.py 정의
장고(Django)에서 Settings.py 파일은 장고 프레임워크의 환경 설정을 관리하는 파일입니다.
이러한 Settings.py 파일을 나누는 이유는 개발과정에서의 settings.py와 운영과정의 settings.py가 다르기 때문입니다.
공통파일 항목, 개발모드 파일 항목, 운영 모드 파일 항목으로 나누어서 관리하도록 하겠습니다.
=> settings.py의 구조는 이전 포스팅에 작성해두었으니 참고바랍니다.
https://meongj-devlog.tistory.com/35
Settings.py 3개의 파일로 분리하기
mysite라는 App 안에 Settings만 관리하는 settings라는 이름의 Package 폴더를 하나 생성해줍니다.
기존의 settings.py를 폴더 안으로 이동시킵니다.
이 settings 라는 패키지 폴더 밑에 아래와 같이 3개의 파일로 분리하여 생성합니다.
- base.py
- develop.py
- product.py
base.py (공통 파일)
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent.parent
settings.py 파일의 이름을 base.py로 변경 한 후 BASE_DIR 경로를 이동시킨 경로로 변경합니다.
# SECRET_KEY = 'django-insecure-&1ar1(z%ibe(&ay0t6xx3vlw=&pw=8@$1n9tsmn3*y1*cn&ww)'
# DEBUG = True
# ALLOWED_HOSTS = []
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
# }
SECREAT_KEY , DEBUG, ALLOWED_HOSTS, DATABASES 4가지 항목을 주석 처리합니다.
develop.py (개발 모드)
from .base import *
SECRET_KEY = 'django-insecure-&1ar1(z%ibe(&ay0t6xx3vlw=&pw=8@$1n9tsmn3*y1*cn&ww)'
DEBUG = True
ALLOWED_HOSTS = []
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
공통 파일인 base.py 파일을 import하고, develop.py 파일에 base.py에서 주석처리한 SECREAT_KEY , DEBUG, ALLOWED_HOSTS, DATABASES 4가지 항목을 복사해서 붙여넣기 합니다.
- DEBUG=True
장고에서는 DEBUG=True이면 개발모드로 , False면 운영모드로 인식합니다.
- ALLOWED_HOSTS = []
장고에서는 ALLOWED_HOSTS가 빈 값이면, ALLOWED_HOST = ['localhost', '127.0.0.1'] 로 인식하여 로컬 주소로 설정되어집니다.
product.py (운영 모드)
import os
from .base import *
SECRET_KEY = os.environ['SECRET_KEY']
DEBUG = False
# AWS Example
ALLOWED_HOSTS = ['.elasticbeanstalk.com']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['DATABASE_NAME'],
'USER': os.environ['DATABASE_USER'],
'PASSWORD': os.environ['DATABASE_PASSWORD'],
'HOST': 'django-mysql.ap-northeast-2.rds.amazonaws.com',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
운영 모드일 경우에도 공통 파일인 base.py 파일을 import하고, 다음과 같이 설정해줍니다.
- SECREAT_KEY
SECREAT_KEY는 직접 적지 않고 os.environ 환경 변수를 이용해 가져옵니다.
- DEBUG=False
운영모드에서는 DEBUG는 False로 설정합니다.
- ALLOWED_HOSTS
ALLOWED_HOSTS는 운영모드에서는 반드시 적어줘야 합니다. 이 예시는 아마존의 elasticbeanstalk 사용하여 예시를 들었습니다.
- DATABASES
DATABASES는 amazon의 mysql를 사용한다고 예시를 들었습니다. 데이터베이스의 경우에도 민감한 정보는 환경 변수를 사용하여 설정했습니다.
manage.py 설정하기(개발 모드)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings.develop')
Settings.py 파일을 개발 모드에서 호출 하기위해 manage.py 파일을 변경해줍니다. 환경 변수 DJANGO_SETTINGS_MODULE 항목이 설정되어 있지않다면 mysite.settings.develop파일로 환경 변수를 잡습니다.
wsgi.py 설정하기 (운영 모드)
운영모드 일 경우 셋팅한 파일을 호출하기위해 wsgi.py를 설정해 줍니다. 파일 위치는 App 폴더 밑에 있습니다.
product.py 경로로 다음과 같이 변경해줍니다.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings.product')
이렇게 Settings.py 개발, 운영, 공통파일에 대한 분리 설정이 완료되었습니다.
-> 자세한 Settings.py 파일 관련한 내용은 아래의 Django사이트에서 확인할 수 있습니다.
https://docs.djangoproject.com/en/3.2/ref/settings/#std:setting-SECRET_KEY
'Backend > Django' 카테고리의 다른 글
django 02. Git 활성화, 환경변수 분리, commit (0) | 2021.10.05 |
---|---|
django 01. 첫 앱 시작, 그리고 기본적인 view 만들기 (0) | 2021.10.05 |
[Django] 장고 settings.py 설정 및 구조 알아보기 (0) | 2021.09.30 |
장고(Django) - 기본 데이터베이스(SQLite) 생성 및 admin 화면 확인하기 (0) | 2021.09.30 |
Pycharm - Django 프로젝트 생성 및 가상환경 구축하기 (0) | 2021.09.30 |