2010-03-28 42 views
12

我最近學會了Python。我喜歡它。我只是想用它來進行網頁開發。這個想法引起了所有的麻煩。但我喜歡這些煩惱:)mod_cgi,mod_fastcgi,mod_scgi,mod_wsgi,mod_python,FLUP。我不知道還有多少。什麼是mod_php等效?

來自PHP世界,只有一種方式標準化。我期望相同,並尋找蟒蛇&阿帕奇。

Setting up Python on Windows/ Apache?

遠離從mod_python的。一個常見的 誤導性的想法是,mod_python是 像mod_php,但爲python。那是 不正確。

那麼python中的mod_php相當於什麼?

我需要在這一個How Python web frameworks, WSGI and CGI fit together

CGI,FastCGI的和SCGI澄清一下是語言無關。你可以用Perl,Python,C,bash甚至Assembly編寫CGI腳本:)。所以,我猜mod_cgimod_fastcgi,mod_scgi是他們對應的apache模塊。對?

WSGI是一種優化/改進的插件,其高效版本僅專門爲python語言設計。爲了使用這個mod_wsgi是一個方法。對?

這留下mod_python。之後怎麼樣了?

阿帕奇 - >的mod_fastcgi - > FLUP(通過CGI協議) - >的Django(經由WSGI協議) Flup是另一種方式與WSGI任何網絡服務器,可以說FCGI,SCGI或AJP

運行

什麼是FLUP?什麼是AJP? Django是怎麼來的?

這些問題引發了關於PHP的問題。它是如何運行的?它使用什麼技術? mod_php & mod_python有什麼區別?

在未來,如果我想使用Perl或Java,那麼我會再次感到困惑嗎?請有人可以清楚地解釋事情,並給出一個完整圖片。

回答

2

mod_python是最喜歡mod_php在哪呢確實(即它試圖做所有事情)。這不一定是好事,我不建議今天將應用程序寫入本機mod_python接口。

WSGI是某種優化/ inshort專門爲蟒蛇

的差異WSGI是Python語言本身定義設計了一個有效的版本改進:它指定了對象和值代碼會收到。 [S | Fast] CGI更關心線上的字節。

通過將應用程序寫入WSGI標準(直接或使用支持它的框架),您可以解決應用程序編寫和部署的問題。

爲了使用這個mod_wsgi是一種方法。對?

這是去一個方式,肯定爲Apache用戶一個不錯的選擇,但遠不是唯一的一個。寫入WSGI,您可以部署在廣泛的環境中,包括[S | Fast] CGI和mod_python。

6

Python世界中沒有與mod_php完全等價的東西。

  • FastCGI,SCGI和AJP以單獨的進程(守護進程)身份運行Web應用程序,並在Web服務器和它之間傳遞消息。
  • mod_python用於在任何請求階段將Python代碼嵌入到httpd進程中。
  • mod_wsgi可以在守護進程或嵌入模式下運行Python代碼。
  • CGI是每次發出請求時都運行腳本/程序的協議。
  • FLUP是一組適配器,可用於將其中一個接口轉換爲另一個接口。
4

mod_python是最接近的mod_php的等價物,但這並不意味着mod_python將滿足您的需求。對於每種編程語言,你必須列舉所有可能的選項並選擇你需要的選項。

對於PHP,你有mod_php和mod_cgi,但是從這兩個mod_cgi幾乎在所有方面都比mod_php差,所以人們通常會選擇後者。 (如果你需要更多的安全性,還有一些選擇,比如suphp)

對於Python你有mod_cgi,它會在你每次發出請求時運行python解釋器。 Mod_python改爲嵌入了python,所以它通常更快,更簡單,但對於大型項目或使用框架的項目(如DJango),您可能需要使用mod_wsgi,因爲它對資源最爲友好。

對於紅寶石,你也可以選擇使用mod_cgi,但這會太慢。 mod_ruby也是一個選項,但只適用於小程序。 mod_fastcgi通常是rails/merb和其他基於ruby的web框架的選項,但是它們被mod_rails和mod_rack取代,這些對源代碼友好。但對於簡單的腳本,後者有點太重。

對於單聲道(asp.net)你有mod_mono,這通常是唯一的選擇。

對於java,您通常運行單獨的Tomcat/Jetty Web服務器,並使用mod_proxy。

當然,運行一個單獨的web服務器並使用mod_proxy通常是所有web框架的一個選項,儘管它大多隻適用於開發過程。對於生產環境,你必須carefuly選擇最佳選項(其中一個是主要是資源型)的框架(Django的,鐵軌,asp.net等)需要

10

將Python應用程序部署到Web的標準方式是通過WSGI。現在沒有理由使用其他任何東西。

mod_wsgi是支持WSGI的Apache模塊。其他Web服務器的WSGI模塊將具有不同的名稱。

+1

+1謝謝。這是對「使用哪一個?」的簡短回答。 – claws 2010-03-28 11:06:35

相關問題