본문 바로가기
카테고리 없음

Django 배포 시 반드시 확인해야 할 5가지 핵심 체크리스트 ✅

by Mandy's 2025. 8. 1.

Django 배포를 처음 하신다면 이 글을 꼭 끝까지 읽어보세요!

Django는 강력한 웹 프레임워크이지만 개발용 서버로만 사용하는 경우가 많고, 배포 환경에서는 몇 가지 중요한 설정을 반드시 거쳐야 합니다. 아래는 Django 배포 시 반드시 고려해야 할 다섯 가지 핵심 단계입니다.


1. 데이터베이스 선택 – SQLite 괜찮을까?

처음 Django 프로젝트를 시작하면 기본적으로 SQLite가 설정되어 있습니다. 하지만 배포 환경에서는 SQLite 사용을 권장하지 않습니다.

❗ 왜 SQLite를 피해야 할까?

  • 호스팅 환경에 따라 데이터가 사라질 수 있음
  • 동시 요청 처리에 매우 약함
  • 규모가 커질수록 속도 및 안정성 이슈 발생

✅ 배포용으로 추천하는 데이터베이스

  • PostgreSQL: 가장 안정적이고 Django와 궁합이 좋음
  • MySQL: 일반적인 웹 호스팅에서 널리 사용됨
# 예시 (settings.py)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'yourdbname',
        'USER': 'youruser',
        'PASSWORD': 'yourpassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

2. 설정 조정 – DEBUG는 무조건 False!

개발할 땐 DEBUG=True로 설정하더라도, 배포 시에는 반드시 False로 바꿔야 합니다.

DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com']

그리고 .env 파일을 사용하여 민감한 정보를 분리하는 것이 좋습니다.
예: SECRET_KEY, DATABASE_PASSWORD, AWS_KEY 등


3. 정적 파일 수집 – collectstatic 명령은 필수!

개발 서버에서는 정적 파일이 자동으로 제공되지만, 배포 환경에서는 그렇지 않습니다.

python manage.py collectstatic

이 명령어를 통해 STATIC_ROOT에 모든 정적 파일을 모아서 웹서버 또는 클라우드 스토리지(S3 등)에서 제공할 수 있도록 해야 합니다.


4. 정적 및 업로드 파일 처리 – 자동 제공 안됨!

Django는 운영 환경에서 정적 파일(CSS, JS, 이미지)과 업로드 파일을 자동으로 서빙하지 않습니다.
즉, 다음 중 하나의 방법을 선택해야 합니다.

선택지 ① Django가 직접 서빙

  • urls.py에 static, media 경로 설정
  • 소규모 프로젝트라면 괜찮지만, 성능이 좋지 않음

선택지 ② 웹서버가 함께 서빙

  • Nginx를 설정해서 Django 앱과 정적 파일을 동시에 서빙
  • 대부분의 배포에서 사용하는 방식

선택지 ③ 클라우드 스토리지 사용

  • AWS S3, Google Cloud Storage 등
  • 초기 설정은 복잡하지만 성능과 안정성은 가장 좋음

5. 웹 서버 선택 및 실제 배포

Django는 자체적으로 요청을 받는 웹서버가 아닙니다.
python manage.py runserver는 개발용일 뿐이며, 실제 배포에서는 다음과 같은 웹 서버가 필요합니다.

대표적인 웹 서버 조합

  • Gunicorn + Nginx (Linux 서버 기준)
  • uWSGI + Nginx
  • Elastic Beanstalk, Heroku, Render 같은 PaaS 사용

참고 링크


✅ 마무리 정리

항목 배포 시 해야 할 일

데이터베이스 SQLite ❌, PostgreSQL/MySQL ✅
설정 조정 DEBUG=False, .env 설정
정적 파일 처리 collectstatic 필수
정적/업로드 파일 서빙 웹서버 or 클라우드 스토리지 설정
웹서버 구성 및 배포 Gunicorn + Nginx 등으로 실제 서비스화

👉 이 글이 도움이 되셨다면 댓글이나 공감 부탁드립니다!
궁금한 점이 있다면 댓글로 남겨주세요.