背景
使用FineReport制作一些報(bào)表,然后嵌入已經(jīng)存在的Web項(xiàng)目中,因此需要Tomcat和IIS聯(lián)通。
根據(jù)FineReport的官方的一些說明,知道FineReport是放入Tomcat服務(wù)器的host指定目錄即可運(yùn)行的,而已經(jīng)存在的項(xiàng)目是IIS的,因此需要一個聯(lián)通。
效果
通過訪問site/app中的js代碼,不必跨域和跨端口,直接訪問../WebReport獲得報(bào)表展示即可
吐槽
FineReport官網(wǎng)上的說明書已經(jīng)落后的,根據(jù)上面的指導(dǎo),我花費(fèi)4小時,沒有搞定,最后去了Tomcat網(wǎng)站看了說明馬上搞定。Tomcat小白,第一次弄,做個記錄吧。
準(zhǔn)備
必要環(huán)境
- JRE
- JDK
都是從Oracle那里去下載。
不明白為什么要JDK,反正根據(jù)Tomcat上的說明是需要的,我就安裝了。
Tomcat服務(wù)
我從官網(wǎng)下載了最新的Tomcat9.0,直接安裝默認(rèn)目錄,端口也沒有修改。很多百度結(jié)果都是安裝到非C盤。我只想說,實(shí)際部署的時候,有那么多盤給你嗎?安裝C盤,然后提權(quán)就可以了。
IIS服務(wù)
這個一般是windows server自己配置了。沒有太多可以說的。
下載聯(lián)通控制程序
去Tomcat網(wǎng)站下載:https://tomcat.apache.org/download-connectors.cgi
根據(jù)說明可以下載源碼和編譯好的released版本。我選擇了兼容x64的適配Windows的下載。當(dāng)然也是用最新版。
需要選擇合適的鏡像,基本國內(nèi)大學(xué)的site都可以用。
源碼需要vs2015的編譯器,我沒有嘗試過(沒有空折騰了),如果是Linux部署肯定編譯好,不過IIS有在Linux嗎?
其他備忘
OS: Windows10,Windows 2012 Server (x64)
IIS: IIS 10 , IIS 8
Tomcat:9.0, 安裝到->C:\Program Files\Apache Software Foundation\Tomcat 9.0
JDK:10.0
JRE:8
isapi_redirect.dll:1.2.43
步驟
后面就是Step By Step配置,說明手冊很簡單。
http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html
我這里僅僅做點(diǎn)中文翻譯即可
Tomcat配置部分
創(chuàng)建isapi目錄
創(chuàng)建一個目錄: ${tomcat_home}\isapi
授權(quán)
需要管理員權(quán)限執(zhí)行Cmd:
icacls "C:\Program Files\Apache Software Foundation\Tomcat 9.0\isapi" /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)M
注意哦:這里用的是IIS APPPOOL\DefaultAppPool,如果站點(diǎn)用的應(yīng)用程序池不是這個,則需要修改。
下載并部署連接器
在https://tomcat.apache.org/download-connectors.cgi找到合適的版本下載,然后解壓;
將isapi_redirect.dll放入目錄:${tomcat_home}\isapi
創(chuàng)建配置文件
文件路徑:
${tomcat_home}\isapi\isapi_redirect.properties
我使用notepad++的管理員權(quán)限創(chuàng)建保存。
(實(shí)際上,我還是比較習(xí)慣sudo vi,方便?。?br>
文件內(nèi)容:
extension_uri=/jakarta/isapi_redirect.dll
log_file=C:\Program Files\Apache Software Foundation\Tomcat 9.0\isapi\isapi_redirect.log
log_level=info
worker_file=C:\Program Files\Apache Software Foundation\Tomcat 9.0\isapi\workers.properties
worker_mount_file=C:\Program Files\Apache Software Foundation\Tomcat 9.0\isapi\uriworkermap.properties
注意:使用windows的notepad可能導(dǎo)致沒有權(quán)限和默認(rèn)加上.txt擴(kuò)展名
創(chuàng)建配套worker文件
文件路徑:
${tomcat_home}\isapi\workers.properties
文件內(nèi)容:
worker.list=tomcat01
worker.tomcat01.type=ajp13
worker.tomcat01.host=localhost
worker.tomcat01.port=8009
注意:不要照抄,根據(jù)客戶生產(chǎn)環(huán)境和Tomcat安裝配置的端口處理
創(chuàng)建配套映射文件
文件路徑:
${tomcat_home}\isapi\uriworkermap.properties
文件內(nèi)容:
/examples/*=tomcat01
/WebReport/*=tomcat01
注意:
我這里寫了2個路徑映射,一個舉例,我主要用來測試,一個是FineReport默認(rèn)的路徑。屆時,IIS遇到這樣的路徑,直接轉(zhuǎn)發(fā)給Tomcat。
IIS配置部分
增加虛擬目錄
在自己的站點(diǎn)上,增加一個虛擬目錄。
別名:jakarta
物理路徑:${tomcat_home}\isapi
說明:因?yàn)榕渲弥袑懥薺akarta,所以別名就必須配套一致。
配置處理程序映射
選中虛擬目錄,雙擊“處理程序映射”。
找到:ISAPI-dll一行(可能是disabled狀態(tài)),
在右側(cè)的操作Form中,點(diǎn)擊“編輯功能權(quán)限”,在彈出的對話框中,勾選最后一個“執(zhí)行”。
(如果是disable狀態(tài),確定后會激活)
為站點(diǎn)添加Filter
選中部署的站點(diǎn)(地球圖標(biāo)),雙擊“ISAPI篩選器”。
點(diǎn)擊右側(cè)Form中的添加。
輸入名稱:tomcat(其實(shí)可以隨意)
可執(zhí)行文件:${tomcat_home}\isapi\isapi_redirect.dll
點(diǎn)擊確定退出。
服務(wù)器配置
選中IIS中的一個服務(wù)器(你站點(diǎn)的服務(wù)器)。
雙擊“ISAPI and CGI 限制”,在操作Form中點(diǎn)擊添加。
在彈出的對話框Form中輸入:
路徑:
${tomcat_home}\isapi\isapi_redirect.dll
描述:
tomcat(其實(shí)可以隨意)
勾選:
checked 允許執(zhí)行擴(kuò)展路徑
點(diǎn)擊確定。
完工重啟服務(wù)
配置過程中其實(shí)最好是停止所有的服務(wù),然后再啟動。
不過有時候IIS正在生產(chǎn),因此只能重啟服務(wù)。
好像沒有遇到順序問題,直接都先停止,再啟動。
測試成果
- 登錄8080
localhost:8080,理論上可以進(jìn)入Tomcat管理默認(rèn)index.jsp
檢查IIS,是否有其他站點(diǎn)占用8080端口 - localhost/examples/index.jsp
理論上可以看到結(jié)果。