3

我有一个网站,我目前正在使用 Django 逐个应用程序重写。服务器是红帽。运行 Apache 2。安装了 mod_wsgi。一切正常。惊人的。

如果我访问http://www.example.com/,我会访问预先存在的主站点(在 PHP 中)。

我有 mod_wsgi 运行和工作得很好。如果我访问http://www.example.com/django/,我会访问我的 Django 主页。

我有几个可以正常工作的应用程序:

所有反向 url 查找工作正常 - 一切都很好。

Apache 的 httpd.conf 中的全局条目是:

WSGIScriptAlias /django /path/to/django/mysite/mysite/apache/django.wsgi

但是,当我将它投入生产时,我不想让 /django 部分涉及到 url。

因此,对http://www.example.com/software的请求将运行 Django 软件应用程序。

对http://www.example.com/newsletter的请求将运行 Django newsletter 应用程序。

我还不能让http://www.example.com/重定向到根 Django wsgi 应用程序——这可能会在几个月后整个站点 Django 重写完成后发生。

那么,有什么想法可以让我的 Django 应用程序在当前设置中工作吗?

我是否必须为每个应用程序条目创建每个应用程序 wsgi 文件(例如:/path/to/django/mysite/mysite/apache/software.wsgi 和 /path/to/django/mysite/mysite/apache/newsletter.wsgi)在 httpd.conf 文件中?如:

WSGIScriptAlias /software /path/to/django/mysite/mysite/apache/software.wsgi
WSGIScriptAlias /newsletter /path/to/django/mysite/mysite/apache/newsletter.wsgi

我似乎找不到关于这种特定设置风格的那么多具体文档。大多数文档假设您使用一个主 wsgi 文件和 Django(通过 urls.py)来代理所有请求。我会喜欢这种情况,但现在这不可能发生。

这可能是我不得不争论的一些 Apache 指令功夫。如果是这种情况,请告诉我。

TIA。

4

2 回答 2

2

我了解到您正在为 www.example.com 上的所有内容逐个推出新内容。在另一个带有新子域的新 Apache 虚拟主机容器中设置整个 Django 项目怎么样new.example.com您可以从http://new.example.com访问根 Django 应用程序,从http://new.example.com/software等访问软件应用程序。对于主域 www.example.com,只需设置重定向:

www.example.com/django -> new.example.com
www.example.com/software -> new.example.com/software
www.example.com/newsletter -> new.example.com/newsletter

您可以在您抛出开关后在相同的 URL 结构上测试您的整个项目,并且抛出开关只是替换ServerName两个虚拟主机中的指令。

于 2012-09-07T15:29:59.443 回答
0

我有一个类似的问题,正好相反。我想用 php 安装替换 django 安装部分。

在 Apaches 虚拟主机配置中供站点使用

WSGIScriptAliasMatch ^(/(software|newsletter)) /path/to/django/mysite/mysite/apache/django.wsgi$1

代替

WSGIScriptAlias /software /path/to/django/mysite/mysite/apache/software.wsgi
WSGIScriptAlias /newsletter /path/to/django/mysite/mysite/apache/newsletter.wsgi

urls.py中让 django 相信,挂载点是根 url /,如下所示:

...
url(r'^software/', include('software.urls')),
url(r'^newsletter/', include('newsletter.urls')),
...

这样,当您完成站点并想要提供所有内容时,包括来自 django 的根 url,您只需将WSGIScriptAliasMatch条目替换为

WSGIScriptAlias / /path/to/django/mysite/mysite/apache/django.wsgi

就是这样。

查看这些问答以获取更多信息:

Django (wsgi) 和 Wordpress 在 Apache 虚拟主机中共存

重新配置 Apache 以从新的 php 源和旧 django 站点的特定子 URL 提供网站根目录

于 2015-11-20T07:31:41.323 回答