我有一个基于Django的CMS,它使用Django的站点框架和Nginx/Apache/mod_wsgi虚拟主机在不同的域上运行多个网站。我们正在评估Django堆栈的其他选项,并让CMS运行一个单个站点,并在一个新的服务器上使用Nginx代理到Gunicorn(具体而言,gunicorn_django)。通过Gunicorn/Nginx使用Django的站点框架运行多个站点
尽管这对单个站点很有用,但我不确定如何为多个站点配置Gunicorn。问题是,与Apache/mod_wsgi的,我们可以为mod_wsgi的设置DJANGO_SETTINGS_MODULE
到相应站点settings.py
import os, sys
def inflight(filename):
"""
Calculate absolute path to the folder containing "myfile.wsgi", then
append to the PYTHONPATH.
"""
ROOT = ('/').join(os.path.abspath(os.path.dirname(filename)).split('/')[0:-1])
sys.path.append(ROOT)
sys.path.append(os.path.join(ROOT, 'website'))
sys.stdout = sys.stderr
# Each website should have a settings file: /www/mysite.com/website/settings.py
os.environ['DJANGO_SETTINGS_MODULE'] = 'website.settings'
import django.core.handlers.wsgi
return django.core.handlers.wsgi.WSGIHandler()
当时我在想,我必须有Gunicorn的不同实例,为每个虚拟主机站点的时刻我们运行,但似乎矫枉过正,我们得到的大多数网站的流量。
有没有人用Django的网站框架运行Gunicorn,并可以给出一个提示如何配置?
您是否在使用网站框架?你需要为你托管的每个站点创建settings.py吗? – 2010-09-21 08:25:59
是的,我使用网站框架,每个网站都有一个'settings.py',它覆盖了应用程序的全局'settings.py'。目前,我正在通过其特定的'settings.py'与Gunicorn运行一个站点。 – 2010-09-21 13:58:25
你重写的一种设置?也许你可以将它存储在也由网站框架管理的表格中? AFAIK gunicorn没有一种虚拟主机支持。也许尝试uwsgi? – 2010-09-21 17:33:02