【发布时间】:2011-04-14 23:46:11
【问题描述】:
我有一个基于 Django 的 CMS,它使用 Django 的站点框架和 Nginx/Apache/mod_wsgi 虚拟主机在不同域上运行多个网站。我们正在评估 Django 堆栈的其他选项,并让 CMS 在具有 Nginx 代理到 Gunicorn(特别是 gunicorn_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?
-
是的,我正在使用站点框架,每个站点都有一个
settings.py覆盖应用程序的全局settings.py。目前,我正在使用 Gunicorn 从其特定的settings.py运行一个站点。 -
您会覆盖哪种设置?也许您可以将其存储在也使用站点框架管理的表中? AFAIK gunicorn 没有虚拟主机支持。也许试试 uwsgi?
-
我们覆盖了各种设置,主要是网站的 ID,但有时也
INSTALLED_APPS添加自定义模块。我认为你是对的,uWSGI 可能是我更好的选择。今天早上我简要地研究了一下,虚拟主机的东西看起来像我想要的。干杯。