мой django.wsgi
import os
import sys
sys.path.append('/var/www/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
os.environ['PYTHON_EGG_CACHE'] = '/var/www/django/myapp/.python-eggs'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
http.conf
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/default
ServerName localhost
WSGIScriptAlias /myapp /var/www/django/myapp/apache/django.wsgi
ErrorLog /var/www/django/myapp/logs/error_log
</VirtualHost>
Ошибка Apache говорит о следующем
Когда я перехожу на localhost / myapp, появляется ошибка сервера.
[Fri Jun 25 12:42:42 2010] [error] [client 127.0.0.1] File does not exist: /var/www/default/favicon.ico
[Fri Jun 25 12:42:45 2010] [error] [client 127.0.0.1] File does not exist: /var/www/default/favicon.ico
[Fri Jun 25 12:42:48 2010] [info] [client 127.0.0.1] mod_wsgi (pid=3585, process='', application='localhost|/myapp'): Loading WSGI script '/var/www/django/myapp/apache/django.wsgi'.
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] mod_wsgi (pid=3585): Target WSGI script '/var/www/django/myapp/apache/django.wsgi' cannot be loaded as Python module.
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] mod_wsgi (pid=3585): Exception occurred processing WSGI script '/var/www/django/myapp/apache/django.wsgi'.
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] File "/var/www/django/myapp/apache/django.wsgi", line 8, in <module>
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] import django.core.handlers.wsgi
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] File "/opt/python2.6/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 1, in <module>
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] from threading import Lock
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] File "/opt/python2.6/lib/python2.6/threading.py", line 13, in <module>
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] from functools import wraps
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] File "/opt/python2.6/lib/python2.6/functools.py", line 10, in <module>
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] from _functools import partial, reduce
[Fri Jun 25 12:42:48 2010] [error] [client 127.0.0.1] ImportError: /opt/python2.6/lib/python2.6/lib-dynload/_functools.so: failed to map segment from shared object: Permission denied
Вывод ldd:
linux-gate.so.1 => (0x0098c000)
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00423000)
libpthread.so.0 => /lib/libpthread.so.0 (0x005cd000)
libdl.so.2 => /lib/libdl.so.2 (0x00110000)
libutil.so.1 => /lib/libutil.so.1 (0x006d8000)
libm.so.6 => /lib/libm.so.6 (0x00778000)
libc.so.6 => /lib/libc.so.6 (0x00a46000)
/lib/ld-linux.so.2 (0x002e5000)
Я попробовал import sys, и сразу не было ошибок, единственная строка была
[Mon Jun 28 13:33:24 2010] [info] [client 127.0.0.1] mod_wsgi (pid=19384, process='', application='python.localhost|/application'): Loading WSGI script '/var/www/application/application.wsgi'.
Казалось бы, проблему можно решить, отключив SELinux, хотя не многие люди пошли бы на это. Другой - попытаться установить соответствующие разрешения и контексты для файлов, к которым осуществляется доступ (не спрашивайте меня!)
Вот (https://stackoverflow.com/questions/2685994/django-deploy-trouble) - парень, похоже, решил проблему, но я не проверял.
есть ли у вашего веб-сервера права на запись в /var/www/django/myapp/.python-eggs?
Какая платформа? Какая именно версия Python установлена для операционной системы? Какая точная версия Python установлена в /opt/python2.6? Что вы получаете, когда выполняете ldd mod_wsgi.so для установленного файла .so модуля mod_wsgi Apache? Вы случайно устанавливаете WSGIPythonHome в конфигурации?
В целом это выглядит так, как если бы вы выбирали общие библиотеки Python или устанавливали каталог Python lib для разных версий, и есть несовместимость.
Также вернитесь и получите сценарий WSGI hello world, работающий вместо Django, и когда это сработает, добавьте к нему:
import threading
так что вы можете увидеть, можете ли вы создать автономный тест, который можно использовать для исследования того, что происходит отдельно от Django.
Для примера hello world см:
http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
Наконец, на всякий случай убедитесь, что вы не загружаете mod_python в том же экземпляре Apache.