使用Django创建多个网站

7
让我们假设我有两个网站foo.com和bar.com。它们都在同一台服务器上,现在运行独立的Django实例和Apache来提供服务。当然,每个Django实例都会占用内存。
虽然这些网站主要是相同的系统,但加载了不同的应用程序——也许可以以某种方式运行一个Django实例,并有多个站点使用它?那么在特定情况下,我将为一个实例节省内存。
是否可以有不同的站点与它们的url.py文件、已加载的应用程序等?如果这样做是正确的方法?
任何提示、想法都是受欢迎的。
谢谢, 伊格纳斯

你已经调查过这个网站框架了吗?https://docs.djangoproject.com/en/dev/ref/contrib/sites/ - Jordan
有点想知道大家会提出什么建议,这样我就能知道该走哪个方向了。谢谢! - Ignas Butėnas
3个回答

1

是的,绝对可以使用不同的urls.py和共享应用程序来创建不同的站点。 我曾经需要在多个站点之间共享后端数据。我只需创建2个wsgi配置文件和2个设置文件。这些站点非常相似,不需要两个单独的项目。这使我能够在多个站点之间使用一个Django项目和后端。但我不确定这是否符合您的要求...


听起来你仍然为每个Django站点运行一个单独的服务器进程。而且Django通常强制多个应用程序共享同一个数据库(或者使其变得有些困难)。问题是,你是否可以让完全独立的Django项目使用不同的settings.py和不同的数据库,同时利用在一个进程中运行的同一实例的Django? - Mark
这也是个好回答,但是确实很想知道是否可能为每个项目单独拥有独立的数据库。不过我开始对此表示怀疑:) 对于几乎相同的项目,我认为这里提到的解决方案应该能够很好地运作。 - Ignas Butėnas

1
今天我自己对同一主题进行的研究得出结论,您很可能只需要一个settings.py来管理Django实例/进程。唯一的问题是只有一个MEDIA_URL和一个MEDIA_ROOT,这意味着所有项目媒体都必须位于同一位置。实际上,Django 1.3有一个新的静态文件处理过程,它只需遍历您各个应用程序的所有媒体并将它们放在一个位置,因为由于某种原因它要求这样做。如果您使用早期版本,我想您可以手动完成。

https://docs.djangoproject.com/en/dev/howto/static-files/


1

uWSGI 可以从一个实例中服务更多的应用程序。

请参阅 uWSGI 示例虚拟主机模式 中的 "在一个 uWSGI 实例中为两个 virtualenv 中的两个 Pinax 站点提供服务"。


是的,如果有什么东西在这里能够成功的话,那就是uwsgi。这是我使用的,它非常灵活且功能丰富。 - Jordan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接