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 등으로 실제 서비스화 |
👉 이 글이 도움이 되셨다면 댓글이나 공감 부탁드립니다!
궁금한 점이 있다면 댓글로 남겨주세요.