在同一台机器上提供多个Django和PHP项目?

时间:2012-05-13 05:45:00

标签: django apache wsgi django-1.4

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

我目前正在使用mod WSGI为Apache提供来自Apache的PHP脚本。这是否也会导致效率下降?

或者警告是否仅适用于静态内容,因为在提供数百个文件时出现问题,而提供20-30个不同的PHP / Django项目是可以的?

2 个答案:

答案 0 :(得分:2)

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

另一个问题 - 与性能关系不大,而不是易用性/配置 - 决定了你是否真的想要在同一台服务器上运行所有东西。

对于一组较小的网站(以及一些php-legacy),我们使用一台机器和四台虚拟服务器:

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

nginx处理所有站点,代理应用程序服务器或提供静态内容(通过nas)。我喜欢这种设置,因为它非常易于安装和处理,并且如果需要,它可以很容易地缩小一件。卜

答案 1 :(得分: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守护程序模式来解决这个问题。