(一) 為什么要把iis、tomcat整合到一起?
假如你遇到這種情況,你開發(fā)了一個javaweb項(xiàng)目要部署到服務(wù)器上,但是這個服務(wù)器上已經(jīng)部署了asp、asp.net或者php項(xiàng)目都在iis環(huán)境下運(yùn)行著,這時你的tomcat就不能再用80這個端口了,這時你就必須考慮整合iis與tomcat一起工作。網(wǎng)上收集了很多關(guān)于tomcat與iis整合的文章,多數(shù)寫的含糊不清,疏忽每一個細(xì)節(jié)都很難整合成功,經(jīng)過分析實(shí)踐,我決定花費(fèi)一點(diǎn)時間把這個總結(jié)分享出來,希望對用的到的朋友能有所幫助。
(二) 下面介紹我整合成功的軟件環(huán)境:
ü 服務(wù)平臺 window server 2003
ü iis6.0(大多服務(wù)器上默認(rèn)都已經(jīng)安裝過了)
ü apache-tomcat-7.0.29.exe(建議到官網(wǎng)下載,我這里是安裝版的)
ü jdk-7u1-windows-7.0.exe(建議到官網(wǎng)下載)
ü isapi_redirect-1.2.14.exe(我這里采用的是安裝版的,非安裝版的需要手都編寫配置文件和手動配置注冊表,其原理都是一樣,為了避免出錯、方便建議采用安裝版的)
(三) 軟件安裝是安裝順序是非常有必要的,下面是軟件安裝的先后順序:
iis6.0 => jdk => tomcat => isapi_redirect,你可以按照這個順序也可以不按照,但是順序的前提是:iis一定要優(yōu)先于isapi_redirect 否則isapi_redirect安裝會找不到iis導(dǎo)致配置不正確,jdk一定要優(yōu)先于tomcat 否則安裝tomcat會找不到j(luò)re導(dǎo)致無法安裝。另外jdk也最好優(yōu)先于isapi_redirect。
jdk環(huán)境變量的設(shè)置:
使用鼠標(biāo)右擊“我的電腦”->屬性->高級->環(huán)境變量
系統(tǒng)變量->新建->變量名:java_home 變量值:c:\program files\java\jdk1.7.0_01
系統(tǒng)變量->新建->變量名:classpath 變量值:.;%java_home%\lib
系統(tǒng)變量->編輯->變量名:path 在變量值的最前面加上:%java_home%\bin;
classpath中有一英文句號“.”后跟一個分號,表示當(dāng)前路徑的意思
tomcat環(huán)境變量的設(shè)置:
使用鼠標(biāo)右擊“我的電腦”->屬性->高級->環(huán)境變量
系統(tǒng)變量->新建->變量名:tomcat_home 變量值:d:\program files\apache software foundation\tomcat 7.0
(四) 驗(yàn)證軟件安裝是否正確:
ü 驗(yàn)證isapi_redirect是否安裝正確:isapi_redirect的安裝目錄可以自己定義,網(wǎng)上說必須要安裝在tomcat跟目錄,這個沒必要。
安裝完畢isapi_redirect后你會發(fā)現(xiàn)iis默認(rèn)網(wǎng)站下會出現(xiàn)一個虛擬目錄jakarta
右擊虛擬目錄jakarta 查看屬性
是否存在jakarta的篩選器。至于向上的綠色箭頭可能沒有(網(wǎng)上很多都指出要求由此,實(shí)際上只有配置之后首次訪問的時候,才進(jìn)行加載)只要不是紅色就可以。 到次為之說明您的isapi_redirect安裝正確。
ü 驗(yàn)證jdk是否環(huán)境變量配置是否正確,開始=》運(yùn)行=》輸入cmd =》輸入java命令或者javac或者java –version是否出現(xiàn)相應(yīng)命令的結(jié)果,如果有則說明jdk配置正確
ü 驗(yàn)證tomcat是否安裝正確:瀏覽器中輸入http://localhost:8080 是否出現(xiàn)
如果出現(xiàn)這個頁面則說明tomcat安裝正確;
注意:檢查tomcat安裝目錄下的lib目錄是否包含tools.jar文件,如果沒有到j(luò)dk中復(fù)制一個到tomcat的lib目錄下,tools.jar這個文件至關(guān)重要,否則isapi_redirect就不能正常的工作。
ü 驗(yàn)證iis是否工作正常 瀏覽器中輸入 http://localhost 是否出現(xiàn)
如果出現(xiàn)則說明iis工作正常
以上驗(yàn)證都沒有出現(xiàn)問題的話,那么我們的準(zhǔn)備工作就完成了。下面我們就進(jìn)行相應(yīng)的配置工作。
(五) tomcat的配置:
在tomcat的配置主要是配置虛目錄,打開tomcat的server.xml文件,加入
<host name="test.jb51.net" appbase="d:\webroot" uppackwars="true"
xmlvalidation="false" xmlnamespaceaware="false">
<context path="" docbase="d:\webroot" debug="0" reloadable="true"/>
</host>
name:對應(yīng)的是你項(xiàng)目的域名;
appbase:虛擬目錄的路徑;
dobase:項(xiàng)目的頂級目錄就相當(dāng)于webapps 中的目錄名稱;
配置完成后記得把你的項(xiàng)目復(fù)制到d:\webroot目錄下,我的項(xiàng)目是ecshoping
注意:tomcat的端口為默認(rèn)端口8080不要修改
為了驗(yàn)證你的虛擬目錄配置是否正確,打開瀏覽器輸入:test.jb51.net:8080 看看是否可以訪問你的項(xiàng)目,如果可以則說明你的項(xiàng)目在tomcat中的部署是正確的。
注意:如果防火墻開啟了,注意在防火墻的例外里添加端口:8080 保證該端口對外開放。另外要保證你的域名解析正確
(六) iis配置:
ü 新建網(wǎng)站,名稱隨意
【網(wǎng)站ip地址】:(全部未分配)
【此網(wǎng)站的主機(jī)頭】:域名(同tomcat\conf\server.xml <host>標(biāo)簽的"name"屬性中的域名相同)
【網(wǎng)站主目錄路徑】:虛擬路徑+文件夾名(tomcat\conf\server.xml<host>標(biāo)簽的"appbase"屬性中的虛擬路徑 加上<context>子標(biāo)簽的"docbase"屬性的文件夾名) 勾選【允許匿名訪問網(wǎng)站】
【允許下列權(quán)限】:讀取、運(yùn)行腳本、執(zhí)行
ü 在此網(wǎng)站下建立虛擬目錄 名稱:jakarta(必須)
【路徑】: isapi_redirect 安裝目錄\bin (isapi_redirect.dll的目錄)
【允許下列權(quán)限】:讀取、運(yùn)行腳本、執(zhí)行
ü 網(wǎng)站-->右鍵-->屬性:
1) 【isapi篩選器】-->添加--> 【篩選器名稱】:jakarta 【可執(zhí)行文件】: isapi_redirect安裝目錄\bin\isapi_redirect.dll (isapi_redirect.dll文件)
2) 【文檔】:-->添加-->【默認(rèn)內(nèi)容頁】:比如index.jsp(對應(yīng)網(wǎng)站默認(rèn)首頁) -->確定-->把其余的都刪掉
ü web服務(wù)擴(kuò)展-->右鍵-->添加一個新的web服務(wù)擴(kuò)展:【擴(kuò)展名】:jakarta(必須)
【要求的文件】: isapi_redirect安裝目錄\bin\isapi_redirect.dll (isapi_redirect.dll文件)
勾選【設(shè)置擴(kuò)展?fàn)顟B(tài)為允許】保存
(七) isapi_redirect的配置
打開isapi_redirect目錄下conf目錄,修改uriworkermap.properties文件,該文件的具體內(nèi)容如下:
# uriworkermap.properties - iis
#
# this file provides sample mappings for example wlb
# worker defined in workermap.properties.minimal
# the general syntax for this file is:
# [url]=[worker name]
/admin/*=wlb
/manager/*=wlb
/jsp-examples/*=wlb
/servlets-examples/*=wlb
/ecshoping/*=wlb
# optionally filter out all .jpeg files inside that context
# for no mapping the url has to start with exclamation (!)
!/servlets-examples/*.jpeg=wlb
#
# mount jkstatus to /jkmanager
# for production servers you will need to
# secure the access to the /jkmanager url
#
/jkmanager=jkstatus
/*.jsp=wlb
/*.action=wlb
/*.do=wlb
/*=wlb
解釋:wlb可理解為過濾器名稱
/*.jsp等等 為請求過濾的規(guī)則,isapi_redirect判斷當(dāng)iis收到該請求時交給tomcat處理。/ecshoping/*=wlb 指定你要過濾的項(xiàng)目
打開isapi_redirect目錄下conf目錄,修改workers.properties.minimal文件,該文件的內(nèi)入如下:
# workers.properties.minimal -
#
# this file provides minimal jk configuration properties needed to
# connect to tomcat.
#
# the workers that jk should create and work with
#
worker.list=wlb,jkstatus
#
# defining a worker named ajp13w and of type ajp13
# note that the name and the type do not have to match.
#
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
#
# defining a load balancer
#
worker.wlb.type=lb
worker.wlb.balance_workers=ajp13w
#
# define status worker
#
worker.jkstatus.type=status
該文件為默認(rèn)的配置,一般不需要修改,保證跟以上一致就行
到此為止你可以倒杯咖啡來享受一下整合成功的喜悅了。此時你輸入你的域名就可以直接訪問你的javaweb項(xiàng)目了,而不用再加8080端口了。當(dāng)iis接受到一個jsp網(wǎng)站isapi_redirect會轉(zhuǎn)發(fā)到tomcat處理,然后將處理結(jié)果再返回給客戶。