Python / Django / WSGI / Apache - Nhập khẩuError: Không có mô-đun có tên trang web


8

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.logchứ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 sitethô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 sitetrong 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.

Câu trả lời:


6

Mod_wsgi của bạn đã được biên dịch cho Python 2.7. Sau đó, bạn không thể thử và trỏ nó vào môi trường ảo Python 2.5.

Ngoài ra, cài đặt:

WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/

đang chỉ ra điều sai ngay cả khi đó là môi trường ảo Python 2.7.

Các thiết lập:

UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/

sẽ không làm gì cả và không biết bạn lấy ý tưởng từ đâu.

FWIW, tài liệu mod_wsgi trên môi trường ảo có thể được tìm thấy tại:

https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-envirments.html

Điều này sẽ không giúp ích gì cho bạn vì dường như bạn có vấn đề cơ bản hơn với việc cài đặt mod_wsgi và Python của bạn để bắt đầu. Vấn đề có khả năng là một biến thể của:

https://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#multipl-python-versions

Bạn đã lấy mod_wsgi.so bạn đang sử dụng ở đâu?

Python 2.7 được cài đặt ở đâu?

Bạn đã cài đặt phiên bản Python nào khác và ở đâu?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.