[Django] - Elastic Beanstalk 배포 02 : 기본 프로젝트 배포


이전시간에 이어서 Django기본 프로젝트를 Elastic Beanstalk에 배포해보자.


1. Instance 생성

1-1. requirements.txt

먼저 Django프로젝트의 requirements.txt파일을 만들어주자.

pipenv를 사용한다면 pipenv run pip freeze > requirements.txt를 사용하자. pippip freeze > requirements.txt를 사용하자

1-2. .ebextensions

가장 바깥쪽에 .ebextensions 폴더를 생성하자 폴더 안에는 django.config파일을 생성해주자

폴더 구조에 주의하자. 반드시 .ebextensions을 폴더 내에 생성해야한다.

이미지

다음과 같은 폴더구조를 가진다. (.elasticbeanstlak폴더는 무시한다)

  • requirements.txt.ebextensions는 같은 라인에 있어야한다.

1-3. django.config

이미지

django.config내용을 다음과 같이 작성한다.

WSGIPath에는 내가 생성한 프로젝트 구조에 맞춰준다. 일반적인 구조라면 ProjectName/config/wsgi.py이다.

1-4. git

이제 .gitignoredjango내용을 넣어주고

git add . && git commit -m 을 해주자

eb clilocal git에 있는 내용을 .zip파일로 만들어 서버로 전송한다. 그러니 항상 deploy 하기 전에 git add && commit을 해주자.

1-5. eb create

이제 eb create instance-name을 해주자

이미지

이렇게 성공적으로 생성되었다는 메시지를 볼 수 있다.

Error 발생시 Log를 잘 읽어보면 문제를 해결할 수 있다. 보통 requirements.txt가 올바른 경로에 없거나 .ebextensions폴더 경로가 잘못된 경우이다.

AWS에 가보면 이렇게 정상적으로 생성되었다.

이미지


2. 서버 구동

자 이렇게 진행하고 AWS콘솔에서 알려주는 url을 타고 들어가보면 500번 에러가 발생한다.

2-1. Allow Host

먼저 해야할건 django settings.pyALLOWED_HOSTSurl을 추가해주자.

urleb status를 통해 나오는 CNAME에서 확인 가능하다.

djangoWeb Application Server라서 ApacheNginx와 같은 Web Server를 통해서 운영된다. 그렇기에 Web Server가 접근 가능하게 allow해주어야 한다.

2-2. Default DB

그런데 나는 여기서 실행하니 문제가 발생했다. => Log 확인 eb logs에서 확인이 가능하고 aws에서 log를 다운 받을 수도 있다.

읽어보니 settings.py에 설정되있는 기본 sqlite버전과 관련해서 문제가 생기는것 같다. 그래서 일단 settings.py에서 db부분을 주석처리해서 임시로 해결했다. (DB설정은 다음 챕터에서 알아보자)

2-3. eb deploy

수정된 사항을 git에 올리고 eb deploy해주면 변경사항이 반영된다.

이제 eb open으로 사이트를 열어보자.

이미지

정상적으로 페이지가 로드 되었다.


다음 내용

이제 알아볼 내용은

  • DB
  • Static/Media
  • Custom Command

순서대로 알아보자.


elastic beanstalk을 활용한 django 배포

1. 프로젝트 준비

2. 기본 프로젝트 배포

3. DB 설정 (mysql)

4. static / media 설정

5. custom command