처음 beanstalk으로 배포를 하려는데 많은 어려움이 있었다. 그래서 했던 실수들을 정리했다.
1. beanstalk구조 확인
문제
애초에 배포가 안되고, 빨간 느낌표가 떴다.
원인
그냥 flask앱 파일을 압축해서 올리려 했다. 하지만 beanstalk에 맞는 파일 구조가 있었다.
해결
flask앱 이름을 app에서 application으로 바꾸고 파일 구조를 맞췄다.
2. 파이썬 버전 확인
문제
awsebcli를 이용하여 배포하려는데
eb init
명령어를 치니 자꾸 아래와 같은 에러가 떴다.
...
ModuleNotFoundError: No module named 'imp’
원인
beanstalk은 파이썬 버전이 3.7, 3.8, 3.9, 3.11일 때만 지원되는데, 사용 중인 파이썬 버전이 3.12였다.
해결
파이썬 버전을 변경하고, virt파일을 삭제하고 다시 설치하니 해결 됐다.
3. 필수 파일 누락 확인
문제
internal_server_error가 떴다.
원인
싸지방에서 코딩을 해서 gitpod을 썼고, flask 파일을 다운 받을때 gitpod과 연동된 github에서 다운로드하였다. 그리고 db host주소와 비번 등등 민감한 파일을. env에 저장하고. gitignore에 추가해 놨었다. 따라서 깃헙에서 다운로드할 때는. env 파일이 누락된 상태로 다운로드했고, 당연하게도 db에 접속이 안 돼서 오류가 뜬것이었다.
해결
.env파일을 따로 다운로드하여 같이 압축하고 배포했더니 해결 됐다.
4. if __name__ == '__main__':
문제
이번에는 504 Gateway Time-out 오류가 떴다.
원인
다른 flask파일은 배포가 잘 돼서, 비교하다 아래의 코드가 빠졌다는 것을 알게 됐다.
application.run()
↑내 코드
if __name__ == '__main__':
application.run()
↑작동되는 코드
해결
작동되는 코드대로 해줬더니 해결 됐다.
"if __name__ == '__main__':"이 필요한 이유
느낀 점
앞으로는 beanstalk에서 오류가 날 때는 log부터 보는 습관을 들여야겠다. 또 모든 정답은 공식 문서에 있다는 것을 깨달았다. 검색해서 안 나오면 공식문서를 참고해야겠다.
'aws > Elastic Beanstalk' 카테고리의 다른 글
AWS beanstalk으로 flask 앱 배포하기 - aws 애플리케이션 생성 (0) | 2024.01.22 |
---|