如何让 Apache 将多个域路由到多个 Django 项目?

如何让 Apache 将多个域路由到多个 Django 项目?

所以我首先要解释一下我的目标。我有多个域名,我要将它们路由到我服务器上的一个简单 IP 地址。我希望 Apache 将每个域名路由到wsgi.py其 Django 项目中的相应文件。官方文档似乎是为处理每个服务器一个域名而编写的。如果你想查看它们,可以在这里找到文档。我还想指出,我并不想使用 Django 站点框架,因为它似乎不适合我的需要。

所以我将向你展示我一直在尝试的事情。我已将其放在sites-available/000-default.conf文件中。

<VirtualHost *:80>
    ServerName www.foo.com
    ServerAlias foo.com

    Alias /media/ /path/to/foo.com/media/
    Alias /static/ /path/to/foo.com/static/

    <Directory /path/to/foo.com/static>
        Require all granted
    </Directory>

    <Directory /path/to/foo.com/media>
        Require all granted
    </Directory>

    WSGIScriptAlias / /path/to/foo.com/foo/wsgi.py

    <Directory /path/to/foo.com/foo>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    ServerName www.foo2.com
    ServerAlias foo2.com

    Alias /media/ /path/to/foo2.com/media/
    Alias /static/ /path/to/foo2.com/static/

    <Directory /path/to/foo2.com/static>
        Require all granted
    </Directory>

    <Directory /path/to/foo2.com/media>
        Require all granted
    </Directory>

    WSGIScriptAlias / /path/to/foo2.com/foo/wsgi.py

    <Directory /path/to/foo2.com/foo2>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
</VirtualHost>

奇怪的是,两个网站都无法加载。我得到的只是 Apache,它只为我提供了一个空的文件索引页。请注意,我没有WSGIPythonPath /path/to/foo2.com/包含它。当我包含它时,我得到了一个错误。而且我并不完全确定它是否是必需的。

我也做过的事情。

  • 在文件中设置 ServerName apache2.conf
  • 修改wsgi.py文件来处理多个站点。
  • 我也尝试过在/etc/hosts文件中设置我的 IP。

基本上就是这些了。我搜索了整个互联网,但找不到任何最新的解决方案。如果您知道解决这个问题的方法,请告诉我。如果可能的话,请尝试在您的答案中包含代码。

我在装有 Python 2.7 的 Ubuntu Server 14.04 中运行它。

答案1

不要编辑000-default.conf。在 Ubuntu 中创建站点的正确方法是在目录中创建一个新文件,/etc/apache2/sites-available其中包含该特定站点的所有特殊内容。对于您的两个站点,您需要创建两个文件foo.comfoo2.com。将相关<virtualhost *:80> ... </virtualhost>部分放在各自的文件中。

接下来,使用命令启用每个站点a2ensite,该命令在中创建指向该站点的符号链接/etc/apache2/sites-enabled

# a2ensite foo.com
# a2ensite foo2.com

我没有发现您的设置中有任何问题,但我怀疑您没有启用 wsgi 模块:

# a2enmod wsgi

相关内容