FastCGI 具體做什麼(對於 Ruby、Java 和 Python)?

FastCGI 具體做什麼(對於 Ruby、Java 和 Python)?

如果我有一台運行 Apache 的伺服器,並且安裝了 FastCGI,那麼我可以執行 Ruby 和 Python 腳本嗎?如果伺服器上已經安裝了 Python,我是否可以將 .py 新增至 httpd.conf 檔案中的 CGI 部分以使 Python 腳本正常運作?

對於Ruby和Java,如果安裝了Ruby和Java,是否就不再需要Mongrel和Tomcat了?

除非我遺漏了什麼,否則 FastCGI 似乎只能讓你做你已經可以做的事情。

答案1

FastCGI 是「標準」CGI 腳本的替代品。

在老式 CGI 中,Web 伺服器將啟動您的腳本,向其發送請求,等待回應,然後期望您的腳本終止。

FastCGI 的主要特點是你的腳本不會死掉,而是掛起,等待另一個請求。這使得它更加高效,因為不會創建另一個進程,不會重新加載可能解釋的腳本等。

缺點是必須編寫腳本來處理此類事情。這並不難。

因此,FastCGI 的目的是減少服務請求的影響。

如果您使用 Ruby on Rails(不僅僅是 ruby​​),那麼請查看 Phusion Passenger。它是一款很棒的伺服器插件,可以讓 Ruby on Rails 運行得非常好。

至於mod_python,你當然可以這麼做。然而,這也是需要權衡的。首先,CGI 腳本可以作為主 Web 伺服器以外的另一個使用者執行。我不知道 mod_python 是否這樣做。能夠以不同用戶身份運行來解決權限問題、透過在不同用戶上運行來保持應用程式分離等可能非常有用。

因此,以稍微不同的方式回答您的問題,如果您願意使用 mod_python 和 Phusion Passenger,那麼您不需要使用 FastCGI。如果您必須在與伺服器不同的進程中執行腳本,那麼您希望盡可能使用 FastCGI,而不是普通的舊式 CGI。

答案2

FastCGI是CGI的最佳化版本。它與CGI的介面相匹配,增加了分散式計算。

您可以透過 CGI 運行 python 腳本(cgitb 模組很有幫助),但出於效能和功能原因,通常最好使用 mod_python 等框架。 Ruby 和 Java 的情況也類似。

我不確定你想做什麼。您不能只用 FastCGI 取代 Mongrel 或 Tomcat。他們是完全不同的野獸。您必須重寫應用程式以適應網頁伺服器的介面。

相關內容