前段時間有個JSP網(wǎng)站要在服務(wù)器上部署,由于服務(wù)器上根本沒配置過jsp環(huán)境,于是裝了Jdk和Tomcat,過程還算順利,很快就安裝好了,但是Tomcat的默認(rèn)端口是8080,訪問網(wǎng)站也帶個端口多么不爽,因?yàn)榉?wù)器上有很多ASP站點(diǎn),又不能不用IIS,于是第一個想到的便是跟IIS6.0整合,baidu google了大半天,搜出來文章倒是很多,也不知是由于我安裝的是最新的JDK和Tomcat,的原因還是權(quán)限原因(為了安全,更改過多處權(quán)限),總之就是不成功,換了兩臺服務(wù)器也沒配置成功,到最后不是不能正確運(yùn)行,就是提示函數(shù)不正確,到網(wǎng)上搜,很多人問之類的問題,但幾乎沒有人正了把經(jīng)回答的,有些“熱心”的倒還說兩句“重裝一下看看?”“再從頭到尾檢查一遍試試”。。。算了還是自己搞吧。
繼續(xù)搞啊搞,還是不行,最后干脆不搞了,心想即使弄好了,性能還不知怎么樣呢。于是想另外的解決方法,因?yàn)榉?wù)器所在的網(wǎng)絡(luò)有空閑的ip,便想何不讓IIS用一個ip,Tomcat用一個ip,都使用80端口?問了幾個人都說不行,兩個軟件用同一個端口那不沖突么,也有的說兩個ip那得需要兩塊網(wǎng)卡啊。服務(wù)器上倒是有兩塊網(wǎng)卡,但就插了一根網(wǎng)線,另一個閑著。我就是要用一塊網(wǎng)卡,兩個ip,因?yàn)樵赥CP/ip協(xié)議屬性-》高級中,一塊網(wǎng)卡是可以添加多個ip地址的,iis與Tomcat分別監(jiān)聽不同ip的80端口,OK,開始吧。
我們知道IIS默認(rèn)情況下是監(jiān)聽所有ip地址的80端口的,也就是說,在網(wǎng)站屬性中只要選擇“全部未分配”,則該網(wǎng)站就可以使用所有本機(jī)可用的ip地址。顯然這個不符合我們現(xiàn)在的要求,我們首先將IIS所有站點(diǎn)當(dāng)中全部改為指定IIS要監(jiān)聽的IP地址,包括默認(rèn)站點(diǎn),例如全部改為61.156.31.1。再在網(wǎng)卡中加一個ip,也就是在TCP/ip高級屬性中再加一個可用的ip,這樣一塊網(wǎng)卡就可以使用兩個或更多個ip了,看似很簡單的操作可能有很多人不知道,認(rèn)為一塊網(wǎng)卡只能設(shè)一個ip,呵呵。
接下來最關(guān)鍵的一步開始了,便是禁用IIS的套接字池(如果這一步?jīng)]調(diào)好,便不會成功),在微軟官方網(wǎng)站上有解釋:
http://support.microsoft.com/kb/238131/zh-cn
概要
在下列情況下,您可能需要禁用套接字池:
1、承載的站點(diǎn)數(shù)目不多。
2、有特殊的安全考慮。
3、另一個應(yīng)用程序或服務(wù)器需要某個 IP 地址上的端口 80。
更多信息
套接字池會導(dǎo)致“Internet 信息服務(wù)”(IIS) 偵聽所有 IP 地址,這樣,可能會對具有多個網(wǎng)絡(luò)的安全域造成安全隱患。另外,帶寬調(diào)節(jié)和性能調(diào)整會應(yīng)用于所有針對同一端口(例如,端口 80)進(jìn)行配置的 Web 站點(diǎn)。如果基于每個站點(diǎn)進(jìn)行帶寬調(diào)節(jié)或性能調(diào)整,則必須禁用套接字池。
由于 DisableSocketPooling 在 IIS 6.0 元數(shù)據(jù)庫架構(gòu) (MBSchema.xml) 中被定義為有效屬性,所以,您仍然可以使用 Adsutil.vbs 設(shè)置該屬性,但這種設(shè)置不起作用。IIS 6.0 中的功能是新增的核心級別驅(qū)動程序HTTP.sys 的一部分。要配置 HTTP.sys,您必須使用Httpcfg.exe。 有關(guān)如何在 IIS 6.0 中禁用套接字池的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
813368 (http://support.microsoft.com/kb/813368/) IIS 6.0:設(shè)置配置數(shù)據(jù)庫數(shù)據(jù) DisableSocketPooling 沒有作用
要禁用套接字池,請執(zhí)行下列步驟:
1. 打開命令提示符并確保您位于 X:\Inetpub\Adminscripts 文件夾(其中 X 是 IIS 安裝驅(qū)動器)中。為此,請?jiān)诿钐崾痉骆I入以下
行:
X:
CD\Inetpub\Adminscripts
2. 打開 Adminscripts 文件夾后,請?jiān)诿钐崾痉骆I入以下行:
cscript adsutil.vbs set w3svc/disablesocketpooling true
3. 該命令反饋如下:
disablesocketpooling :(BOOLEAN) True
4. 停止 IIS Admin 服務(wù),然后再啟動它。
5. 重新啟動 WWW 服務(wù)。
好了,接下來設(shè)置IIS要監(jiān)聽的ip地址。到2003的CD下的 support/tools/Support.cab。解壓出httpcfg.exe文件,COPY到
windows/system32/目錄下,用法自己看幫助
命令行:
綁定到某IP: httpcfg set iplisten -i 61.156.31.1
即命令使用IIS的只監(jiān)聽指定的IP及端口
查看綁定: httpcfg query iplisten
刪除綁定: httpcfg delete iplisten -i 61.156.31.1
IIS部分到此就設(shè)置好了,接下來設(shè)置Tomcat,當(dāng)然或者你用Apache,Resin等也都可以,在Tomcat的配置文件Server.xml里找到
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" address="61.156.31.2"/>
在后面添加上需要Tomcat監(jiān)聽的ip地址即可,例如:address="61.156.31.2" Apache,Resin或者其他WEB服務(wù)器軟件都應(yīng)該有相應(yīng)的設(shè)置的,自己找一下即可。
好了接下來重啟IIS,重啟Tomcat或Apache,怎么?啟動失敗?提示端口占用?是啊,我也遇到這種情況,搗鼓了大半天要是再不成功我就要放棄了。實(shí)在無奈之下重啟了一下服務(wù)器,哇,好啦。測試一下61.156.31.1訪問的是IIS,61.156.31.2訪問的是Tomcat可愛的大貓。
實(shí)際上,實(shí)現(xiàn)IIS和Apache或Tomcat公用80的方法還很多,例如IIS設(shè)置8080,Apache設(shè)置80,利用Apache反向代理IIS的8080,當(dāng)然也可以用NT下面的squid。或者在IIS中安裝IIS的Isapi Rewrite,利用IIS的反向代理代理Apache,當(dāng)然如果IIS站點(diǎn)少,Apache站點(diǎn)多就用第一種方法,IIS站點(diǎn)多,Apache站點(diǎn)少就用第二種方法,但這兩種方法在性能上都不是很好,Apache在Windows下的反向代理也有BUG,經(jīng)常出現(xiàn)Proxy Error的提示,至于IIS的反向代理沒用過,因?yàn)镮IS的ISAPI帶反向代理功能的是要收費(fèi)的。http://www.xpb.cn/blog/623.html
posted on 2008-12-26 18:36
流腥魚 閱讀(3567)
評論(1) 編輯 收藏 所屬分類:
java