static파일이 포함된 프로젝트를 서버로 배포하기 위해선 크게 두가지의 과정을 거쳐야 합니다.
1. static 파일의 위치를 설정해주기
2. 위치로 가서 static파일을 한곳에 모으기
위의 과정을 수행하기 위하여 해야 할 일은 다음과 같습니다.
1. 앱 내에 static 폴더를 만들어 위치를 지정하기
2. static 폴더위치를 장고에게 알려주기(settings.py)
3. python manage.py collectstatic 을 실행하여 모아주기(파일을 복사)
우리가 하고있는 Django는 실질적으로 웹서버가 아니라 웹 애플리케이션을 개발하는 프레임워크입니다.
웹 애플리케이션은 웹서버가 받은 요청을 넘겨주면 로직에 맞추어 데이터를 처리한 후
웹서버에게 돌려주어 사용자에게 응답하게 하는 역할을 합니다.
하지만 사실 사용자에게 응답하는 것은 웹서버 자체에서 할 수 있기때문에 굳이 웹 애플리케이션에서 처리할 필요가 없습니다. 오히려 웹 애플리케이션을 거치게 되면 wsgi(웹서버와 웹 애플리케이션 간의 통신을 위한 인터페이스)를 거쳐야하므로 비효율적인 로직이 하나 더 늘어납니다.
따라서 Django에서는 static 파일을 직접 처리하는 기능을 담고있지 않습니다.
대신 프로젝트를 실제로 배포할 때 collectstatic을 통해 프로젝트 내에 흩어져있는 static 파일들(각각의 앱에 딸린 static폴더)를 한군데에 모은 뒤 서버로 복사해줍니다.
이렇게 모으는 과정을 거치면 실제 배포되는 웹서버는 웹 애플리케이션이 복사해준 static 파일들을 저장한 뒤 클라이언트의 요청에 직접 응답할 수 있게 됩니다.
개발 단계(DEBUG = True) 즉 웹 애플리케이션 내에 위치한 static 파일의 위치를 지정하는 항목입니다. 여러개의 경로도 설정할 수 있습니다.
STATIC_ROOT(실제경로)에 위치한 참조하기위한 url입니다.
서버 배포 단계(DEBUG = False)에서 static 파일을 모으기 위한 절대경로를 의미합니다. 이 경로에 있는 모든 파일을 웹서버가 직접 제공할 수 있게 됩니다. 앱 내에 위치한 static 폴더와 STATICFILES_DIRS에 명시된 경로에 있는 모든 파일을 모읍니다.