Django 프로젝트를 ec2 서버에 배포를 하는 도중 에러가 발생했다.
아무리 구글링을 해봐도 해결법이 나오지 않던 중 3일만에 해결을 하여 기록한다.
설치한 라이브러리
- asgiref 3.7.2
- Django 4.2.10
- Djangorestframework 3.1.4
- Mysqlclient 2.2.3
- sqlparse 0.4.4
먼저 ec2 서버에 접속 후 git, python3 버전을 설치했다. 그리고 git에 올라가있는 django프로젝트 gitlab 소스코드를 clone 하였고, requirements.py에 저장해둔 내 라이브러리 설치 버전들을 install 하려고 했다.
Django 등 다른 라이브러리들은 설치가 잘 되었으나 mysqlclient가 subprocess-excited-with-error 에러가 발생하면서 설치되지 않았다.
구글링을 해보니 위의 에러는 mysql-devel을 설치하면 된다고 했다.
mysqlclient 공식 홈페이지에도 나와있다.
나는 Red Hat이었기 때문에
sudo yum install python3-devel mysql-devel
위의 명령어를 입력해 설치를 진행하려고 했다.
하지만 python3-devel은 설치가 잘 되었으나, mysql-devel을 설치하려하니 위와같이 mariadb-devel already installed 라는 문구를 내뱉고 설치가 안되었다.
원래라면 위와같이 Installing에 mysql-devel이 나와야 하는데, 나는 mariadb-devel을 지우고 다시 mysql-devel을 설치해봐도 똑같이 mariadb-devel을 설치하는게 아니겠는가..
원인을 찾아보니 mariadb가 기본값으로 세팅이 되어있어서 발생한 문제라고 했다.
3일간 헛고생을 하고 해결한 방법을 공유한다.
해결방법
1. mariadb 제거
sudo yum erase MariaDB-devel.x86_64
먼저 위의 코드를 입력해 MariaDB-devel을 제거해준다.
2. yum에 mysql 저장소 추가
그다음 yum에 mysql을 설치해줘야한다. 나는 3일동안 해결하면서 mysql도 분명 설치했다고 생각했는데, 자신의 리눅스 버전에 맞는 파일을 설치하여야 한다.
나는 RedHat 7 버전 이였으므로 3번째 버전을 설치했다. 내가 처음에 설치했다고 생각한 버전은 RedHat 8에 맞는 버전이였다.. 그러니 설치가 안되지..
다운로드를 클릭하면 위와같은 페이지가 나오는데, No thanks, just start my download 문구에서 오른쪽 클릭해서 '링크주소' 를 복사한다.
그럼 위와같이 다운로드 링크가 복사될 것이다.
이제 다시 서버로 돌아가서
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
위의 명령어를 통해 mysql을 설치해준다.
3. mysql-devel 설치
sudo yum install mysql-community-devel.x86_64
설치 후 mysql-community-devel 을 설치하면 이제 mariadb-devel이 아닌 mysql-devel이 설치될 것이다.
4. mysqlclient 설치
pip install mysqlclient
마지막으로 mysqlclient를 설치해주면 잘 설치되는것을 볼 수 있다.
만약 에러가 발생한다면 python-devel 을 추가로 설치해야 하니, 각자 파이썬 버전에 맞는 devel 을 설치하고 해보길 바란다.
'개념공부 > BackEnd' 카테고리의 다른 글
[JSP / FileUpload / AJAX] 파일 다운로드 + 다운로드 수 실시간 올리기 (0) | 2022.07.07 |
---|---|
Web의 변천사 (HTML -> Servlet -> JSP -> MVC -> Spring) (0) | 2022.07.05 |
스레드와 메모리구조 (0) | 2022.06.21 |
[REST] RESTFul 설정 순서 (0) | 2021.10.29 |
댓글