통합검색

Python

Python Django 를 Mariadb와 연동 및 admin 활성화 방법



Python Django를 설치하면 기본으로 설치되는 urls.py 파일에 아래와 같은 코드를 확인할 수 있는데,
django를 설치하게 되면 기본적으로 admin 기능이 함께 설치가 되는데, admin 페이지 접근을 위해 작성되어 있는 코드다.
django 개발시 admin페이지를 손쉽게 구축할 수 있으며, 웹사이트의 관리 또한 한결 쉬워진다. 



브라우저에서 https://domain.name/admin 과 같이 접근하면 장고 admin페이지로 접근된다.
admin을 사용하기 위해선 서버 환경에 아래 몇가지 사전 작업이 필요하다.

- django 와 mariadb 연동을 위한 settings.py 환경설정
- django project에 커넥터 모듈 (pymysql) 설치
- django manage.py 로 table 생성 및 static 파일 다운로드



[!]django 와 mariadb 연동을 위한 settings.py 환경설정[/!]
django 설치시 admin은 로컬서버의 sqlite dmns를 기본으로 사용하도록 셋팅되어 있다.
하지만, 나의 경우 외부에 mariadb 서버가 따로 있으므로, sqlite 대신 원격 mariadb를 바라보도록 설정했다.

mariadb 연동을 위해 settings.py 파일을 vi로 연다.
나의 경우 ( /home/py/public_html/testproject/testproject/settings.py ) 경로에 설정 파일이 있다.
 
#vi /home/py/public_html/testproject/testproject/settings.py

settings.py을 열어 보면 아래와 같이 기본 설정되어 있는 것을 확인할 수 있다.



위 설정을 아래와 같이 변경한다.



여기서 반드시 'ENGINE'을 'django.db.backends.mysql' 로 설정해야 한다.
(mariadb는 mysql엔진에서 파생되어 나온 엔진이기 때문에 mysql로 설정하면 된다.)



[!]django project에 mysql 커넥터 모듈 설치 (pymysql) 설치[/!]
django에서 mariadb 연결을 위해 mysql 커넥터 모듈이 설치되어 있어야 한다.
나의 경우 django를 python 가상 환경에서 설치 하였기 때문에 가상환경 진입 후 모듈을 설치하였다.
  
먼저, 가상환경 디렉토리가 있는 경로로 이동한다.
 
# cd /home/py/public_html/
( 이 경로에 'pyenv'라는 명칭으로 만들어 놓은 가상환경 디렉토리가 있다. )

pyenv(가상환경 디렉토리)를 통해 가상 환경에 접근한다.
 
# source pyenv/bin/activate

가상 환경에 진입 되었다면, pip를 통해 pymysql 모듈을 설치한다.
파이썬 공식 사이트에서는 mysqlclient 사용을 권장하고 있지만, mysqlclient는 centos 환경에 mysql-devel 이 설치되어 있어야 하기에,
나는 그냥 pymysql을 설치했다.
(성능은 mysqlclient 가 더 좋다고 한다.)
 
(pyenv) pip3 install pymysql

설치가 완료 되었다면, deactivate로 가상환경에서 빠져 나온다.
  
(pyenv) deactivate

* mysqlclient 를 설치했다면 manage.py 설정 변경은 필요 없지만,
pymysql을 설치했기 때문에 manage.py settings.py 에서 pymysql을 mysqldb로 인식 시켜줘야 한다. (기본이 mysqlclient 인가보다.)

 
# vi /home/py/public_html/testproject/manage.py

로 열어 아래와 같이 pymysql관련 구문을 추가한다.


 
import pymysql
pymysql.install_as_MySQLdb()

마찬가지로, settings.py 에도 추가해 준다.
 
# vi /home/py/public_html/testproject/testproject/settings.py

로 열어 아래와 같이 pymysl관련 구문을 추가한다.
 
import pymysql
pymysql.install_as_MySQLdb()




[!]manage.py 로 mariadb에 table 생성[/!]
앞서 만났던 manage.py를 통해 admin 구동에 필요한 기본 db table과 static 파일을 다운로드 받을 수 있다.
manage.py가 있는 경로로 이동한다.
 
# cd /home/py/public_html/testproject/

아래와 같이 manage.py 명령어로 연동되어 있는 mariadb 데이터베이스에 admin 구동에 필요한 필수 table을 생성한다.
 
# python3 manage.py migrate



mariadb에 접속해서 table이 잘 생성 되었는지 확인해 본다.



생성된 여러개의 테이블이 확인 된다!
생성된 테이블에 manage.py를 통해 최고 권한의 superuser를 등록해주면 DB설정은 모두 끝.
 
 # python3 manage.py createsuperuser

화면에서 나오는 안내에 따라 관리자 id, email, pw를 차례로 설정한다.




[!]manage.py 로 static 파일 다운로드[/!]
DB 설정까지 모두 완료 됐다면, 브라우저로 /admin 을 접속 해보자!



위와 같이 css가 적용되지 않는채로 화면이 보이는데, 아직 admin 관련 static 파일을 다운로드 하지 않아서 그렇다.
좀 전과 마찬가지로 manage.py를 통해 자동 다운로드 한다.
 
#python3 manage.py collectstatic



위와 같이 css, font, img, js 파일이 다운로드 됐다.
다시 한 번 admin으로 접속 해보자!