Django多个站点:相同的代码库,相同的数据库,但模板和静态文件略有不同

时间:2016-12-18 19:31:10

标签: django

我应该使用哪种方法/框架来运行多个共享100%代码库的网站?这些站点应该共享一个数据库(但站点不共享数据。它们恰好使用相同的数据库来存储数据),但模板稍有不同,静态文件略有不同,媒体文件完全不同。

我正在考虑一种方法,我可以使用基本模板和基本静态文件,可以使用特定于站点的模板/静态文件覆盖这些文件。

我可以用什么方法来完成以这种方式运行多个站点的任务?同样重要的是:什么是合理的目录结构?

1 个答案:

答案 0 :(得分:0)

理论上,如果您有两个不同的settings文件,则可以重复使用相同的应用服务器。我通常建议每个应用服务器使用一个站点进行完全隔离,但是由您决定如何管理。在一台服务器上,这是一个可以使用的布局:

将公共代码库放在bwlow或类似的东西上。

/home/gunicorn/app_name/common_code_base

但是,您需要在不同的端口上运行多个gunicorn实例来为两个不同的站点提供服务,因此您需要两个独立的gunicorn配置文件(每个DJANGO_SETTINGS_MODULE一个)。然后,您将使用两个单独的nginx站点配置,每个配置都面向一个单独的gunicorn实例。类似的东西:

                   / gunicorn (site1) \                            database(site1)
                  /                    \                         /
nginx (site1 & site2)                   ---- common code base ---
                  \                    /                         \
                   \ gunicorn (site2) /                           database (site2)

要拥有单独的设置文件,请将常用设置放在名为common.py的文件中,并将特定于site1的设置放在settings_site1.py和特定于site2的settings_site2.py设置中。在这两个文件的顶部,输入

from .common import *

common.py导入所有设置。现在,您可以使用:

来使用site1设置
DJANGO_SETTINGS_MODULE=path.to.settings_site1 python path/to/manage.py . . .