多个django项目,mod_wsgi,单域

时间:2010-05-12 18:16:26

标签: django mod-wsgi

我有两个不同的Django“项目”,我想使用mod_wsgi在单个域上运行。使用mod_python,我相信有一种方法可以做到这一点,其中某些url路径将映射到一个Django项目,而其他路径映射到另一个项目,所有这些都在服务器级别。

是否可以使用mod_wsgi执行此操作,如果可以,如何执行此操作?

我考虑过的事情:Apache虚拟主机描述中包含的内容,application.wsgi文件中的内容等等。但我还没弄清楚具体如何做到这一点。

谢谢!

2 个答案:

答案 0 :(得分:8)

这应该不复杂。这只是设置WSGIScriptAlias指令的问题 - 您需要其中两个,每个路径一个,每个指向一个包含项目设置的单独.wsgi文件。

答案 1 :(得分:7)

我也在使用Apache,我正在使用一个域运行多个Django项目。你只需要做两件事:

  1. 修改虚拟主机文件

    由于我使用的是Debian,我为每个托管的域名都有一个vhost文件。在您的vhost文件中,您应该有多个vhost部分。每个项目一个。在这些部分中,您可以定义WSGIScriptAlias。

    <VirtualHost *:80>
      ...
     WSGIScriptAlias / /path/to/project1.wsgi
     ...
    </VirtualHost>
    
    <VirtualHost *:80>
      ...
      WSGIScriptAlias / /path/to/project2.wsgi
      ...
    </VirtualHost>
    

    当然,您必须添加所有其他必要信息。项目1和项目2肯定会有不同的子域名。例如 project1.yourdomain.com project2.yourdomain.com

  2. 编写* .wsgi文件

    编写和存储* .wsgi文件的方法有很多种。我不知道任何最佳做法。在我的情况下,我将它们存储在我的项目文件夹中。

    这是一个例子:

    import os
    import sys
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    sys.path.append('/path/to/your/project')
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()
    

    我见过很多其他* .wsgi文件,带有更多“魔力”。但这应该让你开始。你可以在互联网上找到很多例子。

  3. 希望能回答你的问题。不要害怕提出更多问题。