对于我的 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 为什么要在这个目录中查找?我做错了什么?
注意。已经有一个运行良好的默认虚拟主机配置指向。这是我的第二个(这就是为什么我将其称为 001-default
)。
最佳答案
您有两个配置文件,但无法区分它们。 Apache 将简单地将所有内容与原始内容进行匹配,因为它是按字母顺序排列的第一个,并且永远不会找到新的 - 这就是为什么它在/var/www 中查找,因为这显然是 001-default 中设置的 DocumentRoot。
您真的需要将其放在单独的文件中吗?您没有理由不能在 001-default 中添加此配置。否则,您需要将它们放在单独的端口上,或者使用 ServerName 指令来区分它们。
关于python - Apache 在我的 django 应用程序中使用 mod_wsgi 显示 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32841071/