Показаны сообщения с ярлыком apache. Показать все сообщения
Показаны сообщения с ярлыком apache. Показать все сообщения

вторник, 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

Apache - создание виртуального хоста

В каталоге /etc/apache2/sites-available находятся файлы конфигурации хостов, а в /etc/apache2/sites-enabled находятся символические ссылки на файлы конфигурации /etc/apache2/sites-available, включенных хостов. Для того чтобы создать виртуальный хост, нужно создать конфигурационный файл и при помощи утилиты a2ensite создать символическую ссылку. А отключить хост можно утилитой a2..site.

Сделаем упрощённую версию /etc/apache2/sites-available/default, чтобы иметь backup default и убрать лишнее из файлов настроек хостов (просто скопируем этот шаблон под другим именем - simple-default).

В дальнейшем и будем использовать simple-default в качестве шаблона для других хостов.

После некоторых изменений я получил файл с таким содержанием:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/test
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/test>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ServerName test
    ErrorLog /var/log/apache2/test-error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog /var/log/apache2/test-access.log combined
</VirtualHost>


 
Перед тем как запустить apache, нужно включить нужные нам виртуальные хосты:
a2ensite test
Также чтобы можно было обратиться к хосту по имени, нужно добавить информацию о его адресе в c:\Windows\..\hosts

http://doc.3dn.ru/publ/14-1-0-63  - первоисточник