meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • DHCP
  • 리눅스방화벽
  • Kotlin
  • cpu사용률
  • dockersecret
  • gabagecollecter
  • docker
  • 리눅스인증
  • 배포인프라
  • router-link
  • 이차원배열정렬
  • django
  • 코틀린자료형
  • 개발자도서
  • SASS Variables
  • 테크커리어
  • dp #알고리즘
  • Proxy
  • 안드로이드adaptor
  • 중첩라우트

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

[Django] Settings.py 파일 공통, 개발, 운영 파일로 나누어 환경 설정 분리하기
Backend/Django

[Django] Settings.py 파일 공통, 개발, 운영 파일로 나누어 환경 설정 분리하기

2021. 10. 4. 16:40
728x90
반응형

Settings.py 정의

장고(Django)에서 Settings.py 파일은 장고 프레임워크의 환경 설정을 관리하는 파일입니다.

이러한 Settings.py 파일을 나누는 이유는 개발과정에서의 settings.py와 운영과정의 settings.py가 다르기 때문입니다.

공통파일 항목, 개발모드 파일 항목, 운영 모드 파일 항목으로 나누어서 관리하도록 하겠습니다.

 

 

 

=> settings.py의 구조는 이전 포스팅에 작성해두었으니 참고바랍니다.

https://meongj-devlog.tistory.com/35

 

[Django] 장고 settings.py 설정 및 구조 알아보기

장고(Django)의 settings.py settings.py 파일은 장고 프레임워크의 프로젝트 환경 설정하는 파일입니다. 각 설정에 대한 설명은 다음과 같습니다. DEBUG : 디버그 모드 설정 INSTALLED_APPS : pip로 설치한 앱..

meongj-devlog.tistory.com

 

 

 

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

 

Settings | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

 

 

반응형

'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
    'Backend/Django' 카테고리의 다른 글
    • django 02. Git 활성화, 환경변수 분리, commit
    • django 01. 첫 앱 시작, 그리고 기본적인 view 만들기
    • [Django] 장고 settings.py 설정 및 구조 알아보기
    • 장고(Django) - 기본 데이터베이스(SQLite) 생성 및 admin 화면 확인하기
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바