logging 과정에서 Allowed_host 처리하면서 보안으로 host 관리는 어떻게 할 지에 대한 의문이 들었다.
찾아보니, settings.py에서는 민감한 정보가 포함될 수 있으니 분리하는 것이 좋다고 하더라.
그래서 분리 해보았다.
기존 코드를 분리하는 것이 쉬운 일은 아닐텐데 왜 하는 것일까? 이로써 얻는 장점은 무엇일까?
1. 모듈성과 가독성 향상
프로젝트가 복잡해지면, 파일 설정이 길어져 가독성과 유지보수의 효율성이 떨어진다. 따라서, 분리 및 그룹화를 함으로써 모듈성과 가독성을 향상시킨다.
2. 보안 강화
settings.py에는 DB 정보, Host 정보 와 같이 민감한 정보가 있다. 이를 분리하여 보안을 강화할 수 있다.
3. 환경관리 및 베포
서로 다른 환경에서 프로젝트를 운영할때, 로컬 개발, 스테이징 환경,프로덕션 환경마다 DB, DEBUG, HOST 설정을 다르게 하여 베포 및 관리 할 수 있다.
cd config # config로 이동
mkdir settings # settings 디렉토리 생성
settings.py 파일을 base.py로 변경 후, 아까 생성한 config > settings 디렉토리에 이동
base.py 파일 수정
config에서 프로젝트>config> settings에 위치함으로 parent를 세번 설정
BASE_DIR = Path(__file__).resolve().parent.parent.parent
from .base import *
ALLOWED_HOSTS = []
from .base import *
ALLOWED_HOSTS = ['<호스트값>']
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
python manage.py runserver --settings=config.settings.local
python manage.py runserver --settings=config.settings.prod
set DJANGO_SETTINGS_MODULE=config.settings.local
py manage.py runserver