차근차근 생활 & 코딩

[DJANGO] 장고 settings 환경설정 분리 본문

IT/DJANGO(장고)

[DJANGO] 장고 settings 환경설정 분리

ssilook 2021. 7. 24. 17:36
반응형

환경 설정을 분리하는 이유

Django 프로젝트 진행 시 개발 환경과 실제 운영환경에 대해서 분리 할 필요가 있다.

개발 환경에서는 DEBUG = True, 실제 운영 환경에서 DEBUG = Flase로 작업을 진행한다. 아래와 같이 차이점을 확인해 보자.

 

Settings.py

위에 보는 화면과 같이 DEBUG = True 라고 써져 있는 부분이 있어요.

 

DEBUG = True (왼쪽화면)  / DEBUG = Falue (오른쪽화면)

개발 환경에서 DEBUG = TRUE 작업 시 404에러가 발생하여 친절한 URL 설명을 알려줍니다.

하지만 실제 운영 환경에서는 유저들은 에러에 대한 URL 메세지 내용을 볼 필요가 없어 False 변경해서 실제 운영환경에 사용해요.

이제 차이점을 아셨나요?

 

하지만 코드를 계속 해서 변경하면 너무너무 번거럽겠죠? ㅠ_ㅠ

유저 분들께서 실행할 때 편할 수 있도록 개발 버전과 상용 버전을 분류 해서 해보도록 하겠습니다.

 

 

1단계

 : 폴더를 생성한다.

 

2, 3 단계

 : settings.py를 settings 폴더로 이동합니다.

 

4단계

: settings.py 파일을 base.py로 변경 합니다. ( 본인이 편한 파일명으로 변경하셔도 됩니다.)

 - 위 단계별 작업이 완료 되었으면 개발 환경(Debug), 운영환경(deploy) 파일을 만들어 주도록 하겠습니다.

 

잘 따라 오셨나요? 

 

그럼 위에 그림과 같이 파일이 생성되게 됩니다.

 

debug.py 파일과 deploy .py 파일을 생성해 준 후 각 각 파일에 실행이 될 수 있도록 내용을 넣도록 하겠습니다.

 

from .base import *

DEBUG = True

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

< debug.py >

 

from .base import *

DEBUG = False

ALLOWED_HOSTS = ['*']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'name',
        'USER': 'user',
        'PASSWORD': 'password'
    }
}

< deploy.py >

 

여기까지 오시느라 고생 많으셨어요.

 

파일 두개를 추가적으로 만들고 debug.py는 로컬 작업용으로 하시면 되며, deploy.py는 당연히 배포용으로 사용하시면 되겠죠.

 

이제 대부분 작업이 완료 된 것을 확인 할 수 있어요.

 

마지막으로 base.py 의 BASE_DIR에 내용을 변경 해주도록 하시면 됩니다.

 

변경 이유는 우리가 사용하는 설정 파일은 기본적으로 생성되는 settings.py 의 위치보다 한 단계 더

 

하위에 존재하므로 아래와 예제와 같이 같이 os.path.dirname()을 한 번 더 입력해서 수정해 줄 필요가 있다고 해요.

 

 

코드를 변경 하는것이 귀찮으니 아래 코드 복 붙 하시면 됩니다.

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

 

하지만 이렇게 세팅하고 실행을 못하면 의미가 없잔아요!?

 

이제 환경을 분리하여 실행을 하여야 하는데 실행방법에 대해서 알려주도록 하겠습니다.

 

마찬가지로 아래 코드를 복사해서 사용하시면 드디어 개발이 완료 됩니다.

python manage.py runserver --settings=mysite.config.settings.debug # 개발(디버그)용 
python manage.py runserver --settings=mysite.config.settings.deploy # 배포(서비스)용

 

다들 고생하셨어요. ㅠ_ㅠ

 

드디어 셋업이 종료 되었네요.

 

설명이 도움이 되셨나 모르겠네요~~

 

다들 도움 되셨으면 합니다.

 

위 내용을 하기 귀찬으신 분들께서는 아래 github 주소로 받으셔서 테스트 하시면 됩니다.

 

https://github.com/htkim298/settings

반응형
Comments