Я пытаюсь использовать приложение django на своем локальном компьютере с Ubuntu. Однако сайт не работает и мои /var/log/apache2/errors.log
заполняется такими сообщениями:
ImportError: No module named site
Мой /var/log/apache2/error.log
(на сегодня) выглядит так:
$ cat error.log | uniq -c
1 [Wed Jun 29 09:37:37 2011] [notice] Apache/2.2.17 (Ubuntu) mod_wsgi/3.3 Python/2.7.1+ configured -- resuming normal operations
12966 ImportError: No module named site
Это уведомление, которое запустилось, когда я включил свою машину, за которым следуют 12966 строк, в которых говорится no module named site
сообщение
обратите внимание на отсутствие поля даты и времени. Эти ошибки повторяются, даже если вы не заходите на веб-сайт (т.е. даже когда не делаете веб-запросы). При переходе на сайт в браузере он просто зависает, как будто ждет большой загрузки.
Я использую python 2.5 virtualenv с множеством пакетов (включая django 1.1), установленных с помощью pip. У меня загружен mod_wsgi:
$ ls -l /etc/apache2/mods-enabled/wsgi*
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.load -> ../mods-available/wsgi.load
Я использую "tix" в качестве доменного имени, для которого установлено значение localhost в /etc/hosts
$ grep tix /etc/hosts
127.0.0.1 tix
Вот моя конфигурация apache (Вы можете увидеть некоторые попытки заставить его работать, строки комментариев и т. Д.):
# mod-wsgi enabled virtual host
WSGISocketPrefix /home/rory/tix/tix_wsgi/tmp
WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/
UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/
#WSGIPythonEggs /home/rory/svn/tix/tmp/python-eggs
<VirtualHost 127.0.0.1:80>
ServerName tix
Alias /media /home/rory/tix/tix/media
Alias /selenium /home/rory/tix/tix/tests/selenium
<Directory /home/rory/tix/tix/media>
SetHandler None
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess tix user=tix_wsgi group=tix_wsgi processes=4 threads=1 python-path=/home/rory/tix/virtualenv2.5/lib/python2.5/site-packages
WSGIScriptAlias / /home/rory/tix/tix/apache/loader.wsgi
WSGIProcessGroup tix
CustomLog /var/log/apache2/tix_access.log combined
ErrorLog /var/log/apache2/tix_error.log
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
</Location>
<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^media.tix$ [NC]
RewriteRule .? http://tix/media%{REQUEST_URI} [R=301,L]
</IfModule>
</VirtualHost>
Вот мой loader.wsgi:
Раньше, у меня был import site
в этом файле, который, как я думал, мог вызвать проблему, но я удалил его, и ошибки продолжают появляться.
# loader.wsgi - WSGI adapter for tix django project
# The python paste wrapper catches apache 500 errors (Internal Server Errors) and gives debug output
# See http://pythonpaste.org/modules/exceptions.html
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'tix.settings.base'
from paste.exceptions.errormiddleware import ErrorMiddleware
import django.core.handlers.wsgi
tixette = django.core.handlers.wsgi.WSGIHandler()
application = ErrorMiddleware(tixette, debug=True, error_email='operator@example.com', error_subject_prefix='Alert: wsgi loader python paste: ', error_log='/tix/1.0/logs/paste.log', show_exceptions_in_wsgi_errors=False)
Эта конфигурация обычно отлично работала в Ubuntu 10.10, но, поскольку я обновился до Ubuntu 11.04, я получаю указанные выше ошибки.
Ваш mod_wsgi был скомпилирован для Python 2.7. Затем вы не можете попытаться указать его на виртуальную среду Python 2.5.
Также настройка:
WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/
указывает не на то, даже если это была виртуальная среда Python 2.7.
Настройки:
UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/
тоже ничего не будет делать и не знаю, откуда вы взяли, что это можно сделать.
FWIW, документацию mod_wsgi по виртуальным средам можно найти по адресу:
https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html
Это не поможет вам, потому что, похоже, у вас с самого начала возникла более серьезная проблема с установками mod_wsgi и Python. Проблема может быть в следующем:
Откуда вы взяли mod_wsgi.so, которым пользуетесь?
Где установлен Python 2.7?
Какие еще версии Python у вас установлены и где?