|
Оглавление
|
Источники: 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
|
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
1049
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |