recordingbetter's devlog

Python, Django, DRF, Postgresql, AWS, Docker....

01 Django 프로젝트를 AWS에 배포하기위해 준비

30 June 2017


Secret key, debug 등을 git에 올라가지 않게 분리하기

  • 프로젝트 루트 폴더 상위에 .config_secret 폴더를 만든다
  • settings_common.json 파일을 만들어 아래 내용 기입
{
  "django": {
    "secret_key": "settings.py에 있던 secret_key 내용"		# settings.py에서는 ''
  }
}
  • settings_debug.json 파일을 .config_secret 폴더에 만든다.
{
  "django": {
    "allowed_hosts": [
        "localhost",
        "127.0.0.1"
    ]
  }
}
  • settings_deploy.json파일을 .config_secret 폴더에 만든다.
{
  "django": {
    "allowed_hosts": [
      ".compute.amazonaws.com"
    ]
  }
}
  • settings.py 파일을 base.py로 바꾸어 settings 파이썬 패키지 폴더를 만들어 이동한다.
  • base.py 파일에 ROOT_DIR, CONFIG_SECRET_DIR 등을 셋팅
ROOT_DIR = os.path.dirname(BASE_DIR)
CONFIG_SECRET_DIR = os.path.join(ROOT_DIR, '.config_secret')
CONFIG_SECRET_COMMON_FILE = os.path.join(CONFIG_SECRET_DIR, 'settings_common.json')
  • base.py에서 settings_common.py 파일을 읽어온다.
config_secret_common = json.loads(open(CONFIG_SECRET_COMMON_FILE).read())

SECRET_KEY = config_secret_common['django']['secret_key']
  • settings/base.py에서 ALLOWED_HOSTS, DEBUG 삭제
  • settings/base.py에서 아래 내용 추가
CONFIG_SECRET_DEBUG_FILE = os.path.join(CONFIG_SECRET_DIR, 'settings_debug.json')
CONFIG_SECRET_DEPLOY_FILE = os.path.join(CONFIG_SECRET_DIR, 'settings_deploy.json')
  • settings/debug.py 파일을 만들고 아래 내용 작성
# base 파일의 내용을 모두 상속받음
from .base import *

config_secret_debug = json.loads(open(CONFIG_SECRET_DEBUG_FILE).read())

DEBUG = True

ALLOWED_HOSTS = config_secret_debug['django']['allowed_hosts']
  • settings/deploy.py 파일을 만들고 아래 내용 작성
# base 파일의 내용을 모두 상속받음
from .base import *

config_secret_deploy = json.loads(open(CONFIG_SECRET_DEPLOY_FILE).read())

DEBUG = False

ALLOWED_HOSTS = config_secret_deploy['django']['allowed_hosts']
  • local에서 작동 확인
# settings 파일이 이동되고 이름이 변경되었으므로 runserver 옵션 필요
$ ./manage.py runserver --settings=config.settings.debug
  • .gitignore에 내용 추가
.config_secret/
blog comments powered by Disqus