[Django] - Elastic Beanstalk 배포 01 : 프로젝트 준비
이번에 회사에서 급하게 Django
프로젝트를 런칭하게 되면서 AWS
에서 지원해주는 Elastic Beanstalk
을 사용하게 되었다. 처음에는 많은 삽질을 했지만 사용해보니 쉽게 배포가 가능하고 관리가 가능해서 이곳을 통해 내용을 정리해놓고자 한다.
공부했던 내용이므로 틀린 내용이 있을 수 있습니다.
먼저 Elastic Beanstlak이 무엇인가?
AWS
를 통해 프로젝트를 배포하려고 하면 신경써야 할게 한두가지가 아니다. EC2
, S3
, RDS
등을 알아야하며 리눅스 운영체제에 대해서도 알아야한다.
우리가 간단한 프로젝트를 배포한다고 해도 위와 같은 내용을 공부해서 진행해야하는데 이런 번거러움을 덜고자 AWS
에서 간단한 웹사이트, 테스팅 등의 목적으로 가벼운 배포를 위해 제공하는 서비스이다.
하지만 나는 간단한 배포조차 여러 삽질을 통해 겨우 했다…. 그 과정을 기록하려고한다.
1. Django 프로젝트 준비
1-1. EB CLI 설치
먼저 Elatic Beanstlak
을 terminal
환경에서 사용할 수 있게 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_ID
와 ACCESS_SECRET_KEY
가 생성된다. 참고로 ACCESS_SECRET_KEY
는 여기서만 보여주고 다시는 보여주지 않으니 꼭 .csv
파일로 저장하고 terminal
단에서 관리하자.
~/.aws/config
에서ACCESS_KEY_ID
와ACCESS_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
이제 모든 설정이 끝났고 AWS
의 Elastic Beanstalk
의 화면으로 가보자
이제 시작할 준비가 끝이났다.
다음에는 Django
기본 프로젝트를 EB에 배포해보겠다.