我应该使用哪种方法/框架来运行多个共享100%代码库的网站?这些站点应该共享一个数据库(但站点不共享数据。它们恰好使用相同的数据库来存储数据),但模板稍有不同,静态文件略有不同,媒体文件完全不同。
我正在考虑一种方法,我可以使用基本模板和基本静态文件,可以使用特定于站点的模板/静态文件覆盖这些文件。
我可以用什么方法来完成以这种方式运行多个站点的任务?同样重要的是:什么是合理的目录结构?
答案 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
导入所有设置。现在,您可以使用:
DJANGO_SETTINGS_MODULE=path.to.settings_site1 python path/to/manage.py . . .