본문 바로가기
야매 개발실/Web Server

CentOS, mod_wsgi를 이용한 장고 연동 방법

by 야매플머 2011. 9. 23.
반응형
이전에 소개 했던 장고를 CentOS에 아파치로 연동했던 방법과 다른 mod_wsgi를 이용하여 연동하는 법을 기록 합니다. 시간이 나질 않아 기록을 할 수 있을까 싶었는데, Amazon 서비스에 서버를 셋팅 해야 하는 일이 생겨서, 셋팅 테스트를 하는겸 기록을 남겨 봅니다. mod_wsgi를 이용해서 아파치와 장고를 연동하는 방법은 장고 공식 사이트 도큐먼트에서도 권장하는 연동 방법이기도 합니다. (예전에 봤던거라 확실하진 않습니다.)

저는 Amazon에서 서비스하는 가상서버에 셋팅을 해보도록 하겠습니다. 제가 셋팅하는 Amazon EC2 서비스 중, 초기 가입자에게 무료로 제공하는 스펙에 작업을 해보았습니다. CentOS 버전은 5.6 64bit 버전입니다.

터미널로 들어가 우선 상큼하게 yum update를 한번 해주었습니다. 
먼저 home 디렉토리 아래에 src 디렉토리를 생성해서 설치에 필요한 프로그램들을 다운로드 받습니다.
다운로드 받으실 떄는 wget 등 사용하기 편한 것으로 받으면 될 것 같습니다. 다운로드 받을 프로그램들은 아래와 같습니다.
1. sqlite (http://www.sqlite.org/index.html)
2. python (http://www.python.org) : 파이썬은 장고 지원이 되는 2.7.2 버전을 다운로드 받았습니다.
3. setuptools (http://pypi.python.org/pypi/setuptools)
4. mysqldb-python (http://pypi.python.org/pypi/MySQL-python/1.2.3) : mysql을 사용하기 위한 것입니다.
5. python image lib (http://www.pythonware.com/products/pil/) : 파이썬 이미지 라이브러리 입니다.
6. mod_wsgi (http://code.google.com/p/modwsgi/) : 아파치와 연동하기 위한 mod_wsgi 입니다.
7. apache (http://apache.org/) : 아파치 입니다.(yum으로 설치하셔도 됩니다. 저는 수동 설치 하도록 하겠습니다.) 

sqlite 부터 차근 차근 설치를 시작합니다. sqlite 일반적인 방법으로 컴파일 해서 설치 하면 됩니다.
python 설치 부터가 조금 까다로운데.. centos에 기본적으로 설치되어 있는 python 구버전이 있습니다. 이와 겹치지 않도록 유의 해서 설치를 해야 합니다. 우선 python 압축 해제 후
./configure --perfix=/opt/python2.7 --width-threads --enable-shared 
로 설치 할 위치와 옵션등을 지정합니다. 그리고 난 후 역시 make/make install 를 이용해서 설치를 합니다.
설치후  .bash_profile 에 alias를 추가합니다. 추가할 내용은 alias python='/opt/python2.7/bin/python' 을 추가 합니다. 그리고 난 뒤 심볼릭 링크를 만듭니다. ln -s /opt/python/bin/python /usr/bin/python2.7
심볼릭 링크를 만든 후 /etc/ld.so.conf.d/opt-python2.7.conf 를 작성합니다. 이는 ld가 공용 라이브러리를 찾을 수 있도록 하기 위함입니다. /opt/python2.7/lib 를 내용에 추가합니다. 추가 후 ldconfig 이제 정상적으로 python이 설치 되었는 지 확인해 봅니다.

잘 설치 되었습니다..(이후 셋업 툴즈를 설치 할때 zlib 임폴트 관련되어서 이상이 생긴다면 python을 설치 할때 zlib 활성화를 옵션에 넣어 주어야 합니다. yum 패키지로 zlib-devel 을 설치 하신 후 configure 된 python 폴더에서
module/setup 파일에 들어가 zlib 관련 부분에 주석을 해제 해주시고 설치 하시면 됩니다)
이제 파이썬 설치가 잘 되었다면 python 버전에 받게 다운로드 해 두었던 setuptools를 설치 합니다..
sh setuptools-0.6c11-py2.7.egg --prefix=/opt/python2.7  형태로 설치 합니다.

셋업 툴즈가 설치 되었습니다. 이제 Mysqldb 패키지를 설치해 보겠습니다.(중간에 터미널이 바꼈습니다. 아마존에 설치 하다가 돈나간단 소리에 허겁지겁 인스턴스를 종료 시켰습니다. 개인적으로 사용하고 있는 가상서버 호스팅 쪽에 계속해서 셋팅 했습니다.) 다운로드 받은 mysqldb 패키지를 압축 해제후 방금 설치한 setuptools 를 이용해서 설치합니다. 압축 해제 후 setup.py 파일을 이용 해 설치 합니다. python setup.py build 빌드 후....
python setup.py install 합니다.

만약에 설치 중에 에러가 있다면, mysql-dev 패키지가 없을 수 있으니 yum install mysql-dev* 로 설치 해줍니다.
PIL 역시 이와 동일한 방법으로 설치해주시면 됩니다. 이제 모두 설치가 정상적으로 되었는지 확인 해 보죠.
파이썬 쉘로 진입하여 설치한 패키지를 임폴트 해봅니다.

설치가 아주 잘되었네요.. (중간에 오타가 ㅡ,.ㅡ) 이제 장고와 아파치를 연동 할 수 있는 mod_wsgi를 설치 해보도록 하겠습니다. 이것 역시 아주 쉽습니다. 먼저는 새로 설치한 파이썬의 공용 라이브러리를 링크 할 수 있도록 해줍니다. 설치한 파이썬의 config 파일로 이동합니다. 제 경우에는 /opt/python2.7/lib/python2.7/config 가 되겠네요
이곳에서 라이브러리를 심볼릭 링크 합니다. ln -s ../../libpython2.7.so 이제 다시 압축을 해제한 mod_wsgi 폴더로 이동하여 설치 과정을 진행합니다. 새로 설치한 파이썬 모듈로 돌아 갈 것이니 옵션을 넣어줘 봅니다.
./configure --with-python=/opt/python2.7/bin/python 자 에러가 없이 잘 되었다면.. 이제 make/ make install 로 설치를 마무리 해줍니다.

설치가 마무리 되었다면 아파치와 연동하기 위해 httpd.conf 파일에 해당 모듈을 로드 할 수 있도록 추가합니다.
LoadModule wsgi_module modules/mod_wsgi.so
AddHandler wsgi-script .wsgi 
추가 하고 아파치 서버를 재실행 합니다. 재 실행이 잘 되었다면 아파치와 잘 연동이 되고 있는지 한번 확인 해 보도록 합니다. (다음에 계속 할께요..)

PS. 사용하던 가상서버에 루비 모듈을 깔아서 사용하고 있었는데 두가지가 충돌나네요 @_@;; 흠흠.. 일단 이것 정리되면 쟁고 설치 부분까지 이어서 기록 하겠습니다.


반응형