【问题标题】:How do I run more than one Django site on a single server using fastcgi?如何使用 fastcgi 在一台服务器上运行多个 Django 站点?
【发布时间】:2010-10-21 06:04:57
【问题描述】:

我在设置了十几个虚拟主机的服务器上运行 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 nginx fastcgi


    【解决方案1】:

    这取决于您所说的站点是什么意思,以及您的 Django 配置是什么样的。

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

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

    如果每个站点都有不同的数据库,它们需要不同的 settings.py,而您需要不同的 fastcgi 实例。

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

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

    【讨论】:

    • 谢谢,很有帮助。
    【解决方案2】:

    您可以消除 tcp 开销并改用套接字:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-05
      • 2021-11-09
      • 2014-07-28
      • 2014-11-23
      • 2012-03-22
      • 2023-02-06
      • 2015-06-21
      • 2011-11-25
      相关资源
      最近更新 更多