2012-05-13 44 views
0

該文檔指出,不應該在Django項目所在的同一臺機器上服務器上的靜態文件,因爲靜態內容會將Django應用程序踢出內存。這個問題是否也來自在一臺服務器上有多個Django項目?我應該把我所有的網站項目整合到一個非常大的Django項目中嗎?在同一臺機器上提供多個Django和PHP項目?

我目前正在服從Django以及來自Apache的mod腳本,使用mod WSGI。這是否也會導致效率損失?

或者只是靜態內容的警告,因爲服務數百個文件時出現問題,而服務20-30個不同的PHP/Django項目是好的?

回答

2

我會說這個設置完全沒問題。當然,這取決於硬件,負載和其他項目。但在這裏,您可以嘗試並監控使用情況/性能。
對靜態文件使用不同服務器的建議很有意義,因爲它對於資源更有效。但只要一臺服務器表現得夠好,我就沒有理由再使用第二臺服務器。

另一個問題 - 如果你真的想在同一臺服務器上運行所有的東西,那麼這個問題的決定就是決定性能,而不是簡單的使用/配置。

對於一個設置了一堆小網站的(並且還有一些PHP遺留),我們使用一個機四個虛擬服務器:

  • webhead運行nginx的(和清漆)
  • 數據庫
  • 簡單的Apache2/PHP服務器
  • Django的服務器使用gunicorn + supervisord

nginx的處理所有的網站,EI其代理應用程序服務器或提供靜態內容(通過nas)。我喜歡這種設置,因爲它非常易於安裝和操作,並且可以根據需要輕鬆擴展一件。 Bu

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守護程序模式解決該問題。

相關問題