1. 程式人生 > >Apache web伺服器和tomcat的關係

Apache web伺服器和tomcat的關係

百度百科上,可以看到web伺服器有apache和tomcat等多種。
那麼apache和tomcat是什麼關係呢?

apache是web伺服器,tomcat是應用(java)伺服器,它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴充套件,但是可以獨立於apache執行。 換句話說,apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),而這個桶也可以不放在卡車上。

Apache 和 Tomcat 都是web網路伺服器,兩者既有聯絡又有區別,在進行HTML、PHP、JSP、Perl等開發過程中,需要準確掌握其各自特點,選擇最佳的伺服器配置。

Apache是web伺服器(靜態解析,如HTML),tomcat是java應用伺服器(動態解析,如JSP)  
Tomcat只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴充套件,但是可以獨立於apache執行
同為伺服器,Tomcat的特別之處在於它還是Java的Web容器,能夠處理JSP;而Apache一般是與PHP結合,並不能處理JSP。

兩者從以下幾點可以比較的:

1、兩者都是apache組織開發的   
2、兩者都有HTTP服務的功能   
3、兩者都是開源免費的

聯絡

1)Apache是普通伺服器,本身只支援html即普通網頁,可以通過外掛支援php,還可以與Tomcat連通(Apache單向連線Tomcat,就是說通過Apache可以訪問Tomcat資源,反之不然)。    
2)Apache只支援靜態網頁,但像Jsp動態網頁就需要Tomcat來處理。  
3)Apache和Tomcat整合使用:    
如果客戶端請求的是靜態頁面,則只需要Apache伺服器響應請求;    
如果客戶端請求動態頁面,則是Tomcat伺服器響應請求,將解析的JSP等網頁程式碼解析後回傳給Apache伺服器,再經Apache返回給瀏覽器端。    
這是因為jsp是伺服器端解釋程式碼的,Tomcat只做動態程式碼解析,Apache回傳解析好的靜態程式碼,Apache+Tomcat這樣整合就可以減少Tomcat的服務開銷。  
4)Apache和Tomcat是獨立的,在同一臺伺服器上可以整合。

區別

Apache是有C語言實現的,支援各種特性和模組從而來擴充套件核心功能;Tomcat是Java編寫的,更好的支援Servlet和JSP。  
1、Apache是Web伺服器,Web伺服器傳送(serves)頁面使瀏覽器可以瀏覽,Web伺服器專門處理HTTP請求(request),但是應用程式伺服器是通過很多協議來為應用程式提供 (serves)商業邏輯(business logic)。  
Tomcat是執行在Apache上的應用伺服器,應用程式伺服器提供的是客戶端應用程式可以呼叫(call)的方法 (methods)。它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是Apache的擴充套件,但是可以獨立於apache執行。  
2、Apache是普通伺服器,本身只支援html靜態普通網頁。不過可以通過外掛支援PHP,還可以與Tomcat連通(單向Apache連線Tomcat,就是說通過Apache可以訪問Tomcat資源,反之不然),Tomcat是jsp/servlet容器,同時也支援HTML、JSP、ASP、PHP、CGI等,其中CGI需要一些手動除錯,不過很容易的。  
3、Apache側重於http server,Tomcat側重於servlet引擎,如果以standalone方式執行,功能上Tomcat與apache等效支援JSP,但對靜態網頁不太理想。  
4、Apache可以執行一年不重啟,穩定性非常好,而Tomcat則不見得。  
5、首選web伺服器是Apache,但Apache解析不了的jsp、servlet才用tomcat。  6、Apache是很最開始的頁面解析服務,tomcat是後研發出來的,從本質上來說tomcat的功能完全可以替代Apache,但Apache畢竟是tomcat的前輩級人物,並且市場上也有不少人還在用Apache,所以Apache還會繼續存在,不會被取代,apache不能解析java的東西,但解析html速度快。

兩者例子:

Apache是一輛車,上面可以裝一些東西如html等,但是不能裝水,要裝水必須要有容器(桶),而這個桶也可以不放在卡車上,那這個桶就是TOMCAT。

兩者整合:

Apache是一個web伺服器環境程式,啟用他可以作為web伺服器使用不過只支援靜態網頁,不支援動態網頁,如asp、jsp、php、cgi  
如果要在Apache環境下執行jsp就需要一個直譯器來執行jsp網頁,而這個jsp直譯器就是Tomcat  
那為什麼還要JDK呢?因為jsp需要連線資料庫的話就要jdk來提供連線資料庫的驅程,所以要執行jsp的web伺服器平臺就需要APACHE+TOMCAT+JDK

整合的好處:

如果客戶端請求的是靜態頁面,則只需要Apache伺服器響應請求  如果客戶端請求動態頁面,則是Tomcat伺服器響應請求  
因為jsp是伺服器端解釋程式碼的,這樣整合就可以減少Tomcat的服務開銷