# Django 6.0.7 문서

# 정적 파일을 배포하는 방법

더 보기

:mod:’django.contrib.static files’의 사용에 대한 자세한 내용은 :doc:’/how to/static files/index’를 참조하십시오.

## 프로덕션에서 정적파일 제공하기

정적 파일을 프로덕션에 배포하는 기본 과정은 두 가지 단계로 구성됩니다. 정적 파일이 변경되면 `collectstatic` 명령을 실행한 다음, 수집된 정적 파일 디렉토리(`STATIC_ROOT`)가 정적 파일 서버로 이동되어 제공되도록 구성합니다. `staticfiles` `STORAGES` 별칭에 따라 파일을 수동으로 새 위치에 이동시켜야 할 수도 있고 `Storage` 클래스의 `post_process` 메서드가 이를 처리할 수도 있습니다.

모든 배포 작업과 마찬가지로 세부 사항도 중요합니다. 모든 프로덕션 설정은 약간 다르므로 필요에 맞게 기본 개요를 조정해야 합니다. 다음은 도움이 될 수 있는 몇 가지 일반적인 패턴입니다.

### 같은 서버에서 정적파일과 사이트를 제공하기

사이트에 이미 서비스를 제공하고 있는 서버와 동일한 서버에서 정적 파일을 제공하려는 경우 프로세스는 다음과 같을 수 있습니다.

- 개발서버로 코드 올리기

- 서버에서 :djadmin:’collectstatic’을 실행하여 모든 정적 파일을 :seting:’에 복사합니다.STATIC_ROOT’입니다.

- :seting:’에서 파일을 서비스하도록 웹 서버를 구성합니다.URL의 STATIC_ROOT’ 아래에 있습니다. 설정:’:’STATIC_URL’입니다. 예를 들어 다음과 같습니다.Apache 및 mod_wsgi로 이 작업을 수행하는 방법입니다.

특히 웹 서버가 여러 개인 경우 이 프로세스를 자동화할 수 있습니다.

### 특정 서버에서 정적파일 제공하기

대부분의 대형 Django 사이트에서는 정적 파일을 처리하기 위해 별도의 웹 서버(예: Django를 실행하지 않는 서버)를 사용합니다. 이 서버는 종종 다른 유형의 웹 서버를 실행하며 속도는 빠르지만 기능은 부족합니다. 일반적인 선택은 다음과 같습니다:

- Nginx

- Apache_의 stripped-down 버전

이 서버 구성은 이 문서의 범위를 벗어납니다. 각 서버의 해당 문서에서 지침을 확인하십시오.

정적 파일 서버가 Django를 실행하지 않으므로 다음과 같이 배포 전략을 수정해야 합니다.

- 정적 파일이 수정되었다면, 로컬에서 `collectstatic` 를 실행하세요.

- 로컬:설정:’를 누릅니다.STATIC_ROOT’을(를) 정적 파일 서버에 올려서 서비스 중인 디렉토리에 넣습니다. ‘rsync https://rsync.samba.org/’_은(는) 변경된 정적 파일의 비트만 전송하면 되기 때문에 이 단계에서 흔히 선택할 수 있습니다.

### 클라우드 서비스나 CDN으로 정적 파일 제공하기

또 다른 일반적인 방법은 Amazon의 S3 및/또는 CDN(컨텐츠 제공 네트워크)과 같은 클라우드 스토리지 공급업체의 정적 파일을 제공하는 것입니다. 이렇게 하면 정적 파일 서비스 문제를 무시할 수 있으며 웹 페이지를 더 빨리 로드할 수 있습니다(특히 CDN 사용 시).

이러한 서비스를 사용할 때 기본 워크플로우는 위와 약간 비슷하지만 서버에 정적 파일을 전송하기 위해 “rsync”를 사용하는 대신 정적 파일을 스토리지 공급자 또는 CDN으로 전송해야 한다는 점을 제외하면 그렇습니다.

방법은 여러 가지가 있지만 제공업체에 API가 있는 경우 :doc:`custom file storage backend </howto/custom-file-storage>`를 사용하여 Django 프로젝트와 CDN을 통합할 수 있습니다. 제3자 사용자 정의 스토리지 백엔드를 작성했거나 사용 중이라면 :setting:`STORAGES`에서 ``staticfiles``를 설정하여 :djadmin:`collectstatic`이 이를 사용하도록 지정할 수 있습니다.

예를 들어 “myproject.storage”에 S3 스토리지 백엔드를 작성한 경우입니다.S3Storage는 다음과 같은 용도로 사용할 수 있습니다.

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

작업이 완료되면 `collectstatic`을 실행하기만 하면 됩니다. 그러면 정적 파일이 스토리지 패키지를 통해 S3로 업로드됩니다. 나중에 다른 스토리지 제공업체로 전환해야 하는 경우 :setting:`STORAGES` 설정에서 ``staticfiles``만 변경하면 됩니다.

백엔드를 작성하는 방법에 대한 자세한 내용은:doc:’/how to/custom-file-storage’를 참조하십시오. 많은 공통 파일 스토리지 API에 대한 스토리지 백엔드를 제공하는 타사 앱이 있습니다. 좋은 출발점이 바로 djangopackages.org입니다.

## 추가사항

:mod:’django.contrib.static files’에 포함된 모든 설정, 명령, 템플릿 태그 및 기타 항목에 대한 자세한 내용은 :doc:’static files reference’를 참조하십시오.