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