블로그

우분투 14.04 + 파이썬 + Django + 아파치 + mod_wsgi 설치

OS: 우분투 14.04
파이썬 버전: 3.4.0
Django 버전: 1.7.1


아파치 설치

# apt-get install apache2


아차피 mod-wsgi 설치

파이썬 3 에서는 아래와 같이 libapache2-mod-wsgi 패키지가 아니라 libapache2-mod-wsgi-py3 로 설치해야 합니다. 버전이 안 맞으면 wsgi 가 아예 작동이 안 되니 반드시 확인 후 올바른 버전으로 설치해야 합니다.

# apt-get install libapache2-mod-wsgi-py3


아파치 wsgi 설정

wsgi 는 버추얼호스트에는 설정이 안 되므로 mods-enbled/wsgi.conf 또는 apache2.conf 등의 글로벌 설정파일에 설정을 합니다.

# cd /etc/apache2/mods-enabled
# vi wsgi.conf

여기서는 wsgi.conf 에 설정을 하도록 합니다.

WSGIScriptAlias / /root/pywork/fun25/fun25/config/wsgi.py
WSGIPythonPath /root/pywork/fun25:/root/pyenv/lib/python3.4/site-packages

<Directory /root/pywork/fun25/fun25/config>
  <Files wsgi.py>
     Require all granted
  </Files>

WSGIScriptAlias 는 django 에서 생성하는 wsgi.py 파일입니다. WSGIPythonPath 는 사이트의 패키지들을 찾을 수 있는 디렉토리입니다.


virtualenv 사용시

virtualenv 를 사용해서 django 환경을 구성하여 개발했을 경우 특정 디렉토리 아래에 파이썬 패키지들이 설치가 되어 있습니다. 이 경우는 위의 설정처럼 WSGIPythonPath 에 /root/pyenv/lib/python3.4/site-packages 처럼 site-packages 디렉토리를 추가해 주면 됩니다.

WSGIPythonPath /root/pywork/fun25:/root/pyenv/lib/python3.4/site-packages


wsgi.py

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fun25.config.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()


버추얼호스트

# cd /etc/apache2/sites-available
# vi wsgi-test.conf
# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/wsgi-test.conf

아래는 버추얼 호스트 설정입니다. 주의할 점은 STATIC 또는 MEDIA 패쓰를 Alias 를 통해서 접근 가능하도록 해 주는 것입니다. 파이썬 파일들은 wsgi 를 통해서 Django 가 서비스를 하고 이미지, css, js 파일등은 아파치가 서비스하도록 합니다.

<VirtualHost *:8080>
   ServerName wsgitest.fun25.co.kr

  Alias /s /root/pywork/fun25/s

  <Directory /root/pywork/fun25/s>
     Require all granted
  </Directory>
</VirtualHost>


mod_wsgi 데몬 모드

mod_wsgi 에서는 데몬 모드를 사용할 것을 권장하고 있습니다. 데몬 모드 사용시에는 위의 설정에서 WSGIPythonPath 설정을 없애고 아래와 같이 WSGIDaemonProcess 설정에 python-path 옵션을 추가하면 됩니다. 아래는 wsgi.conf 에 데몬 모드로 설정한 내용입니다. 버추얼호스트 설정은 따로 변경할 것이 없습니다.

WSGIScriptAlias / /root/pywork/fun25/fun25/config/wsgi.py

<Directory /root/pywork/fun25/fun25/config>
   <Files wsgi.py>
      Require all granted
   </Files>
</Directory>

WSGIDaemonProcess stage.fun25.co.kr python-path=/root/pywork/fun25:/root/pyenv/lib/python3.4/site-packages
WSGIProcessGroup stage.fun25.co.kr

참고 문서

How to use Django with Apache and mod_wsgi

2015-04-06 목록