Apache使用mod_wsgi为我的django应用程序显示404错误

时间:2015-09-29 09:58:21

标签: python django apache

对于我的django应用程序(称为“iwidget”),我已创建(并使用a2ensite安装)此虚拟主机配置文件(001-default

WSGIPythonHome /home/user/.virtualenvs/iwidget

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        WSGIDaemonProcess iwidget processes=4 threads=10 display-name=%{GROUP} python-path=/home/user/.virtualenvs/iwidget/lib/python2.7
        WSGIProcessGroup iwidget

        WSGIScriptAlias /iwidget /home/user/iwidget/iwidget/wsgi.py
        Alias /iwidget/static/ /home/user/iwidget/iwidget/staticfiles/
<VirtualHost>

这是我的wsgi.py(在/home/user/iwidget/iwidget/目录中。)

import os, sys, site                                                   

site.addsitedir('/home/user/.virtualenvs/iwidget/lib/python2.7/site-packages')
activate_this = os.path.expanduser("/home/user/.virtualenvs/iwidget/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))                  

sys.path.append('/home/user/iwidget')                              
sys.path.append('/home/user/iwidget/iwidget')                      

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "iwidget.settings")   
from django.core.wsgi import get_wsgi_application                      
application = get_wsgi_application()     

但是,我收到此错误

[warn] mod_wsgi: Compiled for Python/2.7.2+.
[warn] mod_wsgi: Runtime using Python/2.7.3.
[notice] Apache/2.2.22 (Debian) mod_wsgi/3.3 Python/2.7.3 configured -- resuming normal operations
[error] File does not exist: /var/www/iwidget

/var/www/iwidget? Apache为什么要查看此目录?我做错了什么?

请注意。已经有一个default vhost配置指向工作正常。这是我的第二个(这就是我称之为001-default)的原因。

1 个答案:

答案 0 :(得分:2)

您有两个配置文件,但无法区分它们。 Apache会简单地将所有内容与原始内容进行匹配,因为它首先按字母顺序排列,并且永远不会出现在新内容中 - 因此它会查找/ var / www,因为显然DocumentRoot设置为001-default。

你真的需要将它放在一个单独的文件中吗?没有理由你不能在001-default中添加这个配置。否则,您需要将它们放在不同的端口上,或使用ServerName指令来区分它们。