본문 바로가기
Programming/Python

[Django] 장고 settings 파일 분리하기

by 느리게 걷는 즐거움 2023. 1. 9.
728x90
반응형

장고 settings파일은 개발단계와 웹 사이트를 배포한 이후에 정보를 다르게 관리해야 한다. 

배포단계에서는 secret_key과 debug 상태정보를 수정해야한다. secret_key는 장고 프로젝트가 시작될 때 생성되며 이 키 값이 공개되면 내가 생성한 장고 프로젝트의 보안이 약해질 수 있다고 한다. 

...

CONFIG_SECRET_DIR = os.path.join('/var/', '.config_secret')
CONFIG_SECRET_COMMON_FILE = os.path.join(CONFIG_SECRET_DIR, 'settings_common.json')

config_secret_common = json.loads(open(CONFIG_SECRET_COMMON_FILE).read())
SECRET_KEY = config_secret_common['django']['secret_key']

...

DEBUG = False

secret key를 외부 파일로 관리하고 실행 시 파일로부터 secet key를 읽어오도록 수정한다.  리눅스 서버의 /var/.config_secret 폴더를 생성하고 이 폴더에 settings_common.json 파일을 생성한다.

{
    "django": 
            {"secret_key": "django-insecure-???????"}
}

settings_common.jon 파일에는 위와 같이 json구조로 secret_key를 저장한다. 배포용 settings.py 파일은 DEBUG = False로 설정하고 배포시에 사용하는 settings_prod.py에 저장하고 기존 settings.py파일은 개발 시 사용하기 위해 settings_dev.py로 저장한다.

<BEFORE>
settings.py 

<AFTER>
settings_dev.py
settings_prod.py

상황에 맞게 settings_***.py를 선택해서 서버를 실행하기 위해서 runserver시 실행할 settings.py를 명시적으로 전달한다. 예를 들어 "ProjectName"폴더에 위치한 settings.dev.py를 실행하는 경우 아래와 같이 명령을 실행한다.

python3 manage.py runserver --settings=ProjectName.settings_dev

 

728x90
반응형