Django 환경 설정 (settings)
목표 프로젝트의 '설정(settings)'이 무엇이고, 왜 공통·환경별로 나뉘며, prod·dev 에 따라 어떻게 다른 설정이 켜지는지 이해한다.
앞 강의에서 프로젝트 폴더에 '전체 설정'을 담당하는 곳이 있다고 했습니다. 그 설정(settings) 이 무엇인지 이번에 봅니다.
1. 설정이란?
설정(settings) 은 프로젝트가 어떻게 동작할지 정해 두는 값의 모음입니다. 예를 들면 이런 것들입니다.
- 어떤 데이터베이스에 연결할지
- 어떤 주소(도메인)로 들어오는 요청을 받을지
- 비밀키 같은 값을 어디서 읽을지
- 에러가 났을 때 화면에 자세히 보여 줄지 말지
코드를 바꾸지 않아도, 이 설정만 바꾸면 프로젝트의 동작이 달라집니다.
2. 공통 설정 + 환경별 설정
설정은 두 가지로 나뉩니다.
- 공통 설정: prod·dev 어디서나 똑같은 값 (대부분이 여기 해당).
- 환경별 설정: 환경마다 달라져야 하는 값만 따로. prod 용 한 벌, dev 용 한 벌.
대부분은 공통이고, 정말 달라져야 하는 것만 환경별로 나눠 둡니다. 그래야 같은 설정을 두 번 쓰지 않고, 바뀌는 부분만 관리할 수 있습니다.
3. 환경마다 다른 값
환경별 설정에 담기는 대표적인 값들입니다.
| 설정 | prod | dev |
|---|---|---|
| 데이터베이스 | prod 용 DB | dev 용 DB |
| 받는 주소(도메인) | prod 도메인 | dev 도메인 |
| 비밀키(API 키) | prod 용 | dev 용 |
| 에러 자세히 표시 | 끔(고객에게 노출 금지) | 켬(dev 편의) |
비밀키 같은 값 자체는 설정 코드가 아니라 앞 비밀키와 환경변수 강의에서 배운 .env 에 두고, 설정은 그 값을 읽어 씁니다. 환경별 .env 는 아래처럼 나뉩니다. 항목은 같지만 값이 다릅니다(둘 다 git 에는 안 올림).
# prod 의 .env (운영 서버)
DATABASE_URL=운영 DB 주소
ALLOWED_HOSTS=education.popupstudio.ai
SECRET_KEY=prod 용 비밀키
DEBUG=False # 에러 감춤 (고객 노출 금지)
# dev 의 .env (개발용)
DATABASE_URL=개발 DB 주소
ALLOWED_HOSTS=education-dev.popupstudio.ai
SECRET_KEY=dev 용 비밀키
DEBUG=True # 에러 자세히 (개발 편의)
4. 환경별 자동 선택
prod 로 배포하면 공통 설정과 prod 설정이, dev 에서 실행하면 공통 설정과 dev 설정이 자동으로 켜집니다. 이때 코드는 prod·dev 양쪽에 똑같은 한 벌이 올라가고, 달라지는 것은 코드가 아니라 설정입니다. 앞 개발환경과 운영환경 강의에서 본 '코드는 한 벌, 환경마다 달라짐'이 바로 이 설정 구조 덕분입니다.
마무리
- 핵심 정리: 설정은 공통 설정과 환경별 설정(prod/dev)으로 나뉘고, 실행하는 환경에 맞는 설정이 자동으로 켜집니다. 코드는 한 벌이며, 데이터베이스·주소·비밀키 같은 값만 환경마다 달라집니다.
- 주의 사항: 설정을 바꿔도 반영되지 않으면, 다른 환경(prod/dev)의 설정을 고친 경우가 많습니다.
- 다음 시간: Django 가 기능을 나누는 단위인 App(앱) 의 구조를 살펴봅니다.