Кажется, у меня проблема с развертыванием 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