Ich versuche, eine Django-Anwendung auf meinem lokalen Ubuntu-Computer zu verwenden. Die Seite funktioniert jedoch nicht und meine /var/log/apache2/errors.log
ist mit folgenden Nachrichten gefüllt:
ImportError: No module named site
Mein /var/log/apache2/error.log
(für heute) sieht so aus:
$ 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
Das ist der Hinweis, dass es gestartet wurde, als ich meinen Computer einschaltete, gefolgt von 12.966 Zeilen, die alle die no module named site
Nachricht sagten
Beachten Sie das Fehlen eines Datums- / Uhrzeitfelds. Diese Fehler wiederholen sich auch dann, wenn Sie nicht auf die Website gehen (dh auch wenn Sie keine Webanfragen stellen). Wenn Sie in einem Browser auf die Website gehen, bleibt sie einfach hängen, als würde sie auf einen großen Download warten.
die Einstellungen
Apache-Module
Ich verwende eine Python 2.5 Virtualenv mit vielen Paketen (inkl. Django 1.1), die mit pip installiert sind. Ich habe mod_wsgi geladen:
$ 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
Ich verwende "tix" als Domainnamen, der auf localhost in gesetzt ist /etc/hosts
$ grep tix /etc/hosts
127.0.0.1 tix
Apache Konfiguration
Hier ist meine Apache-Konfiguration (Sie können einige Versuche sehen, es zum Laufen zu bringen, kommentierte Zeilen usw.) :
# 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>
wsgi loader
Hier ist mein loader.wsgi:
Früher hatte ich import site
diese Datei, von der ich dachte, dass sie das Problem verursacht haben könnte, aber ich habe sie entfernt und die Fehler treten immer wieder auf.
# 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)
Diese Konfiguration funktionierte unter Ubuntu 10.10 einwandfrei, aber seit ich auf Ubuntu 11.04 aktualisiert habe, werden die oben genannten Fehler angezeigt.