1. AWS 과금 주의
2. AWS 계정 생성 (회원가입)
3. elastic beanstalk 명령어를 입력하기 위해서 awsebcli 설치
pip install awsebcli --upgrade --user
.gitignore 생성
먼저 깃에 프로젝트를 올린다. 곧 beanstalk관련 된 파일들이 생기는데 이것들을 굳이 저장소에 올릴 필요가 없으니 gitignore파일을 수정 해준다.
### Django ###
*.log
*.pot
*.pyc
__pycache__/
local_settings.py
db.sqlite3
media
# Elastic Beanstalk Files
.elasticbeanstalk/*
!.elasticbeanstalk/*.cfg.yml
!.elasticbeanstalk/*.global.yml
필요한 파일 생성
먼저 manage.py 가 위치한 폴더에 requirements.txt 파일을 만든다.
requirements 파일은 의존성 파일로, 프로젝트가 실행될 때 필요한 설정들을 적는 파일이다.
더불어 manage.py 가 위치한 폴더에 .ebextensions 폴더를 만들어주고, 그 안에 django.config라는 의존성 파일을 만들어준다.
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: <프로젝트이름>/wsgi.py
github에 add - commit - push 를 한다.
AWS에 배포하기
가상환경을 끄고 다음과 같은 명령어를 입력해본다.
$ eb init -p python-3.6 <앱 이름>
eb init이 처음이라면 AWSAccessKeyId와 AWSSecretKey를 입력하라고 나올 수 있다. 그럴 때는 aws사이트에 접속해 우측 상단 콘솔에 로그인 버튼을 클릭하고, 상단의 계정이름을 선택하면 드롭다운 메뉴에 내 보안 자격 증명 메뉴를 선택한다. 팝업이 뜨면 확인 해주고 엑세스 키 탭을 선택한다. 그리고 새 엑세스 만들기를 클릭하면 자신의 아이디와 시크릿키가 기재된 파일이 다운로드 된다. 그 아이디와 시크릿키를 터미널에 입력하면 된다.
조금 기다리면 <앱 이름>이라는 이름의 앱이 만들어졌다. 라는 문구가 뜨며 왼쪽 탭에 .elasticbeanstalk 폴더가 생성되는 것을 확인 할 수 있는데 eb가 우리 프로젝트에 활성화 되었다는 뜻임을 알 수 있다.
활성화가 되었으니 이제 장고에 걸맞는 환경을 만들어줘야 한다.
$ eb create django-env
aws라는 시스템을 이용하는 것은 우리의 프로젝트가 다른 컴퓨터의 서버를 할당받아서 쓰는 과정이다. 그렇기 때문에 eb create django-env 는 장고로써 사용할 수 있는 환경을 서버 컴퓨터로부터 할당받는 과정이라고 말 할 수 있다.
이렇게 환경설정이 끝나면 프로젝트를 위한 도메인이 하나 할당된다.
$ eb status
할당된 도메인을 확인해 보기 위해 eb status 를 입력하고 CNAME을 확인해 보면, 노란색으로 표시된 CNAME이 바로 우리의 프로젝트를 확인 해 볼 수 있는 도메인이다. 할당된 도메인을 우리 프로젝트에게 알려주기 위해 settings.py를 수정한다.
ALLOWED_HOSTS = [ '<할당받은 CNAME>' ]
그리고 변경된 사항을 git에 업로드 해준다.
만든 앱을 서버로 배포
$ eb deploy
위의 명령어를 입력해 Success가 뜨면 성공, 에러가 뜨면 다시 시도해 볼 수 있다.
$ eb open
위의 명령어로 방금 배포한 사이트를 열 수 있다. CNAME을 직접 주소창에 입력해도 된다.
$ eb terminate --all
어플리케이션 삭제
aws 공식 가이드
Django 애플리케이션을 Elastic Beanstalk에 배포 - AWS Elastic Beanstalk
각종 에러모음
Django(장고) 프로젝트 Elastic Beanstalk로 서버에 쉽게 배포하기
aws 공식 사이트
Amazon Web Services (AWS) - Cloud Computing Services
eb command not found 에러가 뜬 경우
Windows에 Python, pip 및 EB CLI 설치 - AWS Elastic Beanstalk
eb init을 처음 했을 때 아이디,시크릿 키 발급하는 방법
'Server > django' 카테고리의 다른 글
[Django] JSON, Http Request & Method, Httpie (0) | 2020.04.23 |
---|---|
[Django] CRUD (0) | 2020.04.16 |
[Django] 장고 기초 - PostgreSQL DB연동 (0) | 2020.03.05 |
[Django] 장고 기초 - App 재사용 (0) | 2020.03.03 |
[Django] 장고 기초 - 썸네일 만들기 (0) | 2020.03.01 |