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

如何使用fastcgi在一台服务器上运行多个Django站点?,django,nginx,fastcgi,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副本,就

我在一台服务器上运行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服务器的最佳实践?

这取决于您所指的站点以及Django配置的外观

每个Django settings.py定义一个且仅一个数据库、一个且仅一个URL.py树

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

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

如果所有站点都由一个数据库支持,并且只有一个settings.py,那么您可以从一个fastcgi实例中压缩它们


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

为了节省成本,您可以取消tcp开销,改用套接字:

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


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

谢谢,这非常有用。