Ama*_*rus 8 python django wsgi mod-wsgi apache-2.2
我正在尝试在我的本地 ubuntu 机器上使用 django 应用程序。但是,该站点无法正常工作,并且我的站点中/var/log/apache2/errors.log
充满了如下消息:
ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)
我的/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
Run Code Online (Sandbox Code Playgroud)
这是当我打开机器时它启动的通知,然后是 12,966 行都在说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
Run Code Online (Sandbox Code Playgroud)
我使用“tix”作为设置为 localhost 的域名 /etc/hosts
$ grep tix /etc/hosts
127.0.0.1 tix
Run Code Online (Sandbox Code Playgroud)
这是我的 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>
Run Code Online (Sandbox Code Playgroud)
这是我的 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)
Run Code Online (Sandbox Code Playgroud)
此配置过去在 Ubuntu 10.10 上运行良好,但自从我升级到 Ubuntu 11.04 后,出现上述错误。
你的 mod_wsgi 是为 Python 2.7 编译的。然后您不能尝试将其指向 Python 2.5 虚拟环境。
此外,设置:
WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/
Run Code Online (Sandbox Code Playgroud)
即使它是 Python 2.7 虚拟环境,也指向错误的东西。
设置:
UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/
Run Code Online (Sandbox Code Playgroud)
也不会做任何事情,也不知道您从哪里想到可以做到这一点。
FWIW,可以在以下位置找到有关虚拟环境的 mod_wsgi 文档:
https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html
不过,这不会帮助你,因为你的 mod_wsgi 和 Python 安装似乎有一个更基本的问题。该问题可能是以下情况的变体:
你从哪里得到你正在使用的 mod_wsgi.so?
Python 2.7 安装在哪里?
您安装了哪些其他 Python 版本以及安装在何处?
归档时间: |
|
查看次数: |
43109 次 |
最近记录: |