Tomcat 的虛擬主機

Tomcat 默認只支持基於名稱的虛擬主機       
 

Tomcat的虛擬主機在 conf/server.xml 這個配置文件中定義的             

一、Tomcat的默認虛擬主機:               

  1. <Host name="localhost"  appBase="webapps" 
  2.             unpackWARs="true" autoDeploy="true"
    <Context path="/jcenter" docBase="/web/jcenter" reloadable="true" /> 自定義的訪問路徑
  3. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 這段是用於定義日誌格式的
    prefix="localhost_access_log." suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>

各選項的意義:  

      auotDeploy="true"        自動佈署 ,默認爲false
      appBase="webapps"        定義這個主機的應用程序的路徑,這裏是相對於tomcat的安裝路徑( 也就是"/usr/local/tomcat "), 也可以使用絕對路徑
      unpackWARs="true"        讓Tomcat可以自動解壓war文件
   
自定義訪問路徑

<Context path="/jcenter" docBase="/web/jcenter" reloadable="true" />

    path="/jcenter"            訪問路徑

    docBase="/web/jcenter"        網頁文件的存放路徑,docBase的路徑名不能與相應的Host中appBase中定義的路徑名有包含關係,比如,如果appBase爲deploy,而docBase絕不能爲deploy-bbs類的名字;
    reloadable="true"                是否允許自動裝載

 

下面我們就將 JavaCenter Home 這個開源的社交項目的相關文件放到我們自定的訪問路徑下(使用 Java Center Home 需要用到‘數據庫’,因此需要先安裝好數據庫)

  1. 安裝好數據庫(可參考其它博文http://xyuex.blog.51cto.com/5131937/938738

  2. 解壓數據包

  1. [root@node2 tmp]# mkdir /web/ 
  2. [root@node2 tmp]# tar xf JavaCenter_Home_2.0_GBK.tar.bz2  -C /web 
  3.  
  4. [root@node2 web]# ln -sv JavaCenter_Home_2.0_GBK/ jcenter 
  5. create symbolic link `jcenter' to `JavaCenter_Home_2.0_GBK/' 

  3. 重啓Tomcat

  1. [root@node2 tomcat]# bin/catalina.sh stop 
  2. Using CATALINA_BASE:   /usr/local/tomcat 
  3. Using CATALINA_HOME:   /usr/local/tomcat 
  4. Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
  5. Using JRE_HOME:        /usr/java/jdk1.7.0_05 
  6. Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
  7. [root@node2 tomcat]# bin/configtest.sh   用來測試配置文件是否有語法錯誤
  8. Using CATALINA_BASE:   /usr/local/tomcat 
  9. Using CATALINA_HOME:   /usr/local/tomcat 
  10. Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
  11. Using JRE_HOME:        /usr/java/jdk1.7.0_05 
  12. Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
  13. Oct 28, 2012 5:34:50 PM org.apache.catalina.core.AprLifecycleListener init 
  14. INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/i386:/lib:/usr/lib 
  15. Oct 28, 2012 5:34:52 PM org.apache.coyote.AbstractProtocol init  上面的信息只是提示我們沒有安裝APR 庫,並不影響Tomcat的使用
  16. INFO: Initializing ProtocolHandler ["http-bio-8080"
  17. Oct 28, 2012 5:34:52 PM org.apache.coyote.AbstractProtocol init 
  18. INFO: Initializing ProtocolHandler ["ajp-bio-8009"
  19. Oct 28, 2012 5:34:52 PM org.apache.catalina.startup.Catalina load 
  20. INFO: Initialization processed in 3686 ms 
  21. [root@node2 tomcat]# bin/catalina.sh start 
  22. Using CATALINA_BASE:   /usr/local/tomcat 
  23. Using CATALINA_HOME:   /usr/local/tomcat 
  24. Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
  25. Using JRE_HOME:        /usr/java/jdk1.7.0_05 
  26. Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 

 4. 我們測試一下看看

 

 

下面我們來演示如何在Tomcat中自定義一個虛擬主機

二、自定義的虛擬主機

自定義的虛擬主機的目錄結構
/www/*
                            所有用戶可以通過瀏覽器直接請求的文件
     index.jsp
     logo.jpg
     WEB-INF/{web.xml , classes/*, lib/* }    這個目錄必須要有,存放的是當前應用程序的私有資源,如部署描述符文件web.xml ,所有放在 "WEB-INF" 這個目錄下的 ‘資源(內容)’ 都是 “私有資源”,只能在當前服務器上被當前應用程序所訪問 
            web.xml     當前應用程序的部署描述符文件,此文件可以複製 conf/web.xml  來獲得
            classes/*    可能存放的是編譯好的類的字節碼(可執行的字節碼)
            lib/*        打包好的jar文件,包含定義好的類
 

1. 首先編輯 conf/server.xml  添加如下內容:

  1. <Host name="tomcat.yue.com" appBase="/www" unpackWARs="true" autoDeploy="true"
  2.        <Context path="" docBase="/www/tomcat" reloadable="true"/> 
  3.                      
  4.        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 自定義的日誌格式          
  5.                    prefix="tomcat_access_" suffix=".log" 
  6.                    pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
  7. </Host> 

path=""       訪問路徑,相對於Web服務器根路徑而言的URI;如果爲空“”,則表示爲此webapp的根路徑;如果context定義在一個單獨的xml文件中,此屬性不需要定義;
docBase="/www"        相應的Web應用程序的存放位置;也可以使用相對路徑,起始路徑爲此Context所屬Host中appBase定義的路徑;切記,docBase的路徑名不能與相應的Host中appBase中定義的路徑名有包含關係,比如,如果appBase爲deploy,而docBase絕不能爲deploy-bbs類的名字;
reloadable="true"     是否允許重新加載此context相關的Web應用程序的類;默認爲false;
 

2. 創建虛擬主機所需的相關目錄和文件

  1. [root@node2 ~]# mkdir -pv /www/tomcat/WEB-INF/{classes,lib}
    mkdir: created directory `/www'
    mkdir: created directory `/www/tomcat'
    mkdir: created directory `/www/tomcat/WEB-INF'
    mkdir: created directory `/www/tomcat/WEB-INF/classes'
    mkdir: created directory `/www/tomcat/WEB-INF/lib'
  2.                              
  3. [root@node2 ~]# cp /usr/local/tomcat/conf/web.xml  /www/tomcat/WEB-INF/
  4.  
  1. [root@node2 ~]# vi /www/tomcat/index.jsp  編輯默認主頁
  2.  
  3. 內容如下:
  4.  
  5. <%@ page language="java" %> 
  6. <html> 
  7.   <head><title>TomcatA</title></head> 
  8.   <body> 
  9.     <h1><font color="red">TomcatA </font></h1> 
  10.     <table align="centre" border="1"
  11.       <tr> 
  12.         <td>Session ID</td> 
  13.         <td><%= session.getId() %></td> 
  14.       </tr> 
  15.       <tr> 
  16.         <td>Created on</td> 
  17.         <td><%= session.getCreationTime() %></td> 
  18.      </tr> 
  19.     </table> 
  20.   </body> 
  21. </html> 
  1. [root@node2 ~]# tree /www/ 
  2. /www/ 
  3. `-- tomcat 
  4.     |-- WEB-INF 
  5.     |   |-- classes 
  6.     |   |-- lib 
  7.     |   `-- web.xml 
  8.     `-- index.jsp 
  9.  
  10. 4 directories, 2 files  

3. 在Windows主機的hosts文件中加入 關於tomcat.yue.com  的 IP 對應(便於測試)

    在  C:\Windows/System32\drivers\etc\hosts  文件中添加      “192.168.1.12    tomcat.yue.com”

4. 重啓Tomcat,進行測試

5. 查看我們自定義的日誌:

  1. [root@node2 tomcat]# tail logs/tomcat_access_2012-10-28.log  
  2. .....
  3. 192.168.1.2 - - [28/Oct/2012:19:14:05 +0800] "GET / HTTP/1.1" 200 437 
  4. 192.168.1.2 - - [28/Oct/2012:19:14:06 +0800] "GET / HTTP/1.1" 200 437 


  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章