時間一久連tomcat配置域名都忘了....
現在很多的公司的網站都是用tomcat作為應用服務區的,可是對于初學者,8080端口號是如何去掉的,這些網站是如何和域名綁定到一起的呢?一個
tomcat是如何綁定多域名?并且這些域名是如何對應不同的項目呢?而且我的服務器沒放在機房,放在我的本地,我應該如何把我的服務器給映射到外
網?這一系列的問題,今天就這個問題,我來說一下。
1. 域名。現在的域名不是很貴,有很多人都有,而我們注冊域名的網站也會有一個DNS助解析,就是把服務器的IP綁定到這些域名上。
2. 我們域名有了,現在就來說說我們的項目;比如說我現在有兩個項目都在我的這個tomcat下面。那我們輸入
http://localhost:8080
?/abc就可以訪問
到我們abc這個項目了,但是端口號8080如何去掉呢?在tomcat的conf文件夾下有一個server.xml。我們打開這個文件,找到8080,只需要把8080改成80
即可。當我們再次輸入
http://localhost/abc
即可。
3. 可是我們的域名如何跟項目綁定到一起呢?我們再次找到tomcat下面的conf文件夾里面的server.xml。修改<Host name="我們所要綁定的域名"
debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"></Host>
4. 當啟動tomcat的時候,輸入我們綁定的域名,是不是看到了我們的tomcat。可是我們想訪問我們的項目還得再域名后面加上項目名稱才能訪問到,也
就是說到現在我們的域名還沒跟項目綁定到一起。我們在看一下第三部,想讓我們的項目和域名綁定到一起,我們只需要在</Host>前面加上<Context
docBase="項目名" path=""? reloadable="true" >即可。
例如:<Host name="
www.abc.com
" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false"><Context docBase="baidu" path=""? reloadable="true" ></Host>
5. 當我們的有兩個項目都放在同一個tomcat下的時候,我們只需要把<Host></ Host>加上兩個既可以完成我們的2個項目的綁定,但是項目名稱別忘了
改哦。
6. 當我們的服務器自己維護(沒有放在機房),我們需要對我們的路由做一下映射。就拿我的路由來舉例。我的路由是TP-LINK WR340G型號,進入路由
后,我們能找到一個轉發規則,那里面有一個虛擬服務器的這項,點擊新增條目以后會有:服務端口號、IP地址、協議、狀態、常用服務端口號。我們
只需在這里IP地址(服務器的局域網IP),協議選擇ALL(有的路由好像沒有這項,那就不需要填寫了),狀態選擇生效,常用服務端口號選擇HTTP或者
WEB即可。這時默認的端口號為80。當常用服務端口號沒有HTTP或者WEB這項時,可以選擇DNS,然后手動把端口號改成80。點擊生效。保存即可。如果說
本人說的路由映射對您不適用或者沒有看明白,可以上網找各種路由的映射方法。
7. 這個時候我們在輸入我們的域名,是不是就直接訪問到我們的項目了。
----------------------------------------------------------------
域名綁定與虛擬目錄設置:
server.xml 的修改方式如下:
(一)多域名綁定
1.如果你要綁定網站,首先是要把tomcat的默認訪問端口8080,修改成80
原始:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改后:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
其實這里就是把port:8080,修改成port:80就可以了,其他的參數不變
2.接下來就是重點了哈哈...
單個域名綁定:
原始:
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" />
</Engine>
當然這里我把注釋代碼統統刪除掉了,省的礙眼
修改后:
<Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="d:\wwwroot\chengqun"></Context>
</Host>
<Host name="chengqun1.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun1"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="d:\wwwroot\chengqun1"></Context>
</Host>
多域名綁定:
<Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>chengqun.202.71one.com</Alias>
<Alias>chengqun1.202.71one.com</Alias>
<Alias>chengqun2.202.71one.com</Alias>
<Context path="/" docBase="d:\wwwroot\chengqun"></Context>
</Host>
這里面的參數還有很多,我也不是很清楚,不過這樣做確實可以實現多域名綁定哈哈.而且網站頁面修改了只要直接覆蓋就可以了,tomcat可以自動更新類
和頁面,當然如果修改了web.xml或lib,則需要重啟tomcat才可以.
(二)虛擬目錄
(1)
<Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/chengqun" docBase="d:\wwwroot\chengqun"></Context>
</Host>
其中,Host標記是用來配置虛擬主機的,就是可以多個域名指向一個tomcat,格式只要參考默認的就
可以了。
<context>是Host標記的子元素吧,表示一個虛擬目錄,它主要有兩個屬性,path就相當于虛擬目錄名字,
而 docbase則是具體的文件位置。在這里我的虛擬路徑名稱為chengqun,實際上我的程序也就是html、jsp、servlet都 放在了d:\wwwroot\chengqun這
個目錄下了。
這樣我就可以通過 chengqun.202. com/chengqun 訪問我的這個虛擬目錄了。
另外一種方法是:
<Host name="chengqun.202. com" debug="0" appBase="d:\wwwroot\chengqun"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="d:\wwwroot\chengqun"></Context>
</Host>
這樣設置以后,輸入域名可以訪問這個站點程序了(Context path="/"這里不同)
(2)
沒有指定默認站點,所以直接輸入IP的時候,無法訪問。如何讓輸入ip就可以訪問指定的站點呢?
修改server.xml的 <Engine name="Catalina" defaultHost="chengqun.202. com">
這樣就可以實現了輸入ip訪問chengqun.202. com這個站點的程序了!
----------------------------------------
tomcat下的配置都在conf下的server.xml下實現。。。
里面從高到低分為:
Server
--Service
--Connector
--Engine
--Host
--Context
首先把通訊接口下的PORT改為80,這樣就不用在瀏覽器中輸入端口號了,如:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector
port="80"?????????????? maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
HOST代表虛擬主機:
默認有
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
所以我們平時都是直接輸入
http://localhost
:端口號/項目名?? 就好了。。
假如我現在有個項目在E盤下的workspace目錄,項目名為LZW
我不想部署在tomcat下的webapp目錄下,而是直接想在TOMCAT下加載這個項目
并且用個域名(
www.pw88.com
)來映射。這樣我們可以加上下面這段代碼
<Host name="
www.pw88com
" appBase="e:\workspace\LZW
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="WebRoot" debug="0" reloadable="true" crossContext="true" />
</Host>
appBase為項目的絕對路徑,docBase為WEB目錄
假如我現在的圖片都放在d:\ext.lzw.com\img下,我想用個二級域名
(img.lzw.com)映射它,假如在d:\ext.lzw.com\img下放入一張圖片1.jpg,我們就
可以輸入img.lzw.com/1.jpg來訪問它了。。加上下面代碼就可以實現了。。
<Host name="img.lzw.com" appBase="d:\ext.lzw.com\img"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>
最終我們要在本地訪問域名,還得修改相愛HOST文件。。打開
C:\WINDOWS\system32\drivers\etc\hosts
加上
127.0.0.1???????
www.pw88.com
127.0.0.1?????? img.lzw.com
對tomcat下配置 一ip對多域名的方法詳細如下,按下面配置一定能成功,經過測試了.
<Host name="localhost" debug="0" appBase="D:\Tomcat 5.0\webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:\Tomcat 5.0\webapps\gg" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>
<Host name="one.localhost" debug="0" appBase="D:\Tomcat 5.0\webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>one.localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:\Tomcat 5.0\webapps\kk\a" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>
<Host name="two.localhost" debug="0" appBase="D:\Tomcat 5.0\webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>two.localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:\Tomcat 5.0\webapps\kk\b" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>
因無域名解析服務器,所以在hosts上配,來模擬dns解析.
10.1.1.241 localhost 指向gg文件夾
10.1.1.241 localhost.com 指向gg文件夾
10.1.1.241 one.localhost 指向a文件夾
10.1.1.241 one.localhost.com 指向a文件夾
10.1.1.241 two.localhost 指向b文件夾
10.1.1.241 two.localhost.com 指向b文件夾
經過多方面嘗試,終于在tomcat下配置成功了.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
