[Django] collectstatic

이열음·2022년 1월 31일
0

🌟Django collectstatic

🎯static 파일 처리 과정

static파일이 포함된 프로젝트를 서버로 배포하기 위해선 크게 두가지의 과정을 거쳐야 합니다.
1. static 파일의 위치를 설정해주기
2. 위치로 가서 static파일을 한곳에 모으기

위의 과정을 수행하기 위하여 해야 할 일은 다음과 같습니다.
1. 앱 내에 static 폴더를 만들어 위치를 지정하기
2. static 폴더위치를 장고에게 알려주기(settings.py)
3. python manage.py collectstatic 을 실행하여 모아주기(파일을 복사)

+)static 파일을 왜 모아줘야하는걸까요?🤔

우리가 하고있는 Django는 실질적으로 웹서버가 아니라 웹 애플리케이션을 개발하는 프레임워크입니다.
웹 애플리케이션은 웹서버가 받은 요청을 넘겨주면 로직에 맞추어 데이터를 처리한 후
웹서버에게 돌려주어 사용자에게 응답하게 하는 역할을 합니다.

하지만 사실 사용자에게 응답하는 것은 웹서버 자체에서 할 수 있기때문에 굳이 웹 애플리케이션에서 처리할 필요가 없습니다. 오히려 웹 애플리케이션을 거치게 되면 wsgi(웹서버와 웹 애플리케이션 간의 통신을 위한 인터페이스)를 거쳐야하므로 비효율적인 로직이 하나 더 늘어납니다.

따라서 Django에서는 static 파일을 직접 처리하는 기능을 담고있지 않습니다.
대신 프로젝트를 실제로 배포할 때 collectstatic을 통해 프로젝트 내에 흩어져있는 static 파일들(각각의 앱에 딸린 static폴더)를 한군데에 모은 뒤 서버로 복사해줍니다.

이렇게 모으는 과정을 거치면 실제 배포되는 웹서버는 웹 애플리케이션이 복사해준 static 파일들을 저장한 뒤 클라이언트의 요청에 직접 응답할 수 있게 됩니다.

🌟static 설정항목

🎯STATICFILES_DIRS

개발 단계(DEBUG = True) 즉 웹 애플리케이션 내에 위치한 static 파일의 위치를 지정하는 항목입니다. 여러개의 경로도 설정할 수 있습니다.

🎯STATIC_URL

STATIC_ROOT(실제경로)에 위치한 참조하기위한 url입니다.

🎯STATIC_ROOT

서버 배포 단계(DEBUG = False)에서 static 파일을 모으기 위한 절대경로를 의미합니다. 이 경로에 있는 모든 파일을 웹서버가 직접 제공할 수 있게 됩니다. 앱 내에 위치한 static 폴더와 STATICFILES_DIRS에 명시된 경로에 있는 모든 파일을 모읍니다.

0개의 댓글