문제점
AWS 의 EC2 서버에 amazon 리눅스를 사용 중 django 설치 및 실행을 하였는데 다음과 같은 에러가 발생
이 에러의 가장 마지막줄을 보면 SQLite 3.9.0 or later is required (found 3.7.17) 을 확인할 수 있다.
현재 설치된 django 에서 요구하는 SQLite 의 버전이 3.9.0 이상인데 기존 설치되어 있는 SQLite 의 버전이 3.7.17 이라는 것이다.
이는 python3 를 실행하여 sqlite 를 import 하여 확인이 가능하다.
Python 3.7.9 (default, Apr 30 2021, 20:11:56)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-12)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.__version__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'sqlite3' has no attribute '__version__'
>>> sqlite3.sqlite_version
'3.7.17'
>>> sqlite3.version
'2.6.0'
>>>
현재 설치되어 있는 sqlite_version 은 3.7.17 로 확인이 되었다.
이를 3.9.0 이상 버전으로 설치하여 문제 해결을 한다.
조치
1. SQLite 설치
우선 https://sqlite.org/index.html 에 접속하여 원하는 (또는 Django 에서 요구하는 설치 버전) 버전을 다운받는다.
현재 기준 최신 버전인 3.36 버전으로 다운 받았다. sqlite-autoconf-3360000.tar.gz 파일을 받을 링크 주소를 복사하면 된다.
(해당 글자의 우클릭 -> 링크 복사하기)
이제 서버로 와서 해당 파일 다운로드하고 설치하면 된다.
# If Development Tools are not installed, install before
# sudo yum groupinstall 'Development Tools'
# 1. Download install file
cd /opt/
sudo wget https://sqlite.org/2021/sqlite-autoconf-3360000.tar.gz
sudo tar -zxf sqlite-autoconf-3360000.tar.gz
cd sqlite-autoconf-3360000/
# 2. Install
sudo ./configure
sudo make clean && sudo make -j 20 && sudo make install
# 3. check sqlite3 version
sqlite3 --version
3.36.0 2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5
위 명령어들로 SQLite3 의 소스설치가 완료되었다.
sqlite3 의 실행 바이너리와 라이브러리는 설치되었지만 이 라이브러리 경로를 추가로 python3 가 바라보는 곳으로 맞춰주어야 한다.
2. Libary 이동
위의 명령어로 설치 시 library 는 /usr/local/lib64/ 경로에 있게 된다.
현재 EC2 서버에서 기본으로 바라보는 library 인 /usr/lib64/ 에도 libsqlite3.so 파일들이 존재하며 새로 설치된 파일들로 해당 경로의 파일을 교체해 준다.
sudo /bin/cp -rf /usr/lib64/libsqlite3.so.0.8.6 /usr/lib64/libsqlite3.so.0.8.6_bak
sudo /bin/cp -rf /usr/local/lib/libsqlite3.so.0.8.6 /usr/lib64/libsqlite3.so.0.8.6
혹시!!! 모르니 기존 libsqlite3.so.0.8.6 파일을 백업 후 진행한다.
사실 위 library 의 경로는 시스템마다 다르기 때문에 개발자가 직접 확인하고 맞는 경로에 넣어주어야 한다.
확인 방법은 간단하게
find /usr/ -name libsqlite3.so.0.8.6
위와 같은 명령어로 /usr/ 또는 /lib/, /lib64/ 의 경로에서 libsqlite3.so.0.8.6 파일을 찾아 바꿔서 확인해 보는게 좋을 것 같다.
(사실 내가 python 에서 사용하는 library path 의 우선순위 등을 알아본 적이 없기 때문에 이런 방식으로 진행하긴 하였다.)
변경 후 위에서 확인했던 python3 에서 sqlite 의 version 을 확인해 보면
Python 3.7.9 (default, Apr 30 2021, 20:11:56)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-12)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.36.0'
버전이 기존 3.7.17 에서 3.36.0 으로 변경된 것을 확인할 수 있다.
이제 Django 를 실행해보면
이전에 발생했던 sqlite3 관련 에러 로그 없이 실행된 것을 확인할 수 있다.
'개발 노트 > Etc.' 카테고리의 다른 글
[Node] Express, helmet 라이브러리 ALLOW-FROM ALL (0) | 2022.02.07 |
---|---|
[API] 재무제표 및 ROE 조회 API (0) | 2021.07.08 |
[API] 네이버 Finance 주식 시세 가져오기 (2) | 2021.06.05 |
[Macbook] lrzsz 설치 (0) | 2021.06.05 |
[Docker] code-server https 개발환경 구축 (0) | 2021.05.26 |