茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1670872 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00127.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2010/6/10 8:07:42
在網絡上找了許久,沒有一個真正可以解決TomCat多虛擬站點的配置問題的,經過試驗和參考官方網站資料,終於解決了這個問題.
參考資料:Apache Tomcat文檔http://tomcat.apache.org/tomcat-5.0-doc/config/host.html

在文中有這麼一段話:
One or more Host elements are nested inside an Engine element. Inside the Host element, you can nest Context elements for the web applications associated with this virtual host. Exactly one of the Hosts associated with each Engine MUST have a name matching the defaultHost attribute of that Engine.

譯文:Engine元素中需要一個或多個Host元素,在Host元素裡面,你必需有Context元素讓網站應用程序與虛擬主機連接上,嚴密地說,每一個主機所關聯的引擎必須有一個名字跟那個引擎默認的主機屬性匹配.
可知,在Engine元素裡面可以有多個Host,那麼說,可以有在一個Engine裡面設置多個服務器了,這正是我們需要的.每個Host元素裡面要有一個Context元素.
根據conf\server.xml裡面的說明和範例,我樣可以編寫出下面一個配置文件:
我把配置文件全部粘出來了,但大部分都是默認的,還有註釋部分。大可不理,只修改了幾部分,後面都有說明!
<!-- 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"  URIEncoding="GB2312"/>
<!-- Note : To disable connection timeouts, set connectionTimeout value to 0 -->

<!-- Note : To use gzip compression you could set the following properties :
          compression="on"
          compressionMinSize="2048"
          noCompressionUserAgents="gozilla, traviata"
          compressableMimeType="text/html,text/xml"
-->

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
-->

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" acceptCount="100" connectionTimeout="20000"
           proxyPort="80" disableUploadTimeout="true" />
-->

<!-- An Engine represents the entry point (within Catalina) that processes
     every request.  The Engine implementation for Tomcat stand alone
     analyzes the HTTP headers included with the request, and passes them
     on to the appropriate Host (virtual host). -->

<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->

<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="ycoe.vicp.net">

        <!-- Define the default virtual host
             Note: XML Schema validation will not work with Xerces 2.2.
        -->
        <Host name="ycoe.vicp.net" appBase="webapps" unpackWARs="true"
        xmlValidation="false" xmlNamespaceAware="false">

          <Context docBase="D:\WORKS\EShop\EWebShop" path="/" reloadable="true"
                   workDir="D:\WORKS\EShop\Tomcat\work\EWebShop">
          </Context>
        </Host>
        <Host name="yvor.vicp.net" appBase="webapps"unpackWARs="true" xmlValidation="false"
        xmlNamespaceAware="false">

          <Context docBase="D:\WORKS\YCOE\ycoe" path="/" reloadable="true" workDir="D:\WORKS\YCOE\Tomcat\work\ycoe">
          </Context>
        </Host>
</Engine>

</Service>
</Server>


可以看到,這裡修改了
81行修改了兩個參數值:
<Connector port="80" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"  URIEncoding="GB2312"/>

修改port是修改Tomcat的服務端口,默認為8080,URIEncoding改為GB2312是為了使用中文路徑但不建議使用.

125行:
<Engine name="Catalina" defaultHost="ycoe.vicp.net">

在下面配置的中,必須有一個Host和這裡的defaultHost的值相同!

192行:
<Host name="ycoe.vicp.net" appBase="webapps" unpackWARs="true" xmlValidation="false" xmlNamespaceAware="false">


然後再添加360行開始的元素:
<Host name="yvor.vicp.net" appBase="webapps"unpackWARs="true" xmlValidation="false" xmlNamespaceAware="false">
  <Context docBase="D:\WORKS\YCOE\ycoe" path="/" reloadable="true"
  workDir="D:\WORKS\YCOE\Tomcat\work\ycoe"></Context>
</Host>

這裡是設置我們的第二個虛擬網站的域名.
註:裡面的內容並不是我們實際應用的,我們可以通過另一種比較方便而且容易修改的方式來設置這些參數.下面我們來做這方面的配置:
1.在%CATALINA_HOME %\conf\Catalina目錄下創建ycoe.vicp.net和yvor.vicp.net兩個文件夾.
2.在這兩個文件夾裡面創建ROOT.xml文件(要以ROOT.xml為名稱,否則雖然不會出錯,但不能用http://ycoe.vicp.net或http://yvor.vicp.net直接訪問)
3.ROOT.xml的內容如下:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="D:\WORKS\EShop\EWebShop" path="/" reloadable="true"
workDir="D:\WORKS\EShop\Tomcat\work\EWebShop">
</Context>


根據自己的實際情況,設置這裡的docBase 和workDir的路徑.docBase是說明文檔的路徑,workDir是網站程序的路徑,如果用相對路徑,則是在%CATALINA_HOME %\webapp目錄下,path是訪問的路徑

你也可以在這兩個目錄下創建其它xml的文件

但是這時你通過瀏覽器訪問http://ycoe.vicp.net或http://yvor.vicp.net時並不能瀏覽到你的網頁,因為它把這些網址解析到廣域網上去了,除非你用域名綁定.
為了讓局域本機不把這兩個網址解析到廣域網上去.我們可以通過以下設置實現(Windows XP,其它操作系統沒有試過):
1.用文本編輯器打開C:\WINDOWS\system32\drivers\etc目錄的hosts文件
2.在內容最後另起一行,添加以下內容:
127.0.0.1       ycoe.vicp.net
127.0.0.1       yvor.vicp.net

可以由上面的註釋部分瞭解它的作用:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

到這裡,全部的配置已經完成了.重啟Tomcat,打開http://ycoe.vicp.net或http://yvor.vicp.net就可以看到預期的效果了.呵呵
下載相關文件http://www.cnblogs.com/Files/ycoe/Catalina.rar
原文出自:http://ycoe.cnblogs.com/archive/2006/04/18/377737.html
作者:YCOE
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|