所以我首先要解释一下我的目标。我有多个域名,我要将它们路由到我服务器上的一个简单 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.com
和foo2.com
。将相关<virtualhost *:80> ... </virtualhost>
部分放在各自的文件中。
接下来,使用命令启用每个站点a2ensite
,该命令在中创建指向该站点的符号链接/etc/apache2/sites-enabled
:
# a2ensite foo.com
# a2ensite foo2.com
我没有发现您的设置中有任何问题,但我怀疑您没有启用 wsgi 模块:
# a2enmod wsgi