我有一個基於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