如何使用fastcgi在单个服务器上运行多个Django站点?

时间:2009-04-23 00:00:22

标签: django nginx fastcgi

我在一台设有十几个虚拟主机的服务器上运行Django。我放在一起的第一个Django网站效果很好,但我准备建立第二个网站。我需要运行第二个fastcgi进程吗?

对于第一个网站,我用这种方式运行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)?

或者有没有办法用一个fastcgi来处理多个Django站点?是否有设置多Django服务器的最佳实践?

2 个答案:

答案 0 :(得分:2)

这取决于您对网站的意思,以及您的Django配置的外观。

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

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

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

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

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

答案 1 :(得分:0)

对于它的价值,您可以取消tcp开销并改为使用套接字:

/home/django/app1/manage.py runfcgi protocol = fcgi socket = / var / run / mysite.sock

套接字必须对于网络服务器用户是可读写的。