IIS與Tomcat共存的問題
最近我利用.NET開發一套WEB程式,使用8003連接埠,當我部署到客戶時,他們啟動並執行是
Tomcat,使用80連接埠。而我也需要80連接埠,因為網通不能進行帶連接埠的解析。
這個問題以前都沒遇到過,後來到網上到處找資料,現在把它總結出來:
如果伺服器上已經安裝了Apache(使用Apache + Tomcat)的話,那麼IIS與Apache是沒有辦法使用同一個80連接埠的,因為無論是IIS或者Apache它們都要獨佔一個連接埠,所以通常的做法是使用Tomcat的ISAPI來實現IIS與Tomcat之間通訊。具體步驟如下(*系統配置為Windows2003 Server + IIS6 + Tomcat5.0.14):
首先去http://apache.linuxforum.net/dist/jakarta/tomcat-connectors/jk2/binaries/win32/jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip下載JK2,由JK2負責IIS和Tomcat的通訊,解開後得到isapi_redirector2.dll。
接下來在Tomcat安裝目錄下的conf目錄下建一個workers2.properties檔案,把下面這段配置資訊拷貝進去後儲存。注意file=".."之中的路徑要用"/"。
[shm]
file=c:/Tomcat/logs/jk2.log
size=1048576
# 實際運用時把所有的localhost和8009換成你自己的IP和連接埠
[channel.socket:localhost:8009]
port=8009
host=localhost
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*.jsp]
[uri:/web/*]
worker=ajp13:localhost:8009
# define the worker
[status:status]
# Uri mapping
[uri:/jkstatus/*]
worker=status:status
之後編輯jk2.properties檔案,確認其中是否有此一句:
request.tomcatAuthentication=false
接下修改註冊表,可建立一個iis.reg檔案,把下面一段拷進去儲存然後雙擊iis.reg把資訊匯入註冊表。(注意,把涉及的Tomcat路徑改成你的Tomcat的路徑)
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi
Redirector\2.0]
"serverRoot"="c:\\Tomcat"
"extensionUri"="/jakarta/isapi_redirector2.dll"
"workersFile"="c:\\Tomcat\\conf\\workers2.properties"
"logLevel"="INFO"
然後開啟“我的電腦->控制台->管理工具->Internet資訊服務管理器”,在裡面選擇“網站”中的預設網站(預設網站我假定指向C:\web),在其上點右鍵選“屬性”,在彈出的頁框裡選擇“ISAPI篩選器”,點“添加”,篩選器名稱填jakarta,可執行檔中填入你的isapi_redirector2.dll的絕對路徑。“確定”後點“確定”關閉屬性頁面。再在“預設網站”上右鍵,選擇“建立”->“虛擬目錄”,別名填jakarta,下一步,路徑選為你的isapi_redirector2.dll存放的目錄,我的是C:\tomcat\iis,下一步,許可權中記得把“執行”那項打勾,然後在“Internet資訊服務管理器”的“網站”中的“Web服務擴充”上點右鍵選擇“添加一個新的Web服務擴充”,彈出的框中副檔名填Tomcat(其實無所謂的),“要求的檔案”選“添加”然後找到你的isapi_redirector2.dll後“確定”。“設定擴充狀態為允許”也打上勾,配置就完成了。