如何在主域名上部署Django应用程序,并在子域名上部署PHP应用程序?

4

我有一个Django应用程序托管在我的主域名(example.com)上,现在我需要在子域名(forum.example.com)上托管PHP应用程序。

在主域名的目录中,我有以下.htaccess条目:

SetHandler mod_python
PythonPath "/home/.../apps/example'] + sys.path"
PythonOption mod_python.importer.path "['/home/vlive/python']+ sys.path"
PythonHandler django.core.handlers.modpython

#PythonDebug On
SetEnv DJANGO_SETTINGS_MODULE example.settings
SetEnv PYTHON_EGG_CACHE /tmp/egg-cache

目前,当我加载子域名 (forum.example.com) 时,仍然会看到主站点 (example.com)。

我该如何解决这个问题?


1
要么我太困了,要么你的英语真的很糟糕。我无法清楚地理解你的问题。请考虑重新审视你的问题。 - Adam Arold
3个回答

1

选择错误的VirtualHost最常见的原因是缺少与VirtualHost指令中指定的主机/端口限定符匹配的NameVirtualHost指令。

您设置了哪个NameVirtualHost指令?两个VirtualHost配置的参数是什么?

一般的布局应该是:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>

<VirtualHost *:80>
ServerName forum.example.com
...
</VirtualHost>

虽然对于Linux Apache发行版而言,这些通常会在同一个文件中。

你用了什么?


1
您需要通过 VirtualHost 指令设置子域名,并且只在其中一个 VirtualHost 中添加 mod_python / mod_wsgi 处理程序。
您说您加载了子域名,但仍然显示主站点。 麻烦您展示一下 Apache 网站配置吗?

0

正如Graham所指出的那样,你很可能有错误的VirtualHost配置。

仔细检查是否有两个不同的VH,具有正确的ServerName,并且在ServerName和ServerAlias中不使用*(通配符),这可能会与子域名重叠或在其之后。Apache只搜索与第一个匹配的VH,因此如果您像*.example.com这样的东西放在任何其他子域名(例如forum.example.com)之上,则无法正常工作。

此外,django文档建议使用mod_wsgi,请考虑切换到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接