[Django] - Elastic Beanstalk 배포 04 : static media 설정


이전시간에 이어서 static file/media file을 설정을 해보자


STATIC/MEDIA 설정

DjangoElastick Beanstalk에서 배포할 때 staticmedias3를 사용하여 배포하는 법을 알아보자.


1. CollectStatic

이제 배포된 admin 사이트로 접속해보자 그럼 아래와 같이 css파일이 적용되지 않은 화면을 보게 될거다…

이미지

django에서 지원해주는 runserverstatic파일들을 알아서 찾아서 해주지만 실제 배포에서는 static 파일을 모아줘야한다. collectstatic 명령어를 실행하자

먼저 settings.py 를 수정하자

이미지

이렇게 설정하고 collectstatic을 실행하자

python manage.py collectstatic 

static 에 있는 파일들과 admin용 파일들을 staticfiles(static_root)에 정리해준다. 이미지

그런데 문제가 있다!

media파일도 이렇게 해서 설정이 끝났지만 elastic beanstalk에서 django instance를 매번 deploy할 때마다 서버를 초기화 시키며 진행하기 때문에 media파일은 매번 날라가게 된다… (static파일은 매번 재 전송) 그렇기 때문에 우리는 S3를 사용하기 위한 작업을 해야한다.

S3static , media를 올려주자


2. django_storages

먼저 django-storagesboto3을 설치해주자

그리고 settings.py에 다음과 같이 설정한다.

이미지

  • DEFAULT_FILE_STORAGE : media파일 경로이다. (cusotm_storages.py에서 설정한다.)
  • STATICFILES_STORAGE : static파일 경로이다. (custom_storages.py에서 설정한다.)
  • AWS_ACCESS_KEY_ID : IAMACCESS_KEY_ID이다.
  • AWS_SECRET_ACCESS_KEY : IAMACCESS_SECRET_KEY이다.
  • AWS_STORAGE_BUCKET_NAME : S3에 연결할 BUCKET의 이름이다.
  • AWS_AWS_DEFAULT_ACL : S3ACL보안 설정이다. public-read로 설정하면 모두 읽을 수 있다.
  • AWS_AUTO_CREATE_BUCKET : BUCKET이 없으면 자동으로 생성한다.
  • AWS_S3_REGION_NAME : S3의 지역을 설정한다. ap-northeast-2가 서울이다.

config폴더 안에 custom_storages.py를 생성하고 다음과 같이 작성한다.

이미지

  • location은 폴더 경로이다.
  • file_overwrite는 같은 이름파일 덮어씌울지 여부이다. static파일은 수정사항만 반영하기에 false로 해주자.

3. django.config

그리고 .ebextensionsdjango.config를 수정하자. collectstatic command를 추가해준다.

이미지

그리고 Elastic Beanstalk 의 환경변수에 IAM에서 생성했던 ACCESS_KEY_IDSECRET_KEY 를 입력해준다.

이미지

그리고 deploy하면 정상적으로 파일이 로드되는 것을 볼 수 있다.

이미지


다음은 마지막으로 custom commandcreate superuser를 추가해보자


elastic beanstalk을 활용한 django 배포

1. 프로젝트 준비

2. 기본 프로젝트 배포

3. DB 설정 (mysql)

4. static / media 설정

5. custom command