[배포해보기 (9)] Static 의 이해
웹 프로그래밍

[배포해보기 (9)] Static 의 이해

728x90
반응형

nginx를 앞단에 두고 뒤에 있는 django를 구동시키는 것까지 했지만 정적인 파일들을 로딩하지 못하고있다. 

 

왜 gunicorn / django 가 static files를 받지 못하는가? static이란 무엇인가?

초기에 서버들은 단순한 html 파일들, 정적인 파일들만 제공하는 역할을 했다. 클라이언트가 index.html을 요청하면 서버가 해당 html을 제공하는 정도의 역할만을 수행하였다. (모두 static한 서버였다.)

하지만 static만으로 처리하는 것은 한계가 존재한다. 이에 동적(dynamic)으로 컨텐츠를 생산해낼 수 있는 방향으로 변화한다. 

예전에는 서버가 static과 dynamic content를 모두 처리했다. 하지만 시간이 지나며 dynamic content가 복잡해지다보니 이를 분리하게 된다. 

이렇게 되면 요청하는 과정이

client가 서버에 static을 요청하면 서버에서 바로 응답을 준다. 하지만 동적인 컨텐츠를 요청하면 바로 되돌려주는게 아니라 dynamic content를 만들어낼 수 있는 application에 다시 요청을 보내서 그 받은 dynamic content의 response를 받아 client에 되돌려준다. 즉 static과 dynamic을 만드는 부분이 serve in 하는 부분이 다르다는 것이다.

 

 

현재는 static content는 nginx가 dynamic content는 django가 처리하고 있는 것.

 

왜 gunicorn / django 가 static files를 받지 못하는가? : gunicorn/django serves dynamic content!

이제 문제를 해결하기 위해 아래와 같은 과정이 필요하다.

 

1) collect static content from django container

2) synchronize static contents with nginx container

즉, django container에 있을 JS, CSS등 static file들을 수집해서 이를 nginx container와 동기화한다.

 

 

728x90
반응형