【问题标题】:Two separate django sites in WSGI (root and /two)WSGI 中的两个独立的 django 站点(root 和 /two)
【发布时间】:2014-06-17 03:58:30
【问题描述】:

经过几个小时的尝试,我决定放弃并向 SO 寻求帮助 :)

我有两个 Django 1.6 站点在 Debian 7 上的 Apache2 上运行。我有一个虚拟主机。

我希望虚拟主机的根域转到一个 django 站点(例如:mydomain.com),并为第二个站点设置一个单独的别名(例如:mydomain.com/two)。

我可以获得两个别名,如下所示:

    WSGIDaemonProcess test1 python-path=/usr/local/projects/project_one:/usr/local/virtualenvs/project/lib/python2.7/site-packages
    WSGIScriptAlias /one /usr/local/projects/project_one/project_one/wsgi.py
    <Location /one>
            WSGIProcessGroup test1
    </Location>

    WSGIDaemonProcess test2 python-path=/usr/local/projects/project_two:/usr/local/virtualenvs/project/lib/python2.7/site-packages
    WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py
    <Location /two>
            WSGIProcessGroup test2
    </Location>

如果我使用以下域,这将起作用:

http://mydomain.com/one/

http://mydomain.com/two/

但是如果我想使用root(mydomain.com)和另一个(mydomain.com/two),它就行不通了:

    WSGIDaemonProcess test1 python-path=/usr/local/projects/project_one:/usr/local/virtualenvs/project/lib/python2.7/site-packages
    WSGIScriptAlias / /usr/local/projects/project_one/project_one/wsgi.py
    <Location />
            WSGIProcessGroup test1
    </Location>

    WSGIDaemonProcess test2 python-path=/usr/local/projects/project_two:/usr/local/virtualenvs/project/lib/python2.7/site-packages
    WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py
    <Location /two>
            WSGIProcessGroup test2
    </Location>

我认为它不起作用,因为它试图使用站点 2 的 WSGI 文件运行站点 1: WSGI 脚本'/usr/local/projects/project_one/project/wsgi.py'。

我的问题是我如何才能进行第二次尝试,以便 mydomain.com 进入一个项目,而 mydomain.com/two 进入另一个项目......

我最初跟随 this 发布到我所在的位置,但找不到任何帮助我绕过这个障碍的东西。

感谢支持, 标记

【问题讨论】:

    标签: python django apache virtualhost


    【解决方案1】:

    尝试在 WSGIScriptAlias 指令中添加选项“process-group”和“application-group”:

    WSGIScriptAlias / /usr/local/projects/project_one/project_one/wsgi.py process-group=test1 application-group=%{GLOBAL}

    ...

    WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py process-group=test2 application-group=%{GLOBAL}

    【讨论】:

    • 这很好用,您是如何发现process-groupapplication-group 可以传递给WSGIScriptAlias 的? official mod_wsgi docs 中没有描述它们。在&lt;Location&gt; 中定义它们时,我遇到了与 OP 相同的问题。当AliasLocation 都针对/ 时,似乎存在问题。也许一些 Apache 优先规则?
    • 我想我在这里找到了它:blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.html Graham Dumpleton 博客上的帖子。
    • 您应该在 Google 上获得更高的排名!
    【解决方案2】:

    可能有点晚了,但是您可以更改这些 wsgi 的顺序,它应该可以正常工作(适用于我的两个 wsgi 烧瓶应用程序)。当您第一次使用 root 时,它只会将所有地址识别为根子域,并忽略第二个别名。 只需将 /two 设为您的第一个地址,然后再设为 root:

    WSGIDaemonProcess test2 python-path=/usr/local/projects/project_two:/usr/local/virtualenvs/project/lib/python2.7/site-packages
    WSGIScriptAlias /two /usr/local/projects/project_two/project_two/wsgi.py
    <Location /two>
            WSGIProcessGroup test2
    </Location>
    
    WSGIDaemonProcess test1 python-path=/usr/local/projects/project_one:/usr/local/virtualenvs/project/lib/python2.    7/site-packages
    WSGIScriptAlias / /usr/local/projects/project_one/project_one/wsgi.py
    <Location />
            WSGIProcessGroup test1
    </Location>
    

    也许有人会觉得它有帮助

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 2023-03-28
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2013-09-26
      • 1970-01-01
      相关资源
      最近更新 更多