вторник, 22 июня 2010 г.

WSGI - настройка интерфейса

Для работы с Django необходимы http-сервер Apache и модуль к нему - mod-wsgi. Модуль mod_wsgi пришел на смену mod_python и в настоящее время рекомендуется авторами Django как наиболее подходящее решение для использования в реальных условиях.

Установка mod_wsgi тривиальна:
apt-get install libapache2-mod-wsgi

Необходимо создать wsgi-обработчик. Для этого в своем django проекте я создал каталоги
/home/django-trunk/dtest1/apache - для mod.wsgi-обработчика
../logs - для лог файлов apache
../css - таблицы стилей
../js - скрипты
../medi - для прочих статических файлов

Содержимое файла mod.wsgi:
 import os, sys
sys.path.append('home/django-trunk')
os.environ['DJANGO_SETTINGS_MODULE'] = 'dtest1.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Далее, чтобы код проекта отзывался на какой-либо URL-адрес, необходимо настроить виртуальный хост Apache. Необходимо создать новый файл /etc/apache2/sites-available/django-test1:
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName django-test1.local
   
    # статические файлы
    Alias /media/ "/home/django-trunk/dtest1/media/"
    <Location "/media">
        SetHandler None
    </Location>
   
    Alias /css/ "/home/django-trunk/dtest1/css/"
    <Location "/css">
        SetHandler None
    </Location>
   
    Alias /js/ "/home/django-trunk/dtest1/js/"
    <Location "/js">
        SetHandler None
    </Location>
   
    Alias /pics/ "/home/django-trunk/dtest1/pics/"
    <Location "/pics">
        SetHandler None
    </Location>
   
    <Directory /home/django-trunk/dtest1/apache>
        Order allow,deny
        allow from all
    </Directory>
   
    # wsgi - обработчик
    WSGIScriptAlias / /home/django-trunk/dtest1/apache/mod.wsgi
#    WSGIDaemonProcess django-test1 processes=2 maximum-requests=5 threads=1
#    WSGIProcessGroup django-test1
    ServerSignature On

    ErrorLog /home/django-trunk/dtest1/logs/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    #CustomLog "|/usr/sbin/rotatelogs /home/django-trunk/dtest1/logs/access.%y-%m-%d.log 86400" combined
    CustomLog /home/django-trunk/dtest1/logs/access.log combined
</VirtualHost>

Дальше стандартные действия
# включаем виртуальный хост
a2ensite django-test1
# рестарт Apache
/etc/init.d/apache2 restart
Не забыть сделать запись в c:\Windows\..\hosts

Комментариев нет:

Отправить комментарий