본문 바로가기

Web

django에서 cloud db서버의 mysql 접근시 502 bad gateway 오류가 난다면..


이전 글에서 kt ucloud에서 virtualenv위에 django와 nginx를 설치하였었다. (http://abipictures.tistory.com/918)

그리고, django에서 프로젝트를 생성했을때 정상적으로 동작되는 것을 확인도 하였다.





그렇게 django app을 개발하면서 db를 사용하게 될텐데, db서버도 kt ucloud에 신청하였다.

그리고, django의 settings.py를 아래처럼 수정하였다.



 DATABASES = {


'default': {

  'ENGINE':'django.db.backends.mysql',

  'NAME':'(신청한 db명)',

  'USER':'DB이용자 ID',

  'PASSWORD':'DB이용자 암호',

  'HOST':'KT UCLOUD의 DB서버 Private IP 주소',

  'PORT':'DB서버의 포트번호(Mysql서버는 3306)',

  }

}


위의 설정대로 다 작성을 하고 난뒤에 서버를 refresh한뒤에 접속을 해보면...

안그럴수도 있겠지만,


"502 Bat Gateway"


에러가 난다.



이럴때 침착하게 log에 뭐라고 적혀있는지 봐야한다. (로그는 이럴때 이용하는 것.)


uwsgi.log 파일의 맨 하단을 보니, 다음과 같은 에러로그가 남겨져 있다.



...(생략)..


 django.core.exceptions.ImproporyConfigured: Error loading MySQLdb module: No module named MySQLdb


...(생략)..


에러는 MySQLdb 모듈이 없다는 것..

그러면 그것을 설치해주면 되겠다.

어떻게?

일단 virtualenv에 django가 설치되어 있어서, 그 곳에 설치를 하기로 한다.

$ source /var/www/example.com/venv/bin/activate

$ apt-get install libmysqlclient-dev

$ apt-get install python2.7-dev

$ pip install mysql-python


즉 mysql-python 모듈을 설치하면 된다.