我已经让虚拟主机工作了,但是我的这个设置不知为何表现得很奇怪。
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 服务
取决于你的分布