AWS Elastic Beanstalk 배포

Joey Lee·2020년 8월 24일
0

개발 전반

목록 보기
10/10

1. Console 통한 배포

Elastic Beanstalk 콘솔에서 Application과 Environment 생성을 한 뒤, 소스코드를 압축파일로 업로드 하면 됨. 단, Console로 하려면 매번 압축해서 소스코드를 올려주는 불편함이 있기 때문에 편하게 depoly하기 위해 EB CLI를 통해 배포를 하는 것이 좋음

[주의사항]

  • Python 3.7버전이더라도 Platform은 "Python 3.6 running on 64bit Amazon Linux"를 선택해야 함.
    => Python 3.7 버전 선택하니 계속 Degraded가 되었음
  • Zip파일로 업로드할 때 프로젝트 폴더 전체를 압축하는 것이 아니라 프로젝트 폴더 내 모든 파일들을 압축해서 올려야 함.
    => 프로젝트 폴더 전체를 압축파일로 올리면 wsgi 경로로 찾지 못 한다는 오류가 뜸

2. EB CLI 통한 배포

terminal에서 EB CLI를 사용하기 위해 관련 패키지를 다운로드 해야 함.

brew install awsebcli

맥에서는 brew로 설치할 수 있으면 brew로 설치하는 것이 좋음. 환경경로(path)를 지정하지 지셀에서 지정하지 않아도 되기 때문임. pip로 설치를 하게 되면 지셀에서 PATH="경로:$PATH"를 지정해 줘야 됨.

1) eb init

  • 지역 설정
  • AWS 접속 위해 access_key 입력
  • code commit -> n
  • application 및 environment 선택 (없다면, 신규로 생성)

2) eb create (Enviroment명)

  • EB CLI에서 환경 만들어 줄 수 있음

3) eb use (Environment명)

  • 해당 환경을 사용할 수 있음.
  • eb init에서 설정한 환경과 다른 환경으로 옮기고자 할 경우 사용

4) eb deploy (Environment명)

  • 환경명을 입력하지 않으면, 현재 use하는 환경에 코드가 배포됨
  • 코드는 git commit한 부분까지만 배포가 됨. 따라서 추가로 작업을 한 게 있다면 git commit한 뒤에 배포해야 함.
# 접속할 EB 앱과 환경에 접속
> eb init app_name
> eb use environment_name

3. Django setting

로컬 개발환경과 test 개발환경을 분리하기 위해서 setting을 별도의 폴더로 만든 뒤에 base.py, dev.py(로컬환경), testing.py(테스트 개발환경)를 만듬.

  • base.py : 로컬과 테스트 개발환경 공통적으로 적용되는 설정
  • dev.py : 로컬에만 적용되는 설정 (로컬 DB로 연결)
  • testing.py : 테스트 환경에만 적용되는 설정 (AWS RDS로 연결 및 sentry 세팅)

4. .ebextensions setting

1) django.config

  • 배포할 때 무조건 migrate하겠다는 명령어를 추가해 줌.
  • 첫 번 째 instance에서만 migrate를 실행함. 왜냐하면 1번만 해 주면 되기 때문임.

2) alb-default-process.config

5. wsgi.py 세팅

wsgi.py는 아마존 Elastic Beanstalk에 연결될 설정을 명시해 주어야 함으로 아마존 테스트 환경설정이 되어 있는 tradeforce.settings.testing으로 바꿔줌.

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tradeforce.settings.testing')

콘솔 Environment -> Software -> Environment properties에서도 설정을 해 주어야 함.

profile
안녕하세요!

0개의 댓글