読者です 読者をやめる 読者になる 読者になる

CentOS+mod_wsgiでDjangoを動かす

環境:
VirtualBox on CentOS : 5.0
Apache               : 2.2.3
mod_wsgi             : リビジョン 204
  • mod_wsgi を入手します。
$ svn checkout http://modwsgi.googlecode.com/svn/trunk/ modwsgi
A    modwsgi/configure
A    modwsgi/LICENCE
A    modwsgi/configure.ac
A    modwsgi/Makefile-1.X.in
A    modwsgi/Makefile-2.X.in
A    modwsgi/mod_wsgi.c
A    modwsgi/README
 U   modwsgi
リビジョン 204 をチェックアウトしました。

以下の手順で、簡単にインストールできます。

$ ./configure
$ make
# make install

(注)python-devel, apxsが必要になります。 要マニュアル参照
CentOSは、以下のパッケージが必要になります。

rpm -Uvh python-devel-2.4.3-19.el5.i386.rpm
rpm -Uvh apr-devel-1.2.7-11.i386.rpm
rpm -Uvh apr-util-devel-1.2.7-6.i386.rpm
rpm -Uvh httpd-devel-2.2.3-6.el5.centos.1.i386.rpm
# ls -l /usr/lib/httpd/modules/
# ldd /usr/lib/httpd/modules/mod_wsgi.so
        linux-gate.so.1 =>  (0x00b25000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00be7000)
        libdl.so.2 => /lib/libdl.so.2 (0x00de9000)
        libutil.so.1 => /lib/libutil.so.1 (0x00110000)
        libc.so.6 => /lib/libc.so.6 (0x00114000)
        /lib/ld-linux.so.2 (0x0067e000)
  • mod_wsgiの動作確認

Apacheのconfigファイルの追加をします。

# vi /etc/httpd/conf.d/start.conf
(追記する)
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /test /var/www/cgi-bin/hello.py
  • Hello Wolrdを表示します。
# vi /var/www/cgi-bin/hello.py
(追記する)
def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]
$ mkdir /var/www/cgi-bin/django
$ cd /var/www/cgi-bin/django
$ django-admin.py startproject test1
# vi /etc/httpd/conf.d/django-test.conf
(追記)
Alias /site_media/ "/your/django-dir/site_media/"

LoadModule wsgi_module modules/mod_wsgi.so

<Directory /your/django-dir/site_media/>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias / /var/www/cgi-bin/django/mysite.wsgi

<Directory /var/www/cgi-bin/django>
Order deny,allow
Allow from all
</Directory>
import os, sys
sys.path.append('/var/www/cgi-bin/django')

os.environ['DJANGO_SETTINGS_MODULE'] = 'test1.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()