Select it with the mouse and hit Enter
| на поддержку перевода |
|
|
ЯМ:41001223475816
Документация на русском языке для Django стала реальностью. Благодаря новым возможностям движка Sphinx мы можем оперативно дополнять перевод, по мере обновления оригинальной документации.
Источники: http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide, http://ericholscher.com/blog/2008/jul/8/setting-django-and-mod_wsgi/.
Есть несколько причин для перехода с mod_python на mod_wsgi:
mod_python больше не поддерживается разработчиком;
mod_wsgi требует меньше ресурсов для своей работы и обладает большими возможностями в настройке.
Поддерживаются следующие версии Apache — 1.3, 2.0 и 2.2.
При использовании Apache 1.3 можно динамически подгружать его модули. В случае, когда модули статически слинкованы с Apache, некоторые компоненты mod_wsgi будут работать некорректно.
При использовании Apache 2.0 и 2.2 нет разницы, работаете вы с prefork или worker MPM.
Чтобы иметь возможность mod_wsgi в режиме сервиса, надо использовать Apache 2.0 и 2.2, также соответствующие библиотеки Apache должны быть собраны с поддержкой потоков.
На Linux, если Apache устанавливается из репозитория, следует установить для него пакеты разработчика.
Для большинства дистрибутивов Linux, пакет разработчика для Apache 2.x называется apache2-dev, сам Apache находится в пакете apache2. Тем не менее, некоторые дистрибутивы различают пакеты разработчика по типу MPM, для которого они собраны. В таком случае, пакет может называться как apache2-worker-dev или apache2-prefork-dev. При использовании Apache 2.x не стоит устанавливать пакет apache-dev, так как он относится к Apache 1.3.
Можно использовать Python версий 2.3-2.5. Используемая версия Python должна быть собрана с поддержкой потоков.
На Linux, если Python устанавливается из репозитария, следует установить для него пакеты разработчика.
Желательно, чтобы Python был доступен в виде разделяемой библиотеки. Если это не ваш случай, то mod_wsgi будет требовать больше памяти и могут возникнуть конфликты с mod_python (если оба модуля будут загружены в одно время), что может привести к падению Apache.
Пример установки модуля на Ubuntu:
# wajig search mod_wsgi
libapache2-mod-wsgi - Python WSGI adapter module for Apache
# wajig install libapache2-mod-wsgi
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Предлагаемые пакеты:
apache2-mpm-worker apache2-mpm-event
НОВЫЕ пакеты, которые будут установлены:
libapache2-mod-wsgi
Необходимо скачать 113kБ архивов.
Получено:1 http://ru.archive.ubuntu.com intrepid/universe libapache2-mod-wsgi 2.3-1 [113kB]
Получено 113kБ за 1s (111kБ/c)
...
* Reloading web server config apache2
#
Создайте внутри вашего проекта каталог, а в каталоге файл
django.wsgi. Например, в моём случае это
будет так:
$ cd ~/development/cargo
$ mkdir apache
$ emacs apache/django.wsgi
Скопируйте нижеприведённый код в файл
django.wsgi:
import os, sys
# место, где лежит джанго
sys.path.append('/home/rad/devel/django-trunk/')
# место, где лежит проект
sys.path.append('/home/rad/devel/')
# файл конфигурации проекта
os.environ['DJANGO_SETTINGS_MODULE'] = 'cargo.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Вы создали интерфейс между Django и WSGI. Если после этого, вы начнёте получать сообщения об ошибках, допустим, что недоступен ваш проект или какой-то из его модулей, проверьте sys.path.
Откройте конфигурационный файл вашего сервер, например,
/etc/apache2/sites-available/cargo.caml.ru
и внесите в него изменения:
<VirtualHost *>
DocumentRoot /var/www-cargo/
ServerAdmin ruslаn.pоpоv@gmаil.cоm
ServerName cargo
WSGIScriptAlias / /home/rad/devel/cargo/apache/django.wsgi
WSGIDaemonProcess cargo processes=2 maximum-requests=5 threads=1
WSGIProcessGroup cargo
ErrorLog "|/usr/sbin/rotatelogs /var/log/apache2/cargo.error.%Y-%m-%d.log 86400"
CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/cargo.access.%Y-%m-%d.log 86400" combined
ServerSignature On
Alias /css/ "/home/rad/django/cargo/css/"
Alias /js/ "/home/rad/django/cargo/js/"
Alias /pics/ "/home/rad/django/cargo/pics/"
Alias /djangobook/pics/ "/home/rad/django/cargo/djangobook/pics/"
Alias /media/ "/home/rad/django/cargo/media/"
Alias /adminmedia/ "/home/rad/devel/django-trunk/django/contrib/admin/media/"
</VirtualHost>
Особое внимание надо уделить трём строкам, которые начинаются с WSGI.... Строка с WSGIScriptAlias ссылается на файл, который был создан ранее. Другие две строки необходимы в случае, когда вы размещаете на сервере несколько виртуальных сайтов.
Следует принять во внимание то, что директива WSGIDaemonProcess и соответствующие элементы не доступны под ОС MS Windows, а также при использовании Apache 1.3. Подробности...
А самое главное, это не забыть проверить, что в Apache подгружается mod_wsgi:
# ls -l /etc/apache2/mods-enabled/ | grep wsgi
lrwxrwxrwx 1 root root 27 2009-02-18 22:41 wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root root 27 2009-02-18 22:41 wsgi.load -> ../mods-available/wsgi.load
А что такое файл конфигурации проекта 'cargo.settings' ?