고양이발일기
AWS ElasticBeanstalk mysqlclient 에러 해결 본문
반응형
사건 개요
Django 배포를 위해 Elastic Beanstalk 사용 도중 requirements.txt에서 요구하는 mysqlclient 2.1.0 버전이 말썽을 일으킴 ㅠㅠ

Instance deployment failed to install application dependencies. The deployment failed.
Instance deployment failed. For details, see 'eb-engine.log'.
계속 이러한 에러가 떠서 결국 eb-engine.log 파일을 다운 받아서 열어보기로 했다.
참고로 eb-engine.log 같은 로그 파일은 환경 - 로그 에서 다운받을 수 있다.

eb-engine.log 파일을 까보니
Collecting mysqlclient==2.1.0 Downloading mysqlclient-2.1.0.tar.gz (87 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'error'
.
.
[ERROR] An error occurred during execution of command [app-deploy] - [InstallDependency]. Stop running the command. Error: fail to install dependencies with requirements.txt file with error Command /bin/sh -c /var/app/venv/staging-LQM1lest/bin/pip install -r requirements.txt failed with error exit status 1. Stderr: ERROR: Command errored out with exit status 1:
.
.
/bin/sh: mysql_config: command not found
/bin/sh: mariadb_config: command not found
/bin/sh: mysql_config: command not found Traceback (most recent call last):
mysqlclient가 깔리지 않는 문제였다...
한 4시간 가량 삽질을 한 결과 Amazon Linux 2 AMI에는 mysql이 포함되어있지 않아서 mariadb-devel로 설치를 해줘야한다는 것이었다.
그래서 mysqlclient를 깔기 전 설치를 해줘야하는 패키지를 설정을 해두었다.
packages:
yum:
python3-devel: []
mariadb-devel: []
해당 코드는 .ebextensions 폴더에 넣어두면 알아서 설치를 완료한다.
이 과정에서 ... extensions의 스펠링을 하나 틀려.... 한시간 가량을 버렸다 ... ^-^....

위의 스크린샷과 같이 필요한 config들을 넣어주고 다시 배포하면 이 문제는 해결이다!
비록 다른 문제가 다시 생겨버렸지만 .....
참고로 00, 01과 같이 해준 이유는 ebextensions는 파일의 순서대로 실행시키기에 스펠링별로 정렬되는 것을 막기 위함이다.

그렇게 mysqlclient 빌드는 해-결 했다!
하지만 .... 더 큰 산이 남아있었음을 ...
반응형
'개발 일기' 카테고리의 다른 글
React Native 에러 - Could not find a declaration file for module 'styled-components/native'. (0) | 2022.03.15 |
---|---|
react-native 시작하기 - Mac OS (0) | 2022.03.09 |
AWS OpenSearch Service 시작하기 - 설정 (1) | 2022.01.12 |
AWS Cloud9과 Docker를 활용한 MongoDB 실습하기 (2) | 2021.09.23 |
AWS Iot Core 사용기 (w. 라즈베리파이) (2) (0) | 2021.09.23 |