Sto cercando di utilizzare un'applicazione Django sul mio computer Ubuntu locale. Tuttavia il sito non funziona e il mio /var/log/apache2/errors.log
è pieno di messaggi come questo:
ImportError: No module named site
Il mio /var/log/apache2/error.log
(per oggi) è simile al seguente:
$ 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
Questo è l'avviso che si è avviato quando ho acceso la mia macchina, seguito da 12.966 righe che recavano il no module named site
messaggio
notare la mancanza di un campo datetime. Questi errori si ripetono anche quando non si accede al sito Web (ovvero anche quando non si effettuano richieste Web). Quando si accede al sito Web in un browser, si blocca, come se stesse aspettando un download di grandi dimensioni.
impostazioni
Moduli Apache
Sto usando un virtualenv python 2.5 con molti pacchetti (incl. Django 1.1) installati con pip. Ho caricato 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
Uso "tix" come nome di dominio impostato su localhost in /etc/hosts
$ grep tix /etc/hosts
127.0.0.1 tix
Config Apache
Ecco la mia configurazione di Apache (puoi vedere alcuni tentativi per farlo funzionare, linee commentate ecc.) :
# 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>
caricatore wsgi
Ecco il mio loader.wsgi:
Avevo import site
in questo file, che pensavo potesse aver causato il problema, ma l'ho rimosso e gli errori continuano a presentarsi.
# 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)
Questa configurazione funzionava bene su Ubuntu 10.10, ma da quando ho eseguito l'aggiornamento a Ubuntu 11.04, ho riscontrato gli errori sopra.