728x90

5. Settings와 requirements 파일

장고 세팅 모듈에서는 수많은 항목의 설정을 제공하고 있다. 이것이 장고의 장점이자 어려움이 될 수 있다.

책에서 추천하는 장고 최적의 설정 방법은 아래와 같다.

- 버전 컨트롤 시스템으로 모든 설정 파일을 관리해야 한다.

- 반복되는 설정들을 없애야 한다.

- 암호나 비밀 키 등은 안전하게 보관해야 한다.

 

5-1.버전 관리되지 않는 로컬 세팅은 피하도록 한다.

- django의 시크릿키와 같은 것들은 공개 되서는 안되기 때문에 감춰줘야한다.

- 디버깅 툴과 같은 것은 운영 서버에서는 활용 되지 않고 개발 환경에서만 활용 되기 때문에 제외해야 한다.

- 즉, settings모듈을 분리해냄으로써 해결 가능한 부분이다.

 

5-2. 여러 개의 settings 파일 이용하기

- 한개의 settigns파일만 사용하는 것이 아닌 용도에 맞게 settings 파일을 분리해낸다.

settings/
    __init__.py
    base.py # 프로젝트의 모든 인스턴스에 적용되는 공통 세팅 파일
    local.py # 로컬환경에서 작업할때 사용(디버그, 로그 레벨, etc...)
    staging.py # 실운영 환경에 넘어가기전 반 운영 환경용 세팅 파일
    test.py # 테스트 러너, 로그 세팅을 위한 파일
    production.py # 실 운영 서버를 위한 세팅 파일

- 각 settings 파일 실행 명령어는 아래와 같다.(config는 프로젝트 명이다)

python manage.py runserver --settings=config.settings.local

- 각 세팅파일의 들어가는 코드의 차이는 개인적인 것이지만 공통적으로 DEBUG는 분리해줘야한다. 개발=True, 배포=False는 기본적으로 지켜줘야하는 분명한 사실이다.

- 그외의 실질적인 분리방식은 아래 링크를 참고 해도 될듯싶다!(깨알 깃허브 홍보ㅎ)

 

GitHub - DreamIn-Developer/server: Dreamin server repo

Dreamin server repo. Contribute to DreamIn-Developer/server development by creating an account on GitHub.

github.com

 

5-3. 코드에서 설정 분리하기

- secret key, aws key, api key와 같은 다른 사람들이 알아선 안되는 키값같은 경우, 분리해서 감춰야만 한다.

- 이를 해결하는 방식은 json, .env파일과 같은 형식으로 관리할 수있다.

- 하지만, 환경변수도 한가지 방식이고 확장에 용이하므로 알아보면 좋다.

- 이부분은 너무나 방식이 다양하여 책을 구입하여 참고하거나 구글에서 검색해보길 권장한다.

 

5-4. 여러개의 requirements파일 이용하기

- 환경이 여러개로 분리되면 각각에 해당하는 requirements를 생성해야한다.

- respository_root 아래에 아래와 같은 구조로 관리할 수 있다.

requirements/
    base.txt
    local.txt
    staging.txt
    production.txt

- 각 settings 파일과 동일한 이름으로 생성해준다.

- 설치는 아래와 같이 한다. -> 그에 맞는 가상환경 생성은 기본이다!!

pip install -r requirements/local.txt

 

728x90

+ Recent posts