Django에서 DEBUG = False로 할 때 정적 파일 (CSS, JS, img)이로드되지 않는 문제를 해결합니다.

Heroku나 GAE(Google App Engine)등의 서버로 디버그 모드를 False로 하면, 지금까지 개발용으로 Django가 제공하고 있던 static 파일이 제공되지 않게 되어 CSS나 JS, img등을 표시할 수 없게 되어 버리는 일이 있습니다.

따라서 Google Cloud Storage에 정적 파일을 업로드하여이 문제를 해결할 수 있으므로 그 방법을 설명하고 싶습니다.

Django Strage (Google Cloud Storage) 공식 문서
htps : //d 짱고-s 토레 s. Red d. cs. 이오 / 엔 / ㅁ st / 바 c 켄 ds / gc ぉ d. HTML

Django Strage 설치



Django에서 Google Cloud Strage를 처리하는 Django 라이브러리 Django Strage (Google Cloud Storage)를 pip로 설치합니다.

bash
$ pip install django-storages[google]

Google Cloud Platform에서 자격 증명 얻기



Google Cloud Platform에서 Cloud Strage 자격 증명을 등록하고 자격 증명이 포함된 JSON 파일을 가져옵니다.

서비스 계정 얻기



Google 시작 가이드( htps : // c ぉ d. 오, ぇ. 코 m / 드 cs / 어울리는 치카 치온 / 갓찐 g-s r d )에서 구할 수 있습니다.

1단계
Google 시작 가이드( htps : // c ぉ d. 오, ぇ. 코 m / 드 cs / 어울리는 치카 치온 / 갓찐 g-s r d ) 링크에서 '서비스 계정 키 만들기 페이지로 이동'을 선택합니다.


2단계
새 서비스 계정을 만들고 서비스 계정 이름을 입력합니다.

그런 다음 역할에서 스토리지 -> 스토리지 관리자를 선택합니다.
키 유형이 JSON인지 확인하고 '만들기' 버튼을 누릅니다.

그러면 JSON 파일이 다운로드됩니다.


다운로드한 JSON 파일은 Django 프로젝트의 루트 디렉토리에 저장합니다.

Google Cloud Storage 버킷 만들기



Cloud Strage 단위를 버킷이라고 합니다(데이터를 포함하는 버킷 같은 의미).
이것을 만들고 데이터를 저장합니다.

Google Cloud Console (Cloud Strage)
htps : // 이런. cぉd. 오, ぇ. 코 m / s 토라 게 / b 로 wse r

위의 URL에서 액세스하면 다음과 같은 작성 화면으로 전환한다고 생각하므로 새 버킷을 작성합니다.


완료되면 아래와 같은 화면이 됩니다.


이것으로 Google Cloud Platform console에서 설정이 완료됩니다.

장고에서 설정



settings.py에 설정 추가



settings.py 파일에서 기본 스토리지 및 버킷 이름을 설정합니다.

settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
GS_BUCKET_NAME = '[YOUR_BUCKET_NAME_GOES_HERE]'

from google.oauth2 import service_account

GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
    os.path.join(BASE_DIR, '[YOUR_AUTHENTICATON_KEY_FILE_NAME].json'),
)

이것으로 설정이 완료됩니다.

그리고 다음 명령을 실행합시다.

bash
$ python manage.py collectstatic

그리고 설정 변경을 서버에 배포하면 제대로 작동해야합니다.

수고하셨습니다.

좋은 웹페이지 즐겨찾기