프로덕션에서 정적파일 제공하기
정적 파일을 프로덕션에 넣는 기본 개요는 정적 파일이 변경될 때 collectstatic 명령을 실행 한 다음 수집 된 정적 파일 디렉터리(STATIC_ROOT)를 정적 파일 서버로 이동하여 제공하도록 정렬하는 두 단계를 구성한다. STATICFILES_STORAGE에 따라 파일을 수동으로 새 위치로 이동하거나, Storage 클래스의 post_process 메서드가 처리할 수 있다. 모든 배치 작업과 마찬가지로 daemon 세부 사항이 있다. 모든 프로덕션 설정은 약간 다르다. 아래에서 소개하는 것은 일반적인 패턴이다.
같은 서버에서 정적파일과 사이트를 제공하기
사이트에 이미 서비스를 제공하고 있는 서버와 동일한 서버에서 정적 파일을 제공하려는 경우 프로세스는 다음과 같을 수 있다.
- 개발서버로 코드 올리기
- 서버에서 ’collectstatic’을 실행하여 모든 정적 파일을 STATIC_ROOT에 복사한다.
- URL STATIC_URL 아래에 있는 STATIC_ROOT의 파일을 처리하도록 웹 서버를 구성한다.
특히 웹 서버가 여러 개인 경우 이 프로세스를 자동화할 수 있습니다.
특정 서버에서 정적파일 제공하기
대부분의 대형 Django 사이트는 별도의 웹 서버를 사용한다. 즉, 정적 파일을 제공하기 위해 Django를 실행하지 않는 웹 서버를 사용한다.(nginx 나 apache 같은)
클라우드 서비스나 CDN으로 정적 파일 제공하기
Amazon의 S3 및/또는 CDN(콘텐츠 전송 네트워크)과 같은 클라우드 스토리지 공급자의 정적 파일을 제공하는 것이다. 이를 통해 정적 파일을 제공하는 문제를 무시하고 웹 페이지를 더 빨리 로드할 수 있다(특히 CDN을 사용할 때).
이러한 서비스를 사용할 때 rsync를 사용하여 정적 파일을 서버로 전송하는 대신 정적 파일을 스토리지 제공자 또는 CDN으로 전송해야 한다는 점을 제외하면 기본 워크플로우는 비슷하다. 여러 가지 방법이 있지만 공급자에게 API가 있는 경우 사용자 지정 파일 스토리지 백엔드를 사용하여 CDN을 장고 프로젝트와 통합할 수 있다. 타사 사용자 지정 스토리지 백엔드를 작성했거나 사용 중인 경우 스토리지 엔진에 STATIC FILES_STORAGE를 설정하여 collectstatic에 사용하도록 지시할 수 있다.
예를 들어, myproject.storage에 S3 스토리지 백엔드를 작성한 경우이다.S3 스토리지는 다음과 같이 사용할 수 있다:
STATICFILES_STORAGE = 'myproject.storage.S3Storage'
이 작업이 완료되면 collectstatic만 실행하면 정적 파일이 스토리지 패키지를 통해 S3까지 푸시된다. 나중에 다른 스토리지 제공자로 전환해야 하는 경우에는 STATIC FILES_STORAGE 설정만 변경하면 다.
'Django' 카테고리의 다른 글
E2E 테스트할 때 외부 API Mock으로 대체하기 (0) | 2023.03.16 |
---|---|
Django Filterset 활용하기 (0) | 2023.03.13 |
[DRF] Serializer relations (0) | 2023.02.26 |
[DRF] create vs perform_create (0) | 2023.02.24 |
[DRF] APIView vs ViewSet (0) | 2023.02.20 |