Tôi đang cố gắng sử dụng một ứng dụng django trên máy ubfox cục bộ của mình. Tuy nhiên, trang web không hoạt động và tôi /var/log/apache2/errors.log
chứa đầy những thông điệp như thế này:
ImportError: No module named site
Của tôi /var/log/apache2/error.log
(cho ngày hôm nay) trông như thế này:
$ 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
Đó là thông báo rằng nó khởi động khi tôi bật máy, theo sau là 12.966 dòng tất cả nói no module named site
thông báo
lưu ý việc thiếu trường datetime. Các lỗi này được lặp lại ngay cả khi không truy cập trang web (tức là ngay cả khi không thực hiện yêu cầu web). Khi truy cập trang web trong trình duyệt, nó chỉ bị treo, như thể đang chờ tải xuống lớn.
Cài đặt
Các mô-đun Apache
Tôi đang sử dụng một virtualenv python 2.5 với rất nhiều gói (bao gồm django 1.1) được cài đặt với pip. Tôi đã tải 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
Tôi sử dụng "tix" làm tên miền được đặt thành localhost trong /etc/hosts
$ grep tix /etc/hosts
127.0.0.1 tix
Cấu hình Apache
Đây là cấu hình apache của tôi (Bạn có thể thấy một số nỗ lực để làm cho nó hoạt động, các dòng nhận xét, v.v.) :
# 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>
bộ tải wsgi
Đây là loader.wsgi của tôi:
Tôi đã từng có import site
trong tập tin này, điều mà tôi nghĩ có thể đã gây ra sự cố, nhưng tôi đã xóa nó và các lỗi tiếp tục xuất hiện.
# 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)
Cấu hình này được sử dụng để hoạt động tốt trên Ubuntu 10.10, nhưng kể từ khi tôi nâng cấp lên Ubuntu 11.04, tôi gặp các lỗi ở trên.