Django<em>+</em>Nginx<em>+</em>Docker<em>서버</em>구축<em>전체</em>구조_정리.png

취미로 Python 공부를 해보려고 하다가, “나만의 사이트를 만들어 보고 하고 싶은 걸 다 해보자”라는 생각으로 Django 개발을 시작하게 되었습니다.

“이걸 실제 서버에 어떻게 올려야 하지?”

핵심 질문
개발은 했는데, 이걸 실제 서비스로 운영하려면 어떤 구조가 필요할까?

지금 보고 계신 사이트 win-j.com을 운영하면서 단순히 runserver로 끝나는 것이 아니라, 실제 서비스에서는 어떤 구성이 필요한지 정리해보겠습니다.


실제 서비스에서 필요한 구성

  • 운영 서버 (NAS)
  • 웹 서버 (Nginx)
  • 애플리케이션 서버 (Gunicorn)
  • 컨테이너 환경 (Docker)
  • 데이터베이스 (PostgreSQL)
한 줄 요약
서버 + 웹서버 + 앱서버 + DB + Docker = 실제 서비스 구조

구성 요소 역할 설명

1. NAS (서버 자체)

NAS는 서버이고, 그 위에 Docker로 Nginx, Django, DB가 올라가는 구조입니다.

2. Nginx (웹 서버)

  • 트래픽의 입구
  • 정적 파일 처리
  • Django로 요청 전달

3. Gunicorn (WAS)

Django 실행 엔진 역할

4. Django (웹 애플리케이션)

실제 서비스 로직 처리

5. Database

데이터 저장소

6. Docker

서비스 분리 + 배포 안정성

중요 포인트
Docker는 단순한 도구가 아니라 “환경 차이를 없애는 핵심 요소”입니다.

실제 요청 흐름

브라우저 → Nginx → Django(Gunicorn) → DB → 사용자

웹.png

  1. 브라우저 요청
  2. Nginx 수신
  3. Django 전달
  4. DB 조회
  5. 응답 반환
핵심 이해
이 흐름 하나만 이해하면 Django 배포 구조는 거의 끝입니다.

왜 Docker를 사용하는가?

  • 환경 차이 해결 (로컬 vs 서버)
  • 서비스 분리
  • 재배포 쉬움
  • 유지보수 편함
결론
Docker는 “어디서든 동일하게 실행되는 환경”을 만들어준다.

다음 글 예고

  • Docker 설치
  • docker-compose 구조
  • 기본 컨테이너 실행