본 강의는 27강1, 27강2로 나누어져 있음을 알립니다.
[27강1 : EB 생성 및 기본 설정하기]
EB 생성하기
서비스 > 컴퓨팅 > Elastic Beanstalk 클릭
CLI로 구성하기
...
awsebcli
pip install -r requirements.txt
사용하지 않을 내용 삭제하기
명령어 입력
eb init
10번 선택
IAM으로 발급받은 ACCESS_KEY, SECRET_KEY 입력
- admin으로 발급받은 이유 → 이렇게 EB 서비스도 사용할 것이었기 때문!
새로운 어플리케이션을 만들겠다는 의미인 2 입력
어플리케이션 이름 : anonymous
파이썬 사용이 맞고, 아마존 리눅스2를 이용, 서버에 접속도 할 것이기 때문에 모두 y입력
새로운 키페어 생성 → 3번 입력 후, 키페이 이름 입력, 엔터 2번
AWS 홈페이지 > EC2 > 네트워크 및 보안 > 키 페어
.elastcibeanstalk 생성 완료
```
# .gitignore의 모든 내용 복사 + env.json만 삭제
venv/*
.vscode/*
.idea/*
*.pyc
# Elastic Beanstalk Files
.elasticbeanstalk/*
!.elasticbeanstalk/*.cfg.yml
!.elasticbeanstalk/*.global.yml
```
- anonymous > settings.py
```python
...
DEBUG = False # 기존 True로 되어있었지만 -> False로 변경
ALLOWED_HOSTS = ["*"] # 모든 호스트의 접근 허용
```
- 루트 폴더 → 📁 .ebextensions 폴더 생성 → 📝 00_anonymous.config 파일 생성
```
# 00_anonymous.config
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: anonymous.wsgi:application
NumProcesses: 2
NumThreads: 15
packages:
yum:
postgresql-devel: []
container_commands:
00_wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
```
[27강2 : EB 설정하기]
config 파일 적용하기
eb create
anonymous-dev(또는 test-dev) 입력 > 엔터 > DNS 설정 → 바로 엔터
로드밸런서는 2번 어플리케이션으로 설정
오토 스케일링 적용 여부 N 입력 → 서버 생성 시작됨.
AWS에서 확인
Elastic Beanstalk 접속 → 설치가 진행되고 있음을 볼 수 있음.
시간이 지난 후 완료되면, 다음과 같은 화면을 볼 수 있음.
상단 URL 접속
eb deploy
터미널에서 EC2 접속하는 법
eb ssh
→ y 입력
gunicorn이 해당 프로젝트의 프로세스
top
→ 그 다음, Shift+M 입력
오늘 강의는 AWS의 EB 서비스를 생성하고, 서버를 배포하는 방법에 대한 내용이었다.
먼저, EB를 AWS에서 생성하는 것이 아닌 CLI 환경에서 설치하는 방식으로 진행했다.
AWS에서 생성 버튼을 눌러 만들 수도 있지만 확실히 터미널 환경에서 명령어를 입력하며 만드는 것이 도움이 될 때도 있고, 프로젝트 내 터미널 환경에서 진행하다보니 코드 파일에 추가할 때에는 개발툴 내에서 쉽게 추가하고 삭제할 수 있기 때문에 용이한 부분도 있는 것 같다는 생각이 들었다.
EB에 관련된 패키지를 프로젝트의 requirments에 추가해 설치해주고, 명령어를 이용해 EB를 생성하고 EC2도 설정을 했다.
또한 현재의 프로젝트가 디버그 모드가 켜져 있는데, 그렇게 되면 사용자들이 접속을 했을 때 모두 보여주게 되어 보안 상 문제가 발생할 수 있기 때문에 DEBUG = False로 바꿨다.
그리고, 모든 호스트가 접속할 수 있도록 ALLOWED_HOSTS = ["*"]로 설정했다.
그 다음 .ebextensions 폴더에 00_anonymous.config를 작성해 미리 EB에 관련된 설정값을 입력했다.
설정값을 적용하기 위해 eb create로 서버 이름, DNS, 로드밸런서 설정, 오토 스케일링은 하지 않는 것까지 설정해줬다.
오토 스케일링은 순간적으로 여러 명의 유저가 몰렸을 때와 그렇지 않을 때를 보고 자동으로 서버 사양을 조절하는 서비스를 말한다.
그렇게 배포를 진행했고, 실제 URL로 접속해보면 잘 배포가 되었는지 확인할 수 있다.
마지막으로는 도메인 설정에 대해 Route 53 서비스를 공부해 사용하면 이용이 가능하다고 말씀하셨지만, 이 역시 과금 문제가 조금 있어 나의 경우, 도메인 구매 비용만 들이고 다른 서비스를 이용하는 방식을 주로 사용했고 이 프로젝트도 도메인이 필요하다면 다음과 같은 방법을 이용할 생각이다. (실제 개발 당시 참고한 사이트는 아래에 첨부!)
이러한 방법으로 도메인을 적용해도 충분히 될 것 같다!
드디어 배포까지 마무리지을 수 있었다. 남은 이틀동안 프로젝트를 잘 수정하고 다시 배포하며 완성도 있는 django 프로젝트가 될 수 있도록 노력해야지🔥