|
Table of contents
|
Источники: http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide, http://ericholscher.com/blog/2008/jul/8/setting-django-and-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 #
Создайте внутри вашего проекта каталог, а в каталоге файл
$ cd ~/development/cargo $ mkdir apache $ emacs apache/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.
Откройте конфигурационный файл вашего сервер, например,
<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
|
Found misprint?
Select it with the mouse and hit Enter
-
Processed:
33
1
199
25
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
We are glad to hear your questions, comments or suggestions!
(Open in new tab)
Users number: 601
Русская группа
Ускорить процесс перевода!
ЯМ:41001223475816
|
| © 2008-2012 Ruslan Popov @ gmail.com | Powered by Django 1.2.5 |