最近在折騰 Vista 上的 IIS7 和 Tomcat 5.5 的整合,主要是想讓 IIS 把 JSP 請(qǐng)求轉(zhuǎn)給 Tomcat 處理,這樣看起來(lái)就像 IIS 自己也能跑 JSP 頁(yè)面一樣。雖然網(wǎng)上有不少教程,但 IIS7 跟以前版本差別挺大的,配起來(lái)還是有點(diǎn)坑。
首先得裝好 JDK 1.5 和 Tomcat 5.5,如果是正式環(huán)境建議用 exe 安裝版,作為服務(wù)運(yùn)行比較穩(wěn)定,基本不用自己配置啥。我這邊是拿來(lái)調(diào)試的,所以用了 zip 解壓版的 Tomcat,方便折騰。具體的安裝步驟可以參考一些教程,記得 IIS 默認(rèn)用的是 80 端口,Tomcat 默認(rèn)是 8080,別沖突了就行。
接下來(lái)就是重點(diǎn)了:怎么把 IIS 收到的 JSP 請(qǐng)求轉(zhuǎn)發(fā)到 Tomcat 去處理?這時(shí)候就需要 Tomcat 提供的 Connector 插件,也就是所謂的 ISAPI Redirect DLL。Tomcat 其實(shí)對(duì)各種 Web Server 和系統(tǒng)都有支持,因?yàn)樗ㄎ皇?JSP 容器而不是 Web Server,盡管它也能單獨(dú)當(dāng)服務(wù)器用。
去官網(wǎng)或者相關(guān)鏈接下載 isapi_redirect.dll 文件,我把它放到了 Tomcat 目錄下的 binwin32i386 文件夾里。然后就得開(kāi)始配置這個(gè) Connector。網(wǎng)上有兩種方法,一種是通過(guò)注冊(cè)表設(shè)置,另一種是使用 properties 配置文件,我這里選的是注冊(cè)表方式,感覺(jué)更直接點(diǎn)。
不過(guò)要注意的是,有些教程里說(shuō)在 Tomcat 的 conf 目錄下能找到示例的 workers.properties 或者 uriworkermap.properties 文件,但我本地解壓完好像沒(méi)看到這些文件,可能是因?yàn)榘姹締?wèn)題?所以只能自己手動(dòng)寫(xiě)了幾個(gè)基礎(chǔ)的配置文件。
比如 workers.properties 文件內(nèi)容大概是這樣的:
workers.properties.minimal
worker.list=ajp13w
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
uriworkermap.properties 就是用來(lái)指定哪些請(qǐng)求要轉(zhuǎn)發(fā)給 Tomcat 處理的規(guī)則,比如:
/*=ajp13w
這樣所有的請(qǐng)求都會(huì)被轉(zhuǎn)到 Tomcat 上處理。
當(dāng)然實(shí)際部署的時(shí)候你可能需要根據(jù)項(xiàng)目需求修改映射規(guī)則,不是所有頁(yè)面都走 Tomcat。
整個(gè)過(guò)程其實(shí)不復(fù)雜,但因?yàn)?IIS7 的界面和配置方式跟之前的版本不太一樣,所以剛開(kāi)始容易搞混。比如 IIS7 中添加 ISAPI 擴(kuò)展的方式、權(quán)限設(shè)置、還有 Application Pool 的運(yùn)行身份等等,稍微不對(duì)就會(huì)出錯(cuò)。
另外,isapi_redirect.dll 這個(gè)文件也要確保沒(méi)問(wèn)題,有時(shí)候從不同地方下載的版本可能會(huì)有兼容性問(wèn)題,最好是從官方或者可靠來(lái)源獲取。
總結(jié)IIS 整合 Tomcat 主要是靠這個(gè) Connector 來(lái)做請(qǐng)求轉(zhuǎn)發(fā),配置的關(guān)鍵點(diǎn)就是兩個(gè)服務(wù)器之間的通信端口、路徑是否正確,以及 URL 映射規(guī)則是否合理。
遇到問(wèn)題的話,建議多看日志,尤其是 IIS 的日志和 Tomcat 的 catalina.out 輸出,通常都能找到報(bào)錯(cuò)原因。如果還是不行,也可以嘗試換不同的配置方式,比如換個(gè) properties 文件管理,或者改用 mod_jk 模塊(不過(guò)那個(gè)配置起來(lái)可能更麻煩)。
折騰一圈下來(lái),終于能用 IIS 訪問(wèn) JSP 頁(yè)面了,雖然過(guò)程有點(diǎn)坎坷,但也算是搞定一個(gè)頭疼的問(wèn)題。希望后來(lái)人少踩點(diǎn)坑吧!
首先得裝好 JDK 1.5 和 Tomcat 5.5,如果是正式環(huán)境建議用 exe 安裝版,作為服務(wù)運(yùn)行比較穩(wěn)定,基本不用自己配置啥。我這邊是拿來(lái)調(diào)試的,所以用了 zip 解壓版的 Tomcat,方便折騰。具體的安裝步驟可以參考一些教程,記得 IIS 默認(rèn)用的是 80 端口,Tomcat 默認(rèn)是 8080,別沖突了就行。
接下來(lái)就是重點(diǎn)了:怎么把 IIS 收到的 JSP 請(qǐng)求轉(zhuǎn)發(fā)到 Tomcat 去處理?這時(shí)候就需要 Tomcat 提供的 Connector 插件,也就是所謂的 ISAPI Redirect DLL。Tomcat 其實(shí)對(duì)各種 Web Server 和系統(tǒng)都有支持,因?yàn)樗ㄎ皇?JSP 容器而不是 Web Server,盡管它也能單獨(dú)當(dāng)服務(wù)器用。
去官網(wǎng)或者相關(guān)鏈接下載 isapi_redirect.dll 文件,我把它放到了 Tomcat 目錄下的 binwin32i386 文件夾里。然后就得開(kāi)始配置這個(gè) Connector。網(wǎng)上有兩種方法,一種是通過(guò)注冊(cè)表設(shè)置,另一種是使用 properties 配置文件,我這里選的是注冊(cè)表方式,感覺(jué)更直接點(diǎn)。
不過(guò)要注意的是,有些教程里說(shuō)在 Tomcat 的 conf 目錄下能找到示例的 workers.properties 或者 uriworkermap.properties 文件,但我本地解壓完好像沒(méi)看到這些文件,可能是因?yàn)榘姹締?wèn)題?所以只能自己手動(dòng)寫(xiě)了幾個(gè)基礎(chǔ)的配置文件。
比如 workers.properties 文件內(nèi)容大概是這樣的:
workers.properties.minimal
worker.list=ajp13w
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
uriworkermap.properties 就是用來(lái)指定哪些請(qǐng)求要轉(zhuǎn)發(fā)給 Tomcat 處理的規(guī)則,比如:
/*=ajp13w
這樣所有的請(qǐng)求都會(huì)被轉(zhuǎn)到 Tomcat 上處理。
當(dāng)然實(shí)際部署的時(shí)候你可能需要根據(jù)項(xiàng)目需求修改映射規(guī)則,不是所有頁(yè)面都走 Tomcat。
整個(gè)過(guò)程其實(shí)不復(fù)雜,但因?yàn)?IIS7 的界面和配置方式跟之前的版本不太一樣,所以剛開(kāi)始容易搞混。比如 IIS7 中添加 ISAPI 擴(kuò)展的方式、權(quán)限設(shè)置、還有 Application Pool 的運(yùn)行身份等等,稍微不對(duì)就會(huì)出錯(cuò)。
另外,isapi_redirect.dll 這個(gè)文件也要確保沒(méi)問(wèn)題,有時(shí)候從不同地方下載的版本可能會(huì)有兼容性問(wèn)題,最好是從官方或者可靠來(lái)源獲取。
總結(jié)IIS 整合 Tomcat 主要是靠這個(gè) Connector 來(lái)做請(qǐng)求轉(zhuǎn)發(fā),配置的關(guān)鍵點(diǎn)就是兩個(gè)服務(wù)器之間的通信端口、路徑是否正確,以及 URL 映射規(guī)則是否合理。
遇到問(wèn)題的話,建議多看日志,尤其是 IIS 的日志和 Tomcat 的 catalina.out 輸出,通常都能找到報(bào)錯(cuò)原因。如果還是不行,也可以嘗試換不同的配置方式,比如換個(gè) properties 文件管理,或者改用 mod_jk 模塊(不過(guò)那個(gè)配置起來(lái)可能更麻煩)。
折騰一圈下來(lái),終于能用 IIS 訪問(wèn) JSP 頁(yè)面了,雖然過(guò)程有點(diǎn)坎坷,但也算是搞定一個(gè)頭疼的問(wèn)題。希望后來(lái)人少踩點(diǎn)坑吧!