2. 장고 스테틱 서비스용 설정

Pywiki
Sam (토론 | 기여)님의 2021년 11월 23일 (화) 12:49 판 (→‎setiings.py에 추가)
둘러보기로 가기 검색하러 가기

1 개요

일반적으로 static은 다른 파일들과 따로 관리한다.

static이 따로 떨어지게 된 데엔 웹의 발전형태와 관련이 있다. 웹이 복잡해지며 동적 콘텐츠는 어플리케이션에서 다루고, 정적 콘텐츠는 서버에서 다루게 되었다.

서버에서 static 컨텐츠와 dynamic 컨텐츠를 받는 부분이 달라, static 컨텐츠에 대한 설정을 해주어야 한다.

gunicorn과 django는 dynamic 컨텐츠를 서비스하기 위한 물건이고, static 컨텐츠는 서버에서 다루어준다.

1.1 setiings.py에 추가

변수 기능
STATIC_URL 앞서 설명
STATICFILES_DIRS 앞서 설명
STATIC_ROOT 앱별로 흩어진 static파일을 모으기 위한 경로.(웹서버에서 사용하기 위해서.) STATICFILES_DIRS과 겹치면 안된다.

검색되는 스태틱 파일들을 모두 한 곳에 모은다. 그 모으는 곳의 위치를 지정하는 옵션이다.

python manage.py collectstatic 명령을 쓰면 여기에 모인다.(보통 서버에서 실행한다.)

개발자가 지정하지 않은, 장고에서 지원하는 static파일도 이곳에 모인다.

(깃에서도 이 디렉터리 빼주는 게 맞지 않을까?)

보통 STATIC_ROOT = BASE_DIR / 'staticfiles'로 둔다.

1.2 collectstatic

프로젝트에서 사용하는 모든 정적 파일들을 모아 하나의 경로에 모아준다.(서버에서 참고할 곳을 지정하여 사용할 수 있게끔)

일반적으로 서버에선 static이라는 키워드로 하나의 디렉터리를 지정하는데, 이들을 한데 모아두어야 서버에서 참조해 활용할 수 있다.

python manage.py collectstatic

그런데, 개발 settings에서는 STATICFILES_DIRS를 사용해야 하고, 운영 settings에서는 STATIC_ROOT를 사용해야 한다. 이처럼 세팅을 분리한 경우엔

python manage.py collectstatic --settings=config.service_settings 형태로 개발용 세팅으로 실행해준다.

CommandError: Collecting static files cancelled. 에러가 나면 python manage.py collectstatic --noinput