일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- 프로그래밍
- 보안
- 버전관리
- 데이터분석
- 데이터구조
- 2
- 소프트웨어공학
- 사이버보안
- 자바스크립트
- 컴퓨터비전
- 클라우드컴퓨팅
- 인공지능
- 코딩
- 자료구조
- 네트워크
- Yes
- 네트워크보안
- 딥러닝
- 웹개발
- 소프트웨어
- 데이터과학
- 컴퓨터공학
- I'm Sorry
- 프로그래밍언어
- 알고리즘
- 빅데이터
- 데이터베이스
- 컴퓨터과학
- 머신러닝
- Today
- Total
스택큐힙리스트
장고에서 로컬 대 프로덕션 설정을 관리하는 방법은 무엇인가요? 본문
로컬 개발과 프로덕션 서버의 설정을 다루는 권장 방법은 무엇인가요? 일부 (상수 등)는 둘 다에서 변경/액세스 할 수 있지만 정적 파일의 경로와 같은 일부 사항은 다르게 유지되어야 하므로 새 코드를 배포할 때마다 덮어 씌여지지 않아야 합니다.
현재 내가 settings.py 에서 모든 상수를 추가하고 있습니다. 하지만 로컬에서 일부 상수를 변경할 때마다, 제작 서버로 복사하고 제작에 특화된 변경사항을 위해 파일을 수정해야합니다... :(
편집: 이 질문에는 표준 답변이 없는 것 같습니다. 가장 인기 있는 방법을 받아들였습니다.
답변 1
Two Scoops of Django: Best Practices for Django 1.5은 설정 파일에 대한 버전 관리를 사용하고 파일을 별도의 디렉토리에 저장하는 것이 좋다고 제안합니다.
project/
app1/
app2/
project/
__init__.py
settings/
__init__.py
base.py
local.py
production.py
manage.py
base.py 파일에는 공통 설정 (예: MEDIA_ROOT 또는 ADMIN)이 포함되어 있으며, local.py 및 production.py에는 사이트별 설정이 포함됩니다.
기본 파일 settings/base.py:
INSTALLED_APPS = (
# common apps...
)
지역 개발 설정 파일 settings/local.py에서:
from project.settings.base import *
DEBUG = True
INSTALLED_APPS += (
'debug_toolbar', # and other apps for local development
)
파일 제작 설정 파일 settings/production.py 에서:
from project.settings.base import *
DEBUG = False
INSTALLED_APPS += (
# other apps for production site
)
그러면 django를 실행할 때, --settings 옵션을 추가합니다.
# Running django for local development
$ ./manage.py runserver 0:8000 --settings=project.settings.local
# Running django shell on the production site
$ ./manage.py shell --settings=project.settings.production
이 책의 저자들은 Github에도 a sample project layout template을 올렸습니다.
답변 2
장고는 높은 생산성과 유연성으로 알려져 있습니다. 하지만 로컬 환경과 운영 환경에서 동일한 설정을 사용할 때 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 Django는 로컬 및 운영 환경에서 다른 설정을 사용하는 것이 좋습니다.먼저 로컬 환경에서는 개발 중인 애플리케이션을 디버깅해야하므로 DEBUG 및 SECRET_KEY와 같은 중요한 설정이 포함된 디버그 모드를 사용해야 합니다. 또한 로컬 개발 환경에서는 보안 문제가 발생하지 않습니다. 따라서 ALLOWED_HOSTS 값을 로컬 개발 도메인으로 설정하여 CSRF 공격을 방지할 수 있습니다.
반면에 운영 환경에서는 보안이 매우 중요합니다. 따라서 DEBUG 모드를 비활성화하고 SECRET_KEY 값을 숨기는 것이 좋습니다. 또한 ALLOWED_HOSTS 값을 운영 도메인으로 설정하여 보안 문제를 방지할 수 있습니다.
장고에서는 settings.py 파일에서 이러한 설정을 관리할 수 있습니다. 운영 및 로컬 환경별로 다른 설정을 설정 파일에 정의할 수 있으며, 장고의 환경 변수를 사용하여 환경별로 설정을 로드할 수 있습니다.
마지막으로, 장고에서는 환경 변수를 사용하도록 권장합니다. 이를테면 DATABASE_URL, REDIS_URL 등이 있습니다. 이렇게하면 장고 애플리케이션의 여러 설정을 번거롭게 변경할 필요 없이 환경별로 간단하게 대처할 수 있습니다.
이와 같은 방식으로 로컬 및 운영 환경에서 다른 설정을 관리하면 애플리케이션을 보다 안전하게 운영할 수 있습니다. 장고에서는 환경 변수를 사용하고 ALLOWED_HOSTS 및 SECRET_KEY를 조정하도록 권장합니다. 이렇게 하면 장고로 개발하는 과정에서 생산성을 높일 수 있으면서도 보안 문제를 최소화할 수 있습니다.