Назад | Перейти на главную страницу

Проблема с развертыванием приложения django на mod_wsgi

Кажется, у меня проблема с развертыванием django с помощью mod_wsgi. Раньше я использовал mod_python, но хочу внести изменения. Я использовал здесь заметки Грэма Дамплтона http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango1, но это все равно не работает. Я получаю внутреннюю ошибку сервера.

django.wsgi file:

import os
import sys

sys.path.append('/var/www/html')
sys.path.append('/var/www/html/c2duo_crm')

os.environ['DJANGO_SETTINGS_MODULE'] = 'c2duo_crm.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

WSGIScriptAlias / /var/www/html/c2duo_crm/apache/django.wsgi

Apache httpd file:

<Directory /var/www/html/c2duo_crm/apache>
Order allow,deny
Allow from all
</Directory>

В моем журнале ошибок apache говорится, что у меня есть эта ошибка. Это еще не все, но у меня есть самая важная часть:

[Errno 13] Permission denied: '/.python-eggs'
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] The Python egg cache directory is currently set to:
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]   /.python-eggs
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] Perhaps your account does not have write access to this directory?  You can
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] change the cache directory by setting the PYTHON_EGG_CACHE environment
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] variable to point to an accessible directory.

Это может быть проблема с разрешениями SELInux. Это RedHat Linux или вариант RedHat (например, CentOS или Scientific Linux)? В таком случае вам может потребоваться либо отключить SELinux (обычно не рекомендуется), либо установить контекст файла каталога. Debian (и его варианты) по умолчанию отключают SELinux, но в RedHat и CentOS он включен по умолчанию.

Для любого файла / каталога, который вы читаете / пишете, вы можете использовать эту команду для изменения контекста файла:

sudo chcon system_u: object_r: httpd_sys_rw_content_t: s0 (имя папки загрузки)

Эта публикация, которую я дал на основании моего опыта компиляции / установки mod_wsgi, может быть полезна:

Получение скомпилированного модуля Python mod_wsgi, работающего на сервере Apache с принудительным режимом SElinux. Сообщите мне, поможет ли что-нибудь из этого.

Вы можете установить для этого переменную WSGI. В вашей конфигурации Apache:

WSGIPythonEggs /var/tmp

Это то же самое, что и установка PYTHON_EGG_CACHE переменная окружения, которая, как указано в ответе topdog, работает только с mod_python.

Установите это в своей конфигурации apache

SetEnv PYTHON_EGG_CACHE /var/tmp