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

Django多个站点:相同的代码库、相同的数据库,但模板和静态文件略有不同,django,Django,我应该使用什么方法/框架来运行共享100%代码库的多个网站?这些站点都应该共享一个数据库(但这些站点不共享数据。它们只是碰巧使用同一个数据库来存储数据),但具有稍有不同的模板、稍有不同的静态文件和完全不同的媒体文件 我正在考虑一种方法,在这种方法中,我可以使用站点特定的模板/静态文件覆盖基本模板和基本静态文件 我可以使用什么方法来完成以这种方式运行多个站点的任务?同样重要的是:什么是合理的目录结构?理论上,如果您有两个不同的设置文件,您可以重复使用同一个应用服务器。我通常建议每个应用服务器完全隔

我应该使用什么方法/框架来运行共享100%代码库的多个网站?这些站点都应该共享一个数据库(但这些站点不共享数据。它们只是碰巧使用同一个数据库来存储数据),但具有稍有不同的模板、稍有不同的静态文件和完全不同的媒体文件

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


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

理论上,如果您有两个不同的
设置
文件,您可以重复使用同一个应用服务器。我通常建议每个应用服务器完全隔离一个站点,但如何管理则取决于您。在一台服务器上,您可以使用以下布局:

将公共代码基放在bwlow或类似的位置

/home/gunicorn/app_name/common_code_base
但是,您需要两个在不同端口上运行的gunicorn实例来服务于两个不同的站点,因此您需要两个单独的gunicorn配置文件(每个DJANGO_设置_模块一个)。然后,您将使用两个单独的nginx站点配置,每个配置前面都有一个单独的gunicorn实例。比如:

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

要拥有单独的设置文件,可以将公共设置放在名为
common.py
的文件中,并将site1特定的设置放在
settings\u site1.py
中,将site2特定的设置放在
settings\u site2.py
中。在这两个文件的顶部,放置

from .common import *
common.py
导入所有设置。现在,您可以通过以下方式使用site1设置:

DJANGO_SETTINGS_MODULE=path.to.settings_site1 python path/to/manage.py . . .

理论上,如果您有两个不同的
设置
文件,您可以重复使用同一个应用服务器。我通常建议每个应用服务器完全隔离一个站点,但如何管理则取决于您。在一台服务器上,您可以使用以下布局:

将公共代码基放在bwlow或类似的位置

/home/gunicorn/app_name/common_code_base
但是,您需要两个在不同端口上运行的gunicorn实例来服务于两个不同的站点,因此您需要两个单独的gunicorn配置文件(每个DJANGO_设置_模块一个)。然后,您将使用两个单独的nginx站点配置,每个配置前面都有一个单独的gunicorn实例。比如:

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

要拥有单独的设置文件,可以将公共设置放在名为
common.py
的文件中,并将site1特定的设置放在
settings\u site1.py
中,将site2特定的设置放在
settings\u site2.py
中。在这两个文件的顶部,放置

from .common import *
common.py
导入所有设置。现在,您可以通过以下方式使用site1设置:

DJANGO_SETTINGS_MODULE=path.to.settings_site1 python path/to/manage.py . . .

如何在同一项目下设置两个设置文件?一个名为
settings\u site1.py
,另一个名为
settings\u site2.py
。然后,您可以通过在环境中设置DJANGO_SETTINGS_模块来使用manage.py,这对开发很好。但是在生产中呢?服务器如何知道要读取哪个设置文件?通过在gunicorn()环境中设置DJANGO_settings_模块。如何在同一项目下设置两个设置文件?一个名为
settings_site1.py
,另一个名为
settings_site2.py
。然后,您可以通过在环境中设置DJANGO_SETTINGS_模块来使用manage.py,这对开发很好。但是在生产中呢?服务器如何知道要读取哪个设置文件?通过在gunicorn()环境中设置DJANGO_settings_模块。