Django多个站点:相同的代码库、相同的数据库,但模板和静态文件略有不同
我应该使用什么方法/框架来运行共享100%代码库的多个网站?这些站点都应该共享一个数据库(但这些站点不共享数据。它们只是碰巧使用同一个数据库来存储数据),但具有稍有不同的模板、稍有不同的静态文件和完全不同的媒体文件 我正在考虑一种方法,在这种方法中,我可以使用站点特定的模板/静态文件覆盖基本模板和基本静态文件Django多个站点:相同的代码库、相同的数据库,但模板和静态文件略有不同,django,Django,我应该使用什么方法/框架来运行共享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_模块。