[Django] - Elastic Beanstalk 배포 01 : 프로젝트 준비


이번에 회사에서 급하게 Django 프로젝트를 런칭하게 되면서 AWS에서 지원해주는 Elastic Beanstalk을 사용하게 되었다. 처음에는 많은 삽질을 했지만 사용해보니 쉽게 배포가 가능하고 관리가 가능해서 이곳을 통해 내용을 정리해놓고자 한다.

공부했던 내용이므로 틀린 내용이 있을 수 있습니다.


먼저 Elastic Beanstlak이 무엇인가?

AWS를 통해 프로젝트를 배포하려고 하면 신경써야 할게 한두가지가 아니다. EC2, S3, RDS등을 알아야하며 리눅스 운영체제에 대해서도 알아야한다.

우리가 간단한 프로젝트를 배포한다고 해도 위와 같은 내용을 공부해서 진행해야하는데 이런 번거러움을 덜고자 AWS에서 간단한 웹사이트, 테스팅 등의 목적으로 가벼운 배포를 위해 제공하는 서비스이다.

이미지

이미지

하지만 나는 간단한 배포조차 여러 삽질을 통해 겨우 했다…. 그 과정을 기록하려고한다.


1. Django 프로젝트 준비

1-1. EB CLI 설치

먼저 Elatic Beanstlakterminal환경에서 사용할 수 있게 CLI를 설치하자.

여기서 주의사항은 virtualenv에서가 아니라 global에서 설치해야한다. virtualenv에서 설치해도 정상작동하지만 plugin 설치할때 많은 충돌이 발생한다.

  • 참고로 나는 pipenv를 사용한다.

글로벌 환경에서 설치를 진행하자.

pip3 install awesbcli

정상적으로 설치됬으면 버전확인이 가능하다.

eb --version

1-2. Django 프로젝트

먼저 django 프로젝트 구조는 여러 방식이 있다. 가장 기본적인 구조로도 사용이 가능하지만 나는 다음과 같은 폴더 구조를 선호한다. django-admin startproject config를 실행하면 나오는 폴더 구조이다.

이 구조를 다음과 같이 수정하자

  • config폴더와 manage.py를 밖으로 꺼내자

꼭 이렇게 폴더 구조를 가져가야만 하는것은 아니다. 다만 내가 이렇게 폴더 구조를 설정하고 진행하니 앞으로 Elastic beanstalk 설정에서 참고하기 바란다.

가장 기본적인 Django 프로젝트 생성이 끝났다.

1-3. Elastic Beanstalk 시작

만약 AWS IAM 유저가 없는 경우 생성하자.

이미지

프로그래밍 방식 액세스를 체크하자 CLI로 접근해야한다.

이미지

IAM에 설정할 권한을 골라야한다. 내가 필요한 권한을 선택하자. 여기서는 일단 admin권한을 주도록 하겠다.

이미지

이제 다음으로 넘기면 생성이 완료되며 ACCESS_KEY_IDACCESS_SECRET_KEY가 생성된다. 참고로 ACCESS_SECRET_KEY는 여기서만 보여주고 다시는 보여주지 않으니 꼭 .csv파일로 저장하고 terminal단에서 관리하자.

~/.aws/config에서 ACCESS_KEY_IDACCESS_SECRET_KEY를 설정해줘야한다. eb init을 하면 자동으로 설정이 진행된다.

만약 여러 유저를 ~/.aws/config에서 관리하고 싶으면 아래와 같이 ~/.aws/config를 다음과 같이 설정하자.

[profile user01]
aws_access_key_id = USER01_ACCESS_KEY_ID
aws_secret_access_key = USER_01_AWS_SECRET_ACCESS_KEY
[profile user02]
aws_access_key_id = USER02_ACCESS_KEY_ID
aws_secret_access_key = USER_02_AWS_SECRET_ACCESS_KEY

1-4. eb init

django프로젝트 폴더에서 진행한다.

이미지

지역 선택에서는 10번(Seoul)을 선택해주자

  • 다음으로는 파이썬 사용 YES
  • 파이썬 버전 선택 (프로젝트 3.7버전 , eb는 3.6 버전)
  • codeCommit No (private git repository 서비스)
  • ssh 설정 - No

이제 모든 설정이 끝났고 AWSElastic Beanstalk의 화면으로 가보자

이미지

이제 시작할 준비가 끝이났다.

다음에는 Django 기본 프로젝트를 EB에 배포해보겠다.


elastic beanstalk을 활용한 django 배포

1. 프로젝트 준비

2. 기본 프로젝트 배포

3. DB 설정 (mysql)

4. static / media 설정

5. custom command