mod_wsgi 是否覆盖 Apache 上的虚拟主机?

mod_wsgi 是否覆盖 Apache 上的虚拟主机?

我的 linode(Fedora 15)上托管了一个可以运行的 Django 应用程序,并且我还尝试在那里托管一个基于 php 的站点。我使用基于名称的虚拟主机根据主机名重定向请求,但出于某种原因,每个请求都会发送到 Django 应用程序。我在想,也许 mod_wsgi 覆盖了一些默认值?或者我的虚拟主机可能存在语法错误(我尝试过带引号和不带引号的 DocumentRoot)?以下是我的 httpd 配置文件的相关部分:

Name VirtualHost *:80
<VirtualHost *:80>
ServerName pollvaultr.com
ServerAlias www.pollvaultr.com

WSGIDaemonProcess pollvaultr.com user=apache group=apache
WSGIProcessGroup pollvaultr.com

WSGIScriptAlias / "/var/www/html/PollVaultr/wsgi.py"

Alias /static/ "/var/www/html/static/"

<Directory "/var/www/html/static">
    Order allow,deny
    Allow from all
</Directory>

<Directory "/var/www/html/PollVaultr">
    <Files "wsgi.py">
    Order allow,deny
    Allow from all
    </Files>
</Directory>

</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/catfacts/"
    ServerName lexiross.com
    ServerAlias www.lexiross.com
</VirtualHost>

这是我的 wsgi.py 脚本:

import os, sys

sys.path.append('/var/www/html')
sys.path.append('/var/www/html/PollVaultr')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PollVaultr.settings")

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

运行后httpd -e DEBUG未发现任何错误。这是我的 error_log 文件的结尾:

[Fri Feb 24 20:36:42 2012] [info] mod_wsgi (pid=5893): Create interpreter 'lexiross.com|'.
[Fri Feb 24 20:36:42 2012] [info] mod_wsgi (pid=5893): Adding '/var/www/html/' to path.
[Fri Feb 24 20:36:42 2012] [info] [client 140.247.248.217] mod_wsgi (pid=5893, process='', application='lexiross.com|'): Loading WSGI script '/var/www/html/PollVaultr/wsgi.py'.

有什么想法可能发生了什么吗?mod_wsgi 绝对不应该处理对 lexiross.com 的请求 - 为什么这些请求不会发送到备用文档根目录?我还应该提到,这是我第一次做系统管理员的工作,所以我对此很陌生!谢谢。

答案1

如果您没有正确设置第二个虚拟主机,或者没有找到它,那么 Apache 将回退到将请求发送到它在配置中找到的第一个虚拟主机。

虚拟主机在同一个文件中,还是在不同的文件中?如果在不同的文件中,并且位于 sites-available 目录中,您是否实际启用了第二个站点,以便链接到 sites-enabled?

尝试在第二个虚拟主机中添加语法错误以确保文件正在被读取。

另外,请修复示例中的“NameVirtualHost”指令,除非这是您的问题。其中不应有空格。

相关内容