간단하게 웹기반의 서비스를 구현해 보기 위해

CentOS 6.4에서 Django를 사용하기로 했다.


[과제 1] Django 설치


우선 pip를 사용할 수 있게 하기 위해 get-pip.py를 wget으로 가져온다.


wget https://bootstrap.pypa.io/get-pip.py


다운받은 소스코드를 실행하면 pip를 설치하고


pip install django


라고 하면 Django(장고)가 정상적으로 설치된다.

(아싸~ 별거 없네~ ... 가 아니구나... ㅠㅠ;)


문제는 이제부터 시작된다.

설치된 장고는 1.8.4로 최신버젼인데 Python 2.7부터 사용 가능한 버젼이다.

(때문에 파이썬 업그레이드 후 장고를 다시 설치했다.)


이제부터 삽질시작이다. ^^;;



[과제 2] Python Upgrade (2.6.6 -> 2.7.10)


기본 설치된 CentOS 6.4는 Python 2.6.6버젼을 사용할 수 있고

yum을 이용한 업그레이드가 안되는 상황인데

Django 최신버젼(1.8.4)는 Python 2.7 이상을 요구하고 있다.


리눅스로 자주 사용하지 않으니 삽질의 연속이다 ㅠㅠ;


일단 인터넷을 뒤져 보니 개발툴을 그룹인스톨로 한꺼번에 설치가 가능하다.

https://www.digitalocean.com/community/tutorials/how-to-set-up-python-2-7-6-and-3-3-3-on-centos-6-4


yum -y groupinstall 'Development Tools'


추가로 압축관련 라이브러리들도 설치해 주어야 한다.


yum install -y zlib-dev openssl-devel sqlite-devel bzip2-devel


설치 완료하면

wget 명령어로 설치할 python 소스코드를 가져온다.


wget http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz


다운로드 받은 소스코드를


./configure [--prefix=/usr/local]

make

make altinstall


configure할때 prefix는 따로 지정하지 않아도 /usr/local로 디폴트 설정이 되어있다.


컴파일 과정에서 압축라이브러리 오류로 찾아서 설치한 후 다시 재설치 시작

다행이도 컴파일을 마치고

python2.7 이라고 실행하면 실행되는데

python으로 실행하면 실행이 안된다. ㅠㅠ;


결론적으로 말하면

기존 python2.6이 /usr/bin에 설치되어있고

새로 설치한 python2.7은 /usr/local/bin에 설치되어 있어 PATH 우선순위때문에 발생하는 문제였다.


일단 나는 /usr/local/bin/python2.7을 /usr/bin/python으로 복사해서 해결했다.

이렇게 해결하고 나니 장고 재설치만으로도 기본 실행이 가능하고

2.7로 잘 동작하는 것 같다.

(음~ 생각보다 삽질을 적게 하고 해결했군~ ... 이 아니군 ㅠㅠ;)


장고에서 MySQL을 연결하려고 하니 MySQLdb 모듈이 필요한데


소스컴파일도 문제가 생기고

설치파일은 윈도우만 지원한다.


분면 레드햇에서 yum을 이용한 인스톨을 지원한다고 되어있는데

파이썬을 다시 다운그레이드 해야 하나?


잉? 이런 이번엔 yum이 실행되지 않는다. ㅠㅠ;

(찾아보니 yum은 python 기반의 설치관리 프로그램이었기 때문에

 파이썬 업그레이드에 따른 모듈 참조가 꼬여버렸다.)


무엇보다 MySQL 사이트에서 다운받아 설치한 mysql-connector로는 해결이 안된다.

아마도 소스코드를 들여다보고 뜯어 고쳐야 할텐데

지금은 그렇게 까진 여유가 없다.


차라리 최신 리눅스 버젼을 구해 사용해야 하는 것인가 하고 심각하게 고민할 때 쯤

미묘하게 놓친 부분들이 보이기 시작한다. ㅠㅠ;


[과제 3] MySQLdb 설치


MySQL 연결을 포기하고 장고의 기본설정인 sqlite3를 사용하려고 마음 먹고 테스트 중이긴 한데

yum이 정상실행이 안되는 것이 영 맘에 걸린다.


There was a problem importing one of the Python modules

required to run yum. The error leading to this problem was:


   No module named yum


Please install a package which provides this module, or

verify that the module is installed correctly.


It's possible that the above module doesn't match the

current version of Python, which is:

2.7.10 (default, Sep  5 2015, 18:56:41)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)]


If you cannot solve this problem yourself, please go to

the yum faq at:

  http://yum.baseurl.org/wiki/Faq


yum 사이트에서 소스를 받아서 재설치하려고 생각하던중

중간에 놓친 문장이 보인다. ㅠㅠ;


==> No module named yum


이런 yum 모듈이 임포트 되지 못한 것이잖아 ㅠㅠ;


이때부터 제대로 다시 찾아보니 yum이 파이썬기반이라는 것을 알게 되었고

기존 python2.6이 사용하던 모듈을 찾아봤다.


이리저리 찾아도 yum 모듈이 보이지 않는다.


find 명령으로 찾아보니 아래의 위치에 모듈이 들어있었다.


/usr/lib/python2.6/site-packages/

/usr/lib64/python2.6/site-packages/


위의 위치에 설치된 모듈 중에서

필요한 모듈들을 확인해서

(yum, urlgrabber, rpm 등)

아래의 디렉토리로 복사했다.


/usr/local/lib/python2.7/site-packages/


조금 번거롭긴 했지만

yum이 다시 정상적으로 실행된다. ^^;


yum -y install MySQL-python


이렇게 설치하고 나니

Django의 manage.py에 의한 migrate 도 정상적으로 동작하고


python manage.py syncdb


에 의해 기본 장고가 사용하는 테이블들도 정상적으로 생성되었다.


이래저래 근 2일에 걸쳐 해결했던

python 업그레이드와 django 설치에 대한 삽질 후기!! ㅠㅠ;



# 항상 느끼지만 인터넷을 자료를 찾아보면 아주 간단한 것이 아닌이상

  대부분의 경우 설명한 내용이 그대로 적용되는 경우가 많지 않다.

  특히, 오픈소스 기반의 솔루션들은 활성화되어 있는 프로젝트의 경우

  버젼 업에 따른 변화가 빠르기 때문에 1~2년 전의 컨텐츠로는 제대로 적용되지 않는 것이 오히려 당연한 상황이다.

  그래서 자기 솔루션에 대한 업그레이드나 설치관리에 대한 도구를 제공하는 경우가 많아지는 것 같다.


  어찌 되었든 리눅스에서 버젼 업그레이드는 노가다 삽질로 끝나는 경우가 많아 왠만하면 업그레이드 안하고 싶다~ ^^;;





MySQL에서 장고 관련 테이블이 생성된 화면


Posted by 휘프노스
,