스택큐힙리스트

장고에서 로컬 대 프로덕션 설정을 관리하는 방법은 무엇인가요? 본문

카테고리 없음

장고에서 로컬 대 프로덕션 설정을 관리하는 방법은 무엇인가요?

스택큐힙리스트 2023. 4. 25. 16:02
반응형

로컬 개발과 프로덕션 서버의 설정을 다루는 권장 방법은 무엇인가요? 일부 (상수 등)는 둘 다에서 변경/액세스 할 수 있지만 정적 파일의 경로와 같은 일부 사항은 다르게 유지되어야 하므로 새 코드를 배포할 때마다 덮어 씌여지지 않아야 합니다.

현재 내가 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를 조정하도록 권장합니다. 이렇게 하면 장고로 개발하는 과정에서 생산성을 높일 수 있으면서도 보안 문제를 최소화할 수 있습니다.

반응형
Comments