SK Networks Family AI bootcamp 강의노트

73일차 [ 🚀 Django 개발 일지: WAS 개념부터 프로젝트 구조까지 한눈에 정리 ]

HyunJung_Jo 2025. 5. 8. 09:19

 

🔍 오늘의 학습 키워드

  • WAS(Web Application Server) 개념 이해
  • Nginx + Django 연동 구조 분석
  • Django 프로젝트 생성 실습
  • 프로젝트 폴더 구조 커스터마이징
  • startproject 명령어 오류 해결

1. WAS란 무엇인가?

**WAS(Web Application Server)**는 웹 요청을 받아서 비즈니스 로직을 처리하고 결과를 반환하는 서버야.
Nginx 같은 웹 서버는 정적 파일을 처리하고, WAS는 동적인 요청을 처리한다.

✅ 역할 요약

  • 클라이언트 요청 수신 → 로직 처리 → DB 조회 → 응답 반환
  • Django, Spring, Node.js 등이 WAS 역할을 함

2. Nginx + Django 연동 예시 분석

server {
    listen 80;
    server_name 0.0.0.0;

    root /app/static;

    location /static/ {
        alias /app/static/;
    }

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://0.0.0.0:8000;
    }

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
}

📌 구조 설명

  • /static/ → 직접 정적 파일 서빙
  • 그 외 요청은 localhost:8000에 실행 중인 Django로 프록시
  • Django는 WAS 역할 수행

3. Django 프로젝트 생성 실습

✅ 가상환경 구성

python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install django

✅ 프로젝트 생성 (현재 폴더에 바로 생성)

django-admin startproject myproject .

📌 주의: startproject django-server . 처럼 하이픈(-)이 포함된 이름은 Python 식별자가 아니므로 오류 발생

CommandError: 'django-server' is not a valid project name.

4. 실무에서 많이 쓰는 프로젝트 구조

오늘 만든 폴더 구조는 실무에서 많이 사용하는 모듈화된 구성이야:

django-server_tmp/
├── .venv/         # 가상환경
├── cicid/         # CI/CD 관련 파일
├── config/        # Django 설정 파일들
├── sample/        # Django 앱
├── static/        # 정적 파일
├── templates/     # HTML 템플릿

✅ settings.py에서 적용한 설정 예시

BASE_DIR = Path(__file__).resolve().parent.parent

TEMPLATES = [
    {
        'DIRS': [BASE_DIR / 'templates'],
        ...
    },
]

STATICFILES_DIRS = [BASE_DIR / 'static']
STATIC_URL = '/static/'

 


✍️ 마무리하며

오늘은 Django의 구조적 기초와 WAS의 개념, 그리고 웹 서버(Nginx)와의 연동 구조를 실습하며 감을 잡을 수 있었던 하루였다.
앞으로는 앱 기능 개발, DB 연동, 그리고 배포 자동화까지 확장해갈 예정!