Tomcat

Tomcat目錄層次結構                                                                  html

 

1

Tomcat服務器端口的配置                                                            java

Tomcat的全部配置都放在conf文件夾之中,裏面的server.xml文件是配置的核心文件。若是想修改Tomcat服務器的啓動端口,則能夠在server.xml配置文件中的Connector節點進行的端口修改。web

例如:將Tomcat服務器的啓動端口由默認的8080改爲8081端口apache

<Connector port="8081" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443" />

Tomcat服務器虛擬目錄的映射方式                                                   瀏覽器

Web應用開發好後,若想供外界訪問,須要把web應用所在目錄交給web服務器管理,這個過程稱之爲虛似目錄的映射。tomcat

1.虛擬目錄的映射方式一:在server.xml文件的host元素中配置安全

找到server.xml文件的host元素,在<Host></Host>這對標籤加上<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />便可將在F盤下的JavaWebDemoProject這個JavaWeb應用映射到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat服務器管理的,JavaWebApp是一個硬盤上不存在的目錄,是咱們本身隨便寫的一個目錄,也就是虛擬的一個目錄,因此稱之爲"虛擬目錄",代碼以下:服務器

<Host name="localhost"  appBase="webapps"
              unpackWARs="true" autoDeploy="true"
              xmlValidation="false" xmlNamespaceAware="false">
 
          <Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
  </Host>

其中,Context表示上下文,表明的就是一個JavaWeb應用,Context元素有兩個屬性,app

  Ⅰ.path:用來配置虛似目錄,必須以"/"開頭。less

  Ⅱ.docBase:配置此虛似目錄對應着硬盤上的Web應用所在目錄。

使用瀏覽器訪問"/JavaWebApp"這個虛擬目錄下的1.jsp這個web資源。1.jsp能夠正常訪問,這說明咱們已經成功地將將在F盤下的JavaWebDemoProject這個JavaWeb應用映射到JavaWebApp這個虛擬目錄上了,訪問"/JavaWebApp/1.jsp"就至關於訪問"F:\JavaWebDemoProject\1.jsp"

1

  注意:在Tomcat6以後中,再也不建議在server.xml文件中使用配置context元素的方式來添加虛擬目錄的映射,由於每次修改server.xml文件後,Tomcat服務器就必需要從新啓動後才能從新加載server.xml文件。

2.虛擬目錄的映射方式二:讓tomcat服務器自動映射

tomcat服務器會自動管理webapps目錄下的全部web應用,並把它映射成虛似目錄。換句話說,tomcat服務器webapps目錄中的web應用,外界能夠直接訪問。

例如:把F盤下的JavaWebDemoProject這個JavaWeb應用直接copy到tomcat服務器webapps目錄中,此時Tomcat服務器就會自動爲JavaWebDemoProject這個JavaWeb應用映射一個同名的虛擬目錄"/JavaWebDemoProject",而後就可使用瀏覽器訪問這個JavaWeb應用的資源了。

11

3.虛擬目錄的映射方式三

In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.

在tomcat服務器的\conf\Catalina\localhost目錄下添加一個以xml做爲擴展名的文件,xml文件的名字能夠任意取,好比aa.xml,"The context path and version will be derived from the base name of the file",這一句話的意思翻譯過來就是"context元素的path屬性源自因而這個xml文件的名字",上面提到過,Context元素的path屬性是用來配置虛似目錄的名稱的,因此虛似目錄的名稱就是這個xml文件的名稱。

$CATALINA_BASE指的就是tomcat服務器根目錄,[enginename]指的是Tomcat服務器使用的引擎名稱,Tomcat使用的引擎是Catalina

在aa.xml文件中添加Context元素映射JavaWeb應用,代碼以下:

<Context docBase="F:\JavaWebDemoProject" />

downloaddownload

注意:在Context元素中並無指明path屬性來設置虛擬目錄的名稱,那麼"F:\JavaWebDemoProject"映射的虛擬目錄名稱是神馬呢,就是當前正在編輯的這個xml文件的名稱aa。(http://localhost:8080/aa/1.jsp)

使用這種方式映射虛擬目錄的最大好處是修改了配置文件後不用重啓Tomcat服務器,好比將aa.xml修改爲bb.xml,Tomcat服務器會自動Undeploying context [/aa],而後自動信息: Deploying configuration descriptor D:\apache-tomcat-7.0.53\conf\Catalina\localhost\bb.xml

Tomcat服務器配置虛似主機                                                         

 

  • 配置虛似主機就是配置一個網站。
    在Tomcat服務器配置一個虛擬主機(網站),須要修改conf文件夾下的server.xml這個配置文件,使用Host元素進行配置,打開server.xml,能夠看到Tomcat服務器自帶的一個名稱爲localhost的虛擬主機(網站):

 

download

平時咱們將開發好的JavaWeb應用放到webapps文件夾下,而後就可使用"http://localhost:端口號/JavaWebAppName"的方式去訪問了,其實訪問的就是name是"localhost"的那臺虛擬主機(Host),這臺虛擬主機管理webapps文件夾下的全部web應用。

例如:http://localhost:8080/JavaWebDemoProject/1.jsp,這個URL地址訪問的就是名稱是localhost的那臺虛擬主機下的JavaWebDemoProject這個應用裏面的1.jsp這個web資源。

 

<Host name="www.yydcdut.com" appBase="F:\JavaWebApps">
    
 </Host>

這裏咱們新配置一個虛擬主機,虛擬主機的name是"www.yydcdut.com",虛擬主機"www.yydcdut.com"如今管理着JavaWebApps文件夾下的全部web應用,平時咱們在互聯網上使用域名"www.baidu.com"訪問百度的網站時,其實就是在訪問一個名稱是"www.baidu.com"的虛擬主機,因此當咱們要訪問name是"www.yydcdut.com"的這個虛擬主機時,就可使用"域名(www.yydcdut.com)"去訪問,注意一下appBase="F:\JavaWebApps",這裏的JavaWebApps文件夾表明的不是一個項目的根目錄,而是一個存放了一個或者多個JavaWeb應用的文件夾。

JavaWeb應用的組成結構                                                            

download

WebRoot →Web應用所在目錄,通常狀況下虛擬目錄要配置到此文件夾當中。

    ┝WEB-INF:此文件夾必須位於WebRoot文件夾裏面,並且必須以這樣的形式去命名,字母都要大寫。

      ┝web.xml:配置文件,有格式要求,此文件必須以這樣的形式去命名,而且必須放置到WEB-INF文件夾中。

web.xml的格式能夠直接從Tomcat中參考獲得:找到Tomcat目錄下的webapps\ROOT\WEB-INF這個目錄下的web.xml文件,把這個文件拷貝到咱們新建的WEB-INF文件夾中,並修改這個web.xml文件,把裏面的註釋刪除掉,只留下以下所示的代碼便可:

<?xml version="1.0" encoding="ISO-8859-1"?>
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  version="2.5">
    <display-name>Welcome to Tomcat</display-name>
   <description>
      Welcome to Tomcat
   </description>
 </web-app>

打包JavaWeb應用                                                                    

在Java中,使用"jar"命令來對將JavaWeb應用打包成一個War包,範例:將JavaWebDemoProject這個JavaWeb應用打包成war包

download

執行完以後,就能夠獲得一個war文件,平時開發完JavaWeb應用後,通常都會將JavaWeb應用打包成一個war包,而後將這個war包放到Tomcat服務器的webapps目錄下,當Tomcat服務器啓動時,就會自動將webapps目錄下的war包解壓。

好比如今將war文件放到放到Tomcat服務器的webapps目錄下,Tomcat服務器啓動後會自動"Deploying web application",將這個war文件解壓縮。

Tomcat的體系結構                                                                   

download

 Tomcat服務器的啓動是基於一個server.xml文件的,Tomcat啓動的時候首先會啓動一個Server,Server裏面就會啓動Service,Service裏面就會啓動多個"Connector(鏈接器)",每個鏈接器都在等待客戶機的鏈接,當有用戶使用瀏覽器去訪問服務器上面的web資源時,首先是鏈接到Connector(鏈接器),Connector(鏈接器)是不處理用戶的請求的,而是將用戶的請求交給一個Engine(引擎)去處理,Engine(引擎)接收到請求後就會解析用戶想要訪問的Host,而後將請求交給相應的Host,Host收到請求後就會解析出用戶想要訪問這個Host下面的哪個Web應用,一個web應用對應一個Context。

 

 

 

 

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/.keystore" keystorePass="123456"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <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>
      <Host name="www.gacl.cn" appBase="F:\JavaWebApps">
        <Context path="" docBase="F:\JavaWebApps\JavaWebDemo1"/>
      </Host>

    </Engine>
  </Service>
</Server>

生成Tomcat服務器的數字證書                                                       

SUN公司提供了製做證書的工具keytool, 在JDK 1.4之後的版本中都包含了這一工具,它的位置爲<JAVA_HOME>\bin\keytool.exe

keytool -genkey -alias tomcat -keyalg RSA

使用keytool生成一個名字爲tomcat的證書,存放在.keystore這個密鑰庫中

download

命令執行完以後,操做系統的用戶文件夾下面就會生成一個.keystore文件。

使用命令:keytool -list -keystore .keystore查看.keystore密鑰庫裏面的全部證書

download

配置https鏈接器                                                                      

將生成的.keystore密鑰庫文件拷貝到Tomcat服務器的conf目錄下,修改server.xml文件,配置https鏈接器,代碼以下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                clientAuth="false" sslProtocol="TLS" 
                keystoreFile="conf/.keystore" keystorePass="123456"/>

在server.xml文件中配置了一個端口是8443的加密鏈接器,瀏覽器訪問8443端口的鏈接器時,將會以加密的方式來訪問web服務器,這個鏈接器收到瀏覽器的請求後,將會向瀏覽器出示一份數字證書,瀏覽器再用數字證書裏面的公鑰來加密數據,keystoreFile="conf/.keystore" 用來指明密鑰庫文件的所在路徑,服務器從密鑰庫中提取證書時須要密碼,keystorePass="123456"指明密鑰庫的訪問密碼。

使用"https://localhost:8443/"訪問8443的加密鏈接器

因爲密鑰庫裏面的證書是咱們手工生成的,沒有通過CA的認證,因此使用"https://localhost:8443/"訪問8443的加密鏈接器,瀏覽器會出現"證書錯誤,導航已阻止",瀏覽器認爲當前要訪問的這個主機是不安全的,不推薦繼續訪問,點擊「繼續瀏覽此網站(不推薦)」就能夠繼續訪問了,以下圖所示:

downloaddownload

我是天王蓋地虎的分割線                                                             

 

 

參考:http://www.cnblogs.com/xdp-gacl/p/3744053.html