Django 정적파일 공식문서 - 프로덕션

hyuckhoon.ko·2023년 10월 17일
0

정적 파일을 어떻게 배포할까

프로덕션 환경에 정적파일 배포하기

정적 파일 배포는 크게 두 단계로 나뉜다.

  • 정적 파일 변경 시, collectstatic 명령어 실행
  • 수집된 정적 파일 디렉토리(STATIC_ROOT)를 정적 파일 서버로 이동시키기

staticfiles STORAGES 별칭에 따라 파일을 수동으로 새 위치로 이동시켜야 하거나 Storage 클래스의 post_process 메서드에서 이를 처리해야 할 수도 있다.

모든 배포에 있어서도 악마는 디테일에 있다.
모든 배포 셋업은 다 다른다. 각 서비스에 맞는 기본 아웃라인을 토대로 적합한 방식을 택해야 한다. 아래는 정적 파일 배포와 관련된 일반적인 패턴들이다.


1. 같은 서버에 웹 사이트와 정적파일을 모두 서빙하는 경우

  • 배포 서버에 코드를 배포한다.

    • 서버에 SSH 접속 후, git pull origin 하거나
    • 배포 스크립트 작성
    • 또는 CI 도입
  • 서버에서 collectstatic 명령어 실행하여 모든 정적 파일을 STATIC_ROOT에 복사하기

  • 웹서버가 STATIC_ROOT의 정적파일을 사용하도록 STATIC_URL 설정하기

2. 전용 서버에 정적 파일 서빙하는 경우

대부분의 큰 규모의 장고 기반 웹은 Nginx와 같은 장고 외의 웹 서버를 도입하여 사용한다.

Nginx는 아파치의 축소된 버전이다.
정적 파일이 변경됐을 때, collectstatic 명령어를 실행시킨다.

로컬 STATIC_ROOT를 정적 파일 서버에 밀어 올린다. rsync는 변경된 정적 파일의 비트만 전송하면 되므로 이 단계에서 일반적으로 선택하는 패키지다.

3. CDN으로 정적파일 서빙하기

STORAGES = {
    # ...
    "staticfiles": {
        "BACKEND": "myproject.storage.S3Storage"
    }
}

배포될 때마다 collectstatic 명령어를 실행한다. 그러면 정적 파일이 위에서 정의한 S3로 배포가 된다.

0개의 댓글