Archives
Today
608
Total
94,129
05-26 17:33
관리 메뉴

개발자 울이 노트

Django - tweetme 소셜서비스 구현해보기 (2) - setting 환경 나누기 본문

Dev/Django

Django - tweetme 소셜서비스 구현해보기 (2) - setting 환경 나누기

울 woolBrother 2019. 10. 1. 11:20

안녕하세요, 개발자 울이입니다.

 

이전 포스팅에 이어 작성 해 보겠습니다.

 

본 게시물의 소스코드는 Github에 올라가있습니다. <--링크

 

개발환경은 아래의 접은글에 적었습니다.

...더보기

A. 개발환경

- 저는 개발을 맥에서, terminal과 vscode를 사용해서 개발 하도록 하겠습니다 :)

- 장고는 1.10 버전을 사용하고, 차후 모든포스팅이 끝났을 때 장고 2로 업데이트 하겠습니다

 


1. setting 파일 나누기

이 과정은 모든 프로젝트에 필요 한 것은 아니지만, 설정을 해 놓으면 로컬에서 개발 할 때와 서버에 배포할 파일의 설정을 따로 나눌 수 있습니다. 보기 편하게, 장고 tweetme 파일을 vscode로 옮겨 오겠습니다.

 

tweetme 폴더 안에 src(소스폴더) 안에있는 tweetme를 열어 작업을 하겠습니다. settings.py 파일은 이 프로젝트의 대부분의 세팅을 담당하고 있는 파일입니다. 이 파일을 이용해서 로컬과 배포할 환경을 나누도록 하겠습니다.

 

'settings' 폴더를 아래와 같이 생성하고, 그 폴더 안에 차례로 base.py, local.py, production.py를 생성 하겠습니다.

 

우선  가장 밖의 setting.py 파일의 모든 내용을  base.py, local.py, production.py에 넣어줍니다.

 

2. DEBUG = TRUE ?

production.py는 배포 파일에 사용 할 것이기 때문에 디버깅 설정을 꺼 주어야 합니다 

production.py의 DEBUG 옵션이 True로 되어있기 때문에 False로 바꿔주겠습니다.

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'LAKDSJFOIHEQOFIKHNLAJDE**08Vkdfnakldfjeilaef'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = []

 

 

3. settings.py 경로 설정 바꾸기

production.py의 세팅을 바꾸었다면 이제 기존의 settings.py를 가르키고있는 경로를 수정 해 주어야 합니다.

 

원래의 settings.py를 사용하는 것이 아니라, settings파일 안의 base.py , production.py, local.py를 사용 할 것이기 때문에 위치를 수정 해 주어야 합니다.

 

settings.py가 있던 위치보다 한 단계 더 들어간 경로이기 때문에, os.path.dirname()으로 한번 더 감싸주도록 하겠습니다.

아래 수정 한 BASE_DIR를 base.py, production.py, local.py 모두 수정 해 주도록 하겠습니다.

# 바꾸기 전 BASE_DIR
# 기존 BASE_DIR
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# 바꾼 후의 BASE_DIR
# 수정 한 BASE_DIR
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

수정 해 준 후에는 이제 기존의 settings.py는 필요 없으므로 삭제 해 줍니다.

 


4. __init__.py

Django는 이제 Settings 폴더를 하나의 모듈로 인식 할 것입니다. 바로 "__init__.py" 때문인데요, 현재 settings 폴더 안에 들어있는 __init__.py 파일에는 아무것도 적혀있지 않은 상태입니다. 때문에 __init__.py가 어떤 것을 포함하고 있는지 명시되어 있지 않기 때문에 장고 서버를 실행하면 서버 오류가 나게 됩니다.

 

때문에 __init__.py 에 base.py , local.py, production.py를 import 해 줍니다. 아래와 같이 작성하겠습니다.

from .base import *

from .production import *

try:
    from .local import *
except:
    pass

이제 장고는 settings 모듈안에 있는 base, production, local을 모두 인식하게 됩니다.

 

5. runserver

위의 과정을 모두 완료했다면, 서버는 실행될것입니다!

가상환경을 실행 시켜주고, python3 manage.py runserver 명령어로  서버실행을 해서 오류가 없는 것을 확인하면 setting 과정이 끝납니다!

 

 

다음 포스팅에서는 Django 와 Static File를 설정 하도록 하겠습니다!

0 Comments
댓글쓰기 폼