Django、modwsgi 和 apache 虚拟主机

Django、modwsgi 和 apache 虚拟主机

我已经让虚拟主机工作了,但是我的这个设置不知为何表现得很奇怪。

NameVirtualHost *

<VirtualHost *>
 ServerAdmin webmaster@localhost
 ServerName x.com

    WSGIPassAuthorization On
    WSGIScriptAlias / /var/x/production/x.wsgi

 ErrorLog /var/log/apache2/error.log

 LogLevel warn

 CustomLog /var/log/apache2/access.log combined
 ServerSignature On

</VirtualHost>

<VirtualHost *>
 ServerAdmin webmaster@localhost
 ServerName staging.x.com

    WSGIPassAuthorization On
    WSGIScriptAlias / /var/x/testing/x.wsgi

 ErrorLog /var/log/apache2/error.log

 LogLevel warn

 CustomLog /var/log/apache2/access.log combined
 ServerSignature On

</VirtualHost>

这是我的服务器上 /etc/apache2/sites-available 中的“默认”文件。

我有两个 .wsgi 文件指向同一站点的两个副本,其中设置文件已更改(主要是数据库从生产更改为暂存)。

但不知何故,这种设置不起作用。当 x.com 位于顶部时,x.com 和 staging.x.com 都使用相同的数据库。当我反转顺序时,两个域都指向 staging django 项目。

我很确定这不是 mod_wsgi 中的错误,但也许我没有正确使用 WSGIScriptAlias,也许我没有正确使用 apache 的 ServerName。

谢谢你的检查,我被难住了!

编辑:这是 apache2 -S 的输出

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:*                    is a NameVirtualHost
         default server x.com (/etc/apache2/sites-enabled/000-default:3)
         port * namevhost x.com (/etc/apache2/sites-enabled/000-default:3)
         port * namevhost staging.x.com (/etc/apache2/sites-enabled/000-default:19)
Syntax OK

这有帮助吗?抱歉,我对 serverfault 方面的事情很陌生。(通常做 stackoverflow 类型的工作。)

答案1

我通常使用:

名称虚拟主机 *:80

或者

名称虚拟主机 0.0.0.0:80

虚拟主机 0.0.0.0:80

您没有 ServerAlias 指令,因此,您能否发布以下结果:

Apache2-S

或者

httpd-S 服务

取决于你的分布

相关内容