2009-04-23 61 views
1

我正在一台服务器上运行Django,并设置了十几台虚拟主机。我放在一起的第一个Django站点效果很好,但我即将设置第二个站点。我是否需要运行第二个fastcgi进程?如何使用fastcgi在单个服务器上运行多个Django站点?

对于我跑FCGI这种方式,第一现场:

/home/django/app1/manage.py runfcgi protocol=fcgi host=127.0.0.1 port=8081 

nginx的配置域指向FCGI进程(fastcgi_pass 127.0.0.1:8081)。

对于第二个网站,我是否需要运行FCGI的另一个副本,在每个站点一个FCGI?:

/home/django/app2/manage/py runfcgi protocol=fcgi host=127.0.0.1 port=8082 

然后直接nginx的配置到该进程(fastcgi_pass 127.0.0.1: 8082)?

或者是否有某种方式来处理多个Django站点与单个fastcgi?是否有设置多Django服务器的最佳做法?

回答

2

这取决于你在网站上的意思,以及你的Django配置是什么样的。

每个Django settings.py定义了一个且只有一个数据库,并且只有一个urls.py树。

每个Django都有一个settings.py - 一个数据库 - 一个urls.py树。

如果每个站点都有独特的数据库,他们需要不同的settings.py,并且您需要一个独特的fastcgi实例。

如果所有站点都由单个数据库支持,并且只有一个settings.py,那么您可以将它们全部从单个fastcgi实例中挤出。

请注意,Django的urls.py处理程序大多会忽略请求中的url解析中的主机名和端口号。但是,如果您包含站点模型,则可以让虚拟主机名称成为请求处理的一部分。

+0

谢谢,这是非常有帮助的。 – 2009-04-23 15:10:02

0

对于它的价值,你可以用TCP开销做掉,并改为使用插座:

/home/django/app1/manage.py runfcgi协议= FCGI插座=/var/run中/ mysite.sock

套接字必须对Web服务器用户可读写。

相关问题