Django 프로젝트를 만들다 보면, wsgi.py라는 파일과 django.conf라는 모듈을 자주 보게 됩니다.
이 둘은 우리가 만든 웹 애플리케이션이 인터넷 세상과 연결되는 "입구"와 "설정본부" 같은 역할을 해요!
오늘은 이 두 요소가 어떻게 연결되고, 어떤 역할을 하는지, 그리고 실제 코드가 어떻게 작동하는지 쉽게 설명해드릴게요.
1️⃣ wsgi.py는 무엇인가요?
Django 프로젝트에서 wsgi.py는 배포 시 가장 중요한 파일이에요.
# my_site/wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_site.settings')
application = get_wsgi_application()
✅ 설명
- os.environ.setdefault(...)
→ Django에게 "설정은 여기서 읽어!"라고 알려주는 코드입니다.
→ 여기선 'my_site.settings' 라고 적혀 있네요. - get_wsgi_application()
→ Django가 웹 요청을 처리할 준비를 하는 함수예요. - application
→ 이 변수는 웹서버(Gunicorn, uWSGI 등)가 가장 먼저 찾는 입구입니다.
→ 이걸 통해 사용자의 요청이 Django로 들어와요.
2️⃣ 그럼 django.conf는 뭐지?
🧠 django.conf는 Django 설정을 다루는 컨트롤 센터예요!
이 모듈을 통해 우리는 Django의 설정 값들을 코드에서 쉽게 가져와서 사용할 수 있어요.
예시:
from django.conf import settings
print(settings.DEBUG) # True 또는 False
print(settings.SECRET_KEY) # 시크릿 키 출력
✅ 요약
- wsgi.py는 설정을 어디서 불러올지 지정하는 역할
- django.conf.settings는 그 설정을 실제로 사용할 수 있게 해주는 모듈
🖼️ 전체 구조 다이어그램
아래는 Django 배포 시 wsgi.py, 웹서버, 그리고 settings.py, django.conf가 어떻게 연결되는지를 그림으로 보여주는 다이어그램입니다:
💬 웹서버 → wsgi.py (application) → Django 설정 로드 → 사용자 요청 처리 → 응답 반환
3️⃣ 실제 사용 예시
예를 들어 AWS Elastic Beanstalk에 Django 앱을 배포할 때, 아래와 같이 설정합니다:
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: my_site.wsgi:application
여기서 "my_site.wsgi:application"은 우리가 만든 application 변수를 가리킵니다!
웹서버가 이걸 보고 Django 앱을 실행시켜요.
✅ 마무리 요약
구성 요소설명
| wsgi.py | Django 앱의 입구 역할, 웹서버와 연결 |
| application 변수 | 웹서버가 Django에 요청을 전달할 때 사용하는 대상 |
| os.environ | 어떤 설정을 불러올지 지정하는 환경 변수 설정 |
| django.conf | Django 설정값을 실제 코드에서 불러오는 모듈 |
| settings.py | Django 앱의 모든 환경 설정이 모여있는 파일 |
📌 참고 링크
- [공식 문서] Django WSGI 설명:
https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/ - [공식 문서] django.conf 사용법:
https://docs.djangoproject.com/en/5.2/ref/settings/
'Programming > Django' 카테고리의 다른 글
| 🐍 [Django 5.2 + S3 연동 에러 기록] STATICFILES_STORAGE가 무시되고 계속 로컬 staticfiles 디렉토리에만 저장될 때 (해결 완료!) (2) | 2025.08.01 |
|---|---|
| Django 프로젝트에 AWS S3 연동하기 (정적/미디어 파일 서빙 완전 정복) (3) | 2025.07.31 |
| 💡 getenv란? 환경 변수와 Django 설정의 연결고리 (3) | 2025.07.30 |
| Django 프로젝트에서 데이터베이스는 어떻게 선택해야 할까? 🧠 (0) | 2025.07.30 |
| Django 앱 배포 전 꼭 알아야 할 핵심 고려사항들 💡 (0) | 2025.07.30 |