초보 개발자

elastic beanstalk 본문

Python/airbnb 클론

elastic beanstalk

taehyeki 2022. 3. 16. 21:34

ec2를 사용하려면 처음부터 다 설치해주어야 하는 불편함이 있지만

eb라고 불리우는 것을 사용하면 기본적으로 ec2를 자동적으로 생성해준다. 두개는 다르지 않다

elastic beanstalk는 ec2를 만드는 단축기일 뿐이다. 그리고 코드를 매우 쉽게 배포할 수 있게 해준다.

그리고 테스트용 인스턴스를 만들 수 있게도 해준다.

 

 

먼저 aws cli를 설치해주어야 한다.

pipenv install awsebcli --dev

그런 뒤  db를 치면 커맨드 들이 떠야 정상적으로 설치된 것이다.

 

다음

eb init

을 하면 region을 고르는 화면이 나올텐데 seoul을 찾아 번호를 적자 (10)

 

그다음엔 aws-access-id를 생성해야한다. 왜냐면 현재 아마존은 우리가 누군지 모르는 상태이다. 

AWS에서 IAM을 찾아 들어가보자. 

사용자를 클릭하여 생성하자 우리는 CLI를 사용하여 접근할 것이기에 액세스-키 방식을 선택해주자.

그리고 여기에 권한을 설정해주어야 한다.

간단하게 full access를 선택해도되는데 원래는 선택을하면 안된다!!

그치만 일단은 Administrator Access를 줘보자

 

이렇게 해서 만들면 우리에게 USER ID와 USER SECRET을 준다. USER SECRET은 여기서 잃어버리면 더 이상 찾을 수 없기에 잘 간직해야 한다.

 

이 아이디를 전 콘솔창에 그대로 이어서 붙여넣자. 비밀번호도 마찬가지이다.

 

그럼 이름을정하라고하고, 파이썬을 쓸거냐고물어보고, 맞다면 버전까지 물어봐준다. 우리가쓰는 버전이 없다면 제일 가까운 것을 눌러주자.

 

do you wish to continue codecommit? 이라는 메시지가 나오면 no라고 해주자

 

do you want to set up ssh for your instances? 라는 메시지가 그다음에 나온다.

ssh는 우리의 인스턴스를 액세스할 수 있도록 도와준다.

eb는 기본적으로 인스턴스를 만들어준다. 서버를 직접 들어가서 보고 파일 만들거나 파일을 지우거나 그런 작업을 하고 싶다면 yes라고 적어주자 우리는 사용하지 않을거라 no를 적어주자 그럼 끝났다!!

 

엘라스틱 빈스택 설정이 다 되었다.

 

일단 django로 배포하려면 먼저 .ebextensions라는 폴더를 생성해야된다. 이걸 만드는 이유는 바로 정보를 적어주어야 하기 때문이다. 서버가 작동하도록하기 위함이다.

 

config 폴더에가면 wsgi라는 파일이 있었을텐데 이건 django 앱을 배포하는 하나의 방법이다. 이 파일이 엘라스틱 빈스택이 호출하는 것이다. 엘라스틱 빈스택은 서버를 작동시키지 않는다. python manage.py runserver대신에 wsgi를 쓴다.

 

따라서 .ebextensions폴더안에 .django.config파일을 만들고 거기에 아래와 같이 적어준다.

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: config/wsgi.py

 

이제 가상환경을 만들어 주저야 한다.

eb create airbnb-clone

 

엘라스틱 빈스톡은 우리의 현재 폴더의 모든 파일들을 가져간다. 그리고 압축시킨다. 그리고 s3에 업로드 한 뒤

인스턴스를 우리대신에 만들어준다. 뿐만아니라 시큐리티 그룹도 만들고 로드밸런서도 만들어준다.

 

추천하는 방식은 가상환경을 2개 만드는 것이다. 하나는 airbnb-clone테스팅, 또 하나는 airbnb-clone 프로덕션 서버이다. 테스팅 서버를 먼저 업로드하고 체크해본 뒤 잘 되면 실제 배포를 하는 것이다.

 

콘솔창으로 돌아가면 엄청난 오류가 떠있을 것이다. 사실 엘라스틱 빈스톡은 우리가 git에 commit되어있는 것 까지만 가져간다. 그래서 우리가 방금 django.config등을 추가했으니까 commit되어있지 않았을 것이다. 따라서 우리가 변경사항을 만들었다면 항상 그 변경사항을 commit 해야한다. 그래야 내가 eb deploy를 했을 때 엘라스틱 빈스톡이 변경사항을 반영할 수 있는 것이다.

 

 

먼저 오류가 나는걸 보면 django가 설치되어있지 않다고한다. 따라서 엘라스틱 빈스톡보고 설치하라고 해야한다.

우리의 pipfile에 담긴 것들을 ..

 

왜냐하면 pipenv밖에는 아무것도 설치되어있지 않기 때문이다. 우리가 pipenv shell로 접근하지 않으면 모듈들이 설치 되어있지 않은 상황이다. 엘라스틱 빈스톡은 현재 이상황 이기 때문이다. pipenv shell밖에 있는 걸 다 가져갔다고 보면된다. 따라서 이걸 다 설치하라고 해야한다. pillow.. django-countries.. dotenv.. requests 등등

 

이걸 하기 위해선 pip를 사용하면된다. 이건 파이썬의 가장 기본적인 설치방법이다.

pip freeze > requirments.txt를하면 현재 설치된 파일들이 전부 이 파일에 적혀진다. 이 방법도 있지만

다른 방법도 있다.

pipenv install pipenv-to-requirements # 설치

pipenv_to_requirements -f # requirements.txt파일 만들어줌

 

그리고 기본적으로 엘라스틱 빈스톡은 requirements.txt를 찾는다. 만약 찾는다면 자동으로 설치해준다.

이렇게 해준뒤  커밋 후 아래의 명령어를 적어보자

eb deploy

 eb logs를찍어보면 아직도 많은 오류가 뜨는 것을 확인할 수 있는데

 

그 중 sqlite오류도 있다.

sqlite는 python manage.py runserver하면 생성이되는데

wsgi로 파이썬이 시작되었을땐 db.sqlite가 생성이 되지 않는다. 우리는 이제 sqlite3를 사용하고 싶지 않기에 좋다.

왜냐면 개발용으로는 썼지만 배포용으로는 다른 db를 사용할꺼기 때문이다. 따라서 이부분을 설정해주어야한다.

 

 

'Python > airbnb 클론' 카테고리의 다른 글

django add photo with createview  (0) 2022.03.22
django photo delete, edit  (0) 2022.03.21
django edit-room with UpdateView  (0) 2022.03.16
django class mixins  (0) 2022.03.15
django passwordchange with Form View  (0) 2022.03.15