[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(3) - elastic beanstalk

dj-yang·2021년 7월 28일
0

django

목록 보기
7/7
post-thumbnail

서론

가장 기초적인 github-actions를 이용한 CI/CD 파이프 라인 구축하기 마지막 시리즈이다.
다른 시리즈를 아직 못 봤다면 아래를 확인!

시리즈
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(1) - AWS SETTING
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(2) - github actions 사용하기


본론

.ebextensions

AWS Elastic Beanstalk는 .ebextensions에서 setting 값을 받아온다.

이전에 생겼던 오류는 해당 설정을 해주지 않았기 때문에 발생한 오류이다.
.github 폴더를 만든 위치에 .ebextensions 폴더를 생성한다.

# ../cicdproject/.ebextensions/django.config

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: cicdproject.wsgi:application
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: cicdproject.settings
    "PYTHONPATH": "/var/app/current:$PYTHONPATH"
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /static: static

AWS Elastic Beanstalk에서 Django앱을 사용하려면 NGINX와 WSGI를 이용하기 때문에 위와 같은 세팅을 통해 wsgi 설정 파일을 작성해줬다.

이 상태로 커밋 후 푸시를 진행한다.

ALLOWED_HOST

다시 환경으로 이동 버튼을 클릭하면 allowed_host 오류가 나타난다.
이는 django app에 elastic beanstalk가 접근을 하려고 했지만 이를 거절했기 때문에 발생한 오류다.

아마 다른 방식으로 배포를 진행하려고 했다면 자주 봤을 오류기 때문에 큰 설명을 안하고 바로 진행하겠다.

환경으로 이동버튼을 클릭하면 URL(xxxxxx.ap-northeast-2.elasticbeanstalk.com/)로 이동하는데 해당 url을 django settings에 있는 ALLOWED_HOST에 추가해주면 된다.

# settings.py
...
ALLOWED_HOSTS = ['xxxxxx.ap-northeast-2.elasticbeanstalk.com']
...

설정을 해야하는 것이 전부 끝났다. 이제 다시 커밋 후 push를 진행해보자.

git add ../cicdproject/settings.py
git commit -m "add allowed_host for aws eb"
git push

일정 시간 후 다시 환경으로 이동 버튼을 클릭하게 된다면 성공적으로 로켓이 발사되는 것을 확인할 수 있다.

이로써 아주 간단한 Github-actions를 통한 CI/CD 파이프라인 구축을 완료되었다!

시리즈
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(1) - AWS SETTING
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(2) - github actions 사용하기


고찰

이번 파이프라인 구축은 사실 AWS Elastic Beanstalk나 Github-Actions에 대해서 정확하게 알고 구현한 것이 아닌 인터넷에 있는 한 포스팅을 확인하고 DOCS를 조금씩 확인하면서 진행했다.

그래서 그런 지 처음에 오류가 발생해도 이 오류가 왜 발생했는 지 한번에 확인이 어려웠다.

사실 이 글을 쓰는 예제를 실행하기 전에 MySQL을 DB로 사용해서 배포를 진행해보았는데, Elastic Beanstalk에서 성능 저하 오류를 보였다.

아직 정확하게 알고 사용하는 것이 아니라는 것을 확실하게 보여주는 예가 아닌가 싶다..ㅎㅎ

AWS Elastic Beanstalk는 초반 설정만 제대로 해놓으면 정말 편리하게 어플리케이션을 배포할 수 있는 서비스이다.

기회가 된다면 이번에는 내가 실제로 제작하고 있는 서비스를 EB를 통해 배포하는 과정 또한 진행해볼 생각이다. 재밌다..


참고

profile
비전공자가 고통받으며 개발합니다

2개의 댓글

comment-user-thumbnail
2022년 12월 30일

100.0 % of the requests are failing with HTTP 5xx. 이렇게 출력되고 안되네요;;;

1개의 답글