0

该文档指出,不应将静态文件与 Django 项目放在同一台机器上,因为静态内容会将 Django 应用程序踢出内存。这个问题是否也来自在一台服务器上拥有多个 Django 项目?我应该将我所有的网站项目合并到一个非常大的 Django 项目中吗?

我目前正在为 Django 以及来自 Apache 的带有 mod WSGI 的 php 脚本提供服务。这是否也会导致效率损失?

或者警告只是针对静态内容,因为在提供数百个文件时会出现问题,同时提供 20-30 个不同的 PHP / Django 项目是可以的?

4

2 回答 2

2

我会说这个设置完全没问题。当然,这取决于硬件、负载和其他项目。但是在这里您可以尝试监控使用/性能。
对静态文件使用不同服务器的建议很有意义,因为它对资源更有效。但只要一台服务器性能足够好,我就没有理由使用第二台服务器。

另一个问题 - 与性能的关系比与易用性/配置的关系更小 - 是您是否真的想在同一台服务器上运行所有东西的决定。

对于具有一堆较小站点(以及一些 php-legacy)的设置,我们使用一台具有四个虚拟服务器的机器:

  • 运行 nginx(和清漆)的 webhead
  • 数据库
  • 简单的 apache2/php 服务器
  • 使用 gunicorn + supervisord 的 django 服务器

nginx 处理所有站点,代理到应用程序服务器或提供静态内容(通过 nas)。我喜欢这种设置,因为它很容易安装和处理,而且如果需要,它可以很容易地扩展一个部分。卜

于 2012-05-13T11:33:39.640 回答
0

如果文档说“”“不应在与 Django 项目相同的机器上提供静态文件,因为静态内容会将 Django 应用程序踢出内存”“”那么文档非常具有误导性,并且可以说是完全错误的。

如果在同一系统上使用 PHP,我会提出的一个建议是,确保您使用 mod_wsgi 守护进程模式来运行 Python Web 应用程序,甚至每个 Python Web 应用程序都有一个守护进程。

不要在嵌入式模式下运行 Python Web 应用程序,因为这意味着您正在与 mod_php 相同的进程中运行东西,并且因为包含扩展的 PHP 并不是真正的多线程安全,这意味着您必须运行 prefork MPM。在运行 prefork MPM 时运行嵌入在 Apache 中的 Python Web 应用程序是一个坏主意,除非您非常了解如何为它正确设置 Apache。不要正确设置 Apache,您会遇到如下所述的问题:

http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html

简而言之,PHP 和 Python 的 Apache 配置需要完全不同。不过,您可以通过对 Python Web 应用程序使用 mod_wsgi 守护程序模式来解决这个问题。

于 2012-05-13T23:57:03.540 回答