본문 바로가기
Programming/Django

🔍 Django의 wsgi.py와 django.conf – 배포 입문자를 위한 핵심 정리!

by Mandy's 2025. 7. 30.

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 앱의 모든 환경 설정이 모여있는 파일
 

📌 참고 링크