2012-02-23 113 views
27

如果我給出一個包含Java Web應用程序war文件,我想在本地運行的戰爭,然後做我只需要一個Tomcat,還是我需要Tomcat的的Apache httpd的(或其他任何Web服務器)?提前致謝!Tomcat是否需要Apache httpd?

回答

39

Tomcat是它自己的網絡服務器,所以像Apache的一個單獨的Web服務器不是必需的。你可能會想,雖然改變Tomcat的端口,因爲它默認爲8080,網站通常是在端口80

我認爲,人們一般把阿帕奇在Tomcat的面前,使他們能夠做這樣的事情:

  • 有一個網站後面有幾個Tomcat實例。
  • 從Apache提供靜態文件以卸載Tomcat。
  • 使用您可能需要的其他Apache功能(模塊)。
  • 正如評論@TacticalCoder提到,你需要以root爲偵聽端口80,因此有些人可能會使用Apache作爲一種簡單的方法來代理的80端口到端口8080

我會推薦使用YAGNI的方法,並直接使用Tomcat,直到/除非您在其前面找到希望使用Apache的原因。

+0

Ahhh - Tomcat *是Web服務器,我猜「Catalina」是servlet處理器/容器? – IAmYourFaja 2012-02-23 18:50:52

+0

@AdamTannon - 是的,[Catalina](http://en.wikipedia.org/wiki/Apache_Tomcat#Catalina)是servlet容器。 – 2012-02-23 18:54:44

+6

@Bredan Long:*「您可能會希望通過」* [原文如此]更改Tomcat的端口......有一點需要注意,例如,在Un * x操作系統上,您無法在端口80/443上偵聽, 。但將Java/Tomcat安裝爲* root *並不一定是一種好的做法:在Linux上,您可以安裝Java而不需要* root *。您也可以安裝Tomcat,而不需要* root *。然後,以root身份,您可以使用防火牆(*例如* iptables)將端口80/443透明地重定向到8080/4443(例如)。通常認爲這比將Tomcat作爲* root *並直接在端口80/443上偵聽更「安全」。 – TacticalCoder 2012-02-23 19:12:13

5

Just Tomcat。 HTTPD從來不是Tomcat的必需條件。

+0

如果Tomcat不需要HTTPD,那麼tomcat中的哪個進程將處理傳入的服務器請求?你能解釋一下嗎?謝謝。 – 2014-02-11 16:14:22

+0

@KanagaveluSugumar Tomcat在端口8080上運行默認HTTP服務器(因此,設置端口重定向以偵聽到達HTTP端口80的請求或在URL請求中指定端口8080)。 此外,在提供的server.xml文件中,您將看到以下元素: <! - Normal HTTP - > <參數名稱= 「端口」 值 = 「8080」/> 要設置在前面的Apache HTTP服務器的tomcat服務器,在server.xml中註釋這個條目。 – sactiw 2015-03-31 16:58:55

+0

@sactiw謝謝! – 2015-04-01 05:19:08

0

你只需要一個Tomcat或任何其他Java servlet容器(碼頭,樹脂等)。

0

Tomcat是一個servlet容器,它有自己的http服務器,所以如果你想運行一個war,你只需要一個tomcat,但是如果你想運行一個只包含靜態文件的網站(html,js,css ),你應該更好地選擇apache,即使tomcat可以這樣做: