Apache+tomcat的整合
為什么要做這個整合呢?當然,首先想到是就是Apache和Tomcat的區別。正因為有區別,有各自的優缺點才需要整合,取二者所長,棄二者所短。
Apache和Tomcat都可以在他們的官網下載: http://www.apache.org
那么首先就來說下Apache和Tomcat的區別:
Apache只是一個Web服務器,可以作為獨立的web服務器來運行,不過只支持靜態網頁,如(asp,php,cgi,jsp)等動態網頁的就顯得無能為力。
Tomcat也可以作為獨立的web服務器來運行。但Tomcat也是應用(java)服務器,它只是一個Servlet容器。
由于Apache解釋靜態頁面要比tomcat快速而且穩定,?基于以上原因,一個現實的網站使用一個Apache作為Web服務器,為網站的靜態頁面請求提供服務;
并使用Tomcat服務器作為一個Servlet/JSP插件,顯示網站的動態頁面;
Apache+Tomcat整合的好處:
1. Apache主要用來解析靜態文本,如html,tomcat雖然也有此功能,但apache能大大提高效率,對于并發數較大的企業級應用,能更好的顯示apache的高效率;
2. Tomcat用來解析jsp,servlet等,所有的客戶請求首先會發送到Apache,如果請求是靜態文本則由apache解析,并把結果返回給客戶端,如果是動態的請求,如jsp,apache會把解析工作交給tomcat,由tomcat進行解析(這首先要兩者現實整合),tomcat解析完成后,結果仍是通過apache返回給客戶端,這樣就可以達到分工合作,實現負載均衡,提高系統的性能!而且因為JSP是服務器端解釋代碼的,這樣整合可以減少Tomcat的服務開銷。
Apache+Tomcat整合的原理
作為Apache下面的子項目,Tomcat 與 Apache之間有著天然的聯系。在實際操作中,主要是Apache作為主服務器運行,當監聽到有jsp或者servlet的請求時,將請求轉發給tomcat服務器,由tomcat服務器進行解析后,發回apache,再由apache發回用戶。
在tomcat中有兩個監聽的端口,一個是8080用于提供web服務,一個是8009用于監聽來自于apache的請求。當apache收到jsp或者servlet請求時,就向tomcat 的8009端口發送請求,交由tomcat處理后,再返回給apache,由apache返回給客戶。
Apache+Tomcat整合的步驟(結合我自己的情況,為大家解說一下整合的過程。)
1.準備工作:
- 下載Apache (我下載的是apache-2.2.21):(http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21-win32-src.zip)
- 下載Tomcat (我下載的是tomcat-6.0) : (http://labs.renren.com/apache-mirror/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.zip)
- 下載JDK (我下載的是JDK5.0): (http://download.oracle.com/otn-pub/java/jdk/1.5.0_21//jdk-1_5_0_21-windows-i586-p.exe)
- 下載windows版本的mod_jk connector,這個是鏈接apache和tomcat的橋。是Apache接受到jsp或servlet時能將請求轉發到tomcat。提別需要注意的是,下載的JK需要和你的apache版本相符合。請到?http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/?下載和自己apache版本符合的JK.。
2.軟件的安裝
軟件的安裝順序可以適當調整,但是JDK(JRE)一定要在Tomcat之前安裝。安裝JK:把 mod_jk.so 拷貝到 D:\Program Files\Apache2.2\modules 下(這是我的Apache安裝目錄)。至于其他軟件的安裝過程我便省略了。
3.服務器的配置
- 配置Tomcat:
set?CATALINA_BASE = D:\Program Files\tomcat
set?CATALINA_HOME = D:\Program Files\tomcat
set?CLASSPATH = %CLASSPATH?%;%CATALINA_HOME%\lib\servlet-api.jar
? 2)?在tomcat的conf目錄下建一個workers.properties的文本文件,添加如下配置
#讓mod_jk模塊知道Tomcat的安裝路徑?
workers.tomcat_home=D:\tools\apache-tomcat-6.0.32
#讓mod_jk模塊知道jre的位置
workers.java_home=C:\Program Files\Java\jre1.5.0_18
ps=\
#模塊版本,這里是關鍵,名字要和httpd.conf的一致。如果這里改了httpd.conf也要改。
worker.list=ajp13
#工作端口,tomcat的jk監聽端口,可以查看Server.xml中有port="8009"?
worker.ajp13.port=8009?
#Tomcat所在機器,如果安裝在與apache不同的機器則需要設置IP
worker.ajp13.host=localhost
#通訊協議類型,好像不能改,會出問題?
worker.ajp13.type=ajp13?
#負載平衡因子
worker.ajp13.lbfactor=1
? ? ? ? ? ?3)tomcat的conf目錄下,修改文件server.xml。配置在<host></host>中間加入以下語句以修改其默認的目錄:
<Context path="" docBase="E:\wwwroot" reloadable="true" crossContext="true"/>
- 配置Apache:打開D:\Program Files\Apache2.2\conf下的httpd.conf。
#此處mod_jk的文件為你下載的文件
LoadModule jk_module modules/mod_jk.so
#指定tomcat監聽配置文件地址
? ? JkWorkersFile "D:\tools\apache-tomcat-6.0.32\conf\workers.properties"
#指定日志存放位置;以及日志級別
JkLogFile "D:\tools\apache-tomcat-6.0.32\logs\mod_jk2.log"?
JkLogLevel info
#add mod_jk(tomcat) end
#讓Apache支持對servlet傳送,用以Tomcat解析
JkMount /servlet/* ajp13?
#讓Apache支持對jsp傳送,用以Tomcat解析
JkMount /*.jsp ajp13?
#讓Apache支持對.do傳送,用以Tomcat解析
JkMount /*.do ajp13?
? ? ? ? ? ? ? ?2)此外需要修改文件中的相關配置。(可以在文件中找到原有的配置)
?#站點項目所在路徑,應與tomcat中的目錄設置相同,據說以上兩個必須同時設置才可以生效,沒有試過不同的時候會有什么情況
ServerName localhost
DocumentRoot "E:/wwwroot"
<Directory "E:/wwwroot">
DirectoryIndex index.html index.htm index.jsp
? 4.修改完所有的配置,那么現在可以重新啟動Apache和Tomcat.
在地址欄中分別輸入http://localhost/,與http://localhost:8080/若結果相同,Apache與Tomcat整合成功
希望此文能夠對大家有所幫助。
============================補充的說明============================
經常可以使用“Apache負載均衡+Tomcat集群”的模式來提高系統整體性能。1 Apache 做為 HttpServer ,后面連接多個 tomcat 應用實例,并進行負載均衡。
2為系統設定 Session 超時時間,包括 Apache 和 tomcat
3為系統屏蔽文件列表,包括 Apache 和 tomcat
注:本例程以一臺機器為例子,即同一臺機器上裝一個apache和4個Tomcat。
Apache在前面最為http轉發的“關口”,然后將訪問負載均衡到后面的Tomcat服務器集群,這樣就實現了負載均衡。
加之客戶端緩存(Cookie)和服務器端緩存(Session)。然后注意一些其他編程習慣和算法的應用。你的Web系統的整體性能就會得到比較好的保障。
總結
以上是生活随笔為你收集整理的Apache+tomcat的整合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下select, poll和e
- 下一篇: mongodb,redis,mysql