詳解Tomcat配置及使用

1. 初識Tomcat

此處以 Tomcat 7.0.88版本爲例。

1.1 啓動

進入bin目錄,在點擊startup.bat啓動時,如果窗口一閃而過,啓動失敗,一般是因爲環境變量沒有設置好。

設置:
JAVA_HOME 爲 JDK安裝路徑。

Tomcat就可以根據JAVA_HOME找到JDK,然後啓動了。(Tomcat依賴於java)

1.2 關閉

同樣的,bin目錄中可以點擊shutdown.bat將其關閉,如果關閉失敗,一般是因爲環境變量沒有設置好。

設置:
CATALINA_HOME 爲 Tomcat安裝路徑。

這個環境變量能夠讓Tomcat在該變量所配置的目錄來啓動。

注意!如果本機安裝了多個Tomcat,不論點擊誰的startup.bat,啓動的都是CATALINA_HOME變量所指向的Tomcat。因爲該原因,一般也不推薦配置這個環境變量。

1.3 配置端口

進入conf目錄,編輯server.xml配置文件。

找到下面這段配置:

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

可以將port的值修改爲80,這樣下次啓動就訪問瀏覽器localhost即可,因爲瀏覽器的默認端口就是80

1.4 關於端口占用問題

使用命令:

netstat -ano

可以找到佔用端口的進程pid,再進入任務管理器,將對應pid的進程關閉。

如果沒有找到pid,在屬性顯示欄右鍵勾選pid,即可看到。



2. Tomcat目錄結構

bin —— 存放啓動和關閉Tomcat的腳本文件。
conf —— 存放Tomcat服務器的各種配置文件。
lib —— 存放Tomcat服務器的支撐jar包。
logs —— 存放Tomcat的日誌文件。
temp —— 存放運行時產生的臨時文件。
webapps —— web應用所在目錄,供外界訪問的web資源的存放目錄。
work —— Tomcat的工作目錄。



3. 虛擬主機配置

3.1 什麼是虛擬主機

虛擬主機:

由於在Tomcat中可以運行多個站點,用戶用瀏覽器訪問Tomcat服務器中的每個站點的時候,就像在訪問各自獨立的服務器一樣。

所以我們可以說,各個站點是分別運行在Tomcat這個真實服務器上的一臺虛擬主機上。

簡而言之:

一個Tomcat中可以配置多臺虛擬主機,一個虛擬主機上可以運行一個網站。

一個網站就可以認爲是一臺虛擬主機。

3.2 什麼是web應用

一個虛擬主機上的很多web資源,按照功能類別組織成一個個的web應用,再交給虛擬主機管理,並提供給用戶訪問。

3.3 如何配置web應用

當我們完成了一個web應用後,所有的該應用資源全部放在一個文件夾中,比如news,如何讓虛擬主機去識別這個文件夾,並管理呢?

我們進入到conf目錄的server.xml中,可以看到有這麼一段配置:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

這就是Tomcat初始自帶的一個虛擬主機localhost,並且外部訪問所有應用資源所在的根目錄是webapps

Host元素中的Context元素,代表web應用。

關於context元素的屬性:

- docBase: 
    指定web應用程序的文檔基目錄或者WAR文件的路徑名。可以是絕對路徑也可以是相對於appBase的路徑名。

- path:
    指定web應用程序的上下文路徑。

- unpackWAR:
    如果爲true,Tomcat在運行web程序前將展開所有壓縮的web應用程序,默認值是true。


配置web應用給虛擬主機:


方法一:

在Server.xml的<Host>標籤中,添加<Context/>標籤,就可以爲該虛擬主機配置一個web應用了。

<Context path="/news" docBase="E:\news" />

虛擬路徑映射:

path是虛擬路徑,docBase是真實路徑。

當URL中輸入localhost/news,實際上是去系統的E:\news下尋找資源。

缺省web應用的配置:

即默認的web應用,當不寫web應用路徑時,默認訪問的就是這個應用。

<Context path="" docBase="E:\news" />

注意,修改完這些配置後,服務器都需要重啓,這種方式不是很好。


方法二:

Tomcat/conf/Catalina/[Host] 目錄下寫一個xml文件,其中,xml文件的名字就是虛擬路徑,在這個xml中可以添加標籤,再在其中配置真實路徑。

如:conf/Catalina/localhost/news.xml的配置:

<?xml version="1.0" encoding="utf-8"?>
<Context docBase="E:\news" />

然後就可以在瀏覽器中通過localhost/news/...來訪問news應用裏的資源了。

這種修改方式不需要重啓服務器,稍微等待即可看到效果。

注意,如果虛擬路徑中有”/”,由於文件名不允許包含”/”,需要用”#”代替。

如果需要設置爲缺省應用,該如何操作?

只需要將 conf/Catalina/localhost/news.xml 中的news.xml名稱修改爲ROOT.xml,即可通過localhost/...直接訪問應用資源了。


方法三:

這是最爲簡單的一種方式。

直接將web應用放置到虛擬主機管理的目錄下,虛擬主機就可以找到這個web應用,從而對其進行管理。

news爲例:

直接將news文件夾放到 Tomcat/webapps 下,即可通過localhost/news/...訪問該應用資源。

如何設置缺省應用?

只要將web應用文件夾的名稱改爲ROOT,這個web應用就是缺省應用。


3.4 web應用目錄結構

如果web應用的目錄結構不合法,可能會出現各種問題。

news
|-- 
|-- WEB-INF 
    |-- classes 
    |-- lib 
    |-- web.xml 

①:靜態資源和JSP文件都可以直接放置在web應用的目錄下,瀏覽器可以直接訪問到。

②:這個文件夾可以沒有,但最好有,如果有則一定要保證其目錄結構完整。放置在WEB-INF目錄下的所有資源瀏覽器沒有辦法直接進行訪問。

③:動態web資源運行時的java類class文件要放在這個目錄下。

④:動態web資源運行時所依賴的jar包要放在這個目錄下。

⑤:整個web應用的配置文件,配置主頁/Servlet的映射/過濾監聽器的配置都需要依賴這個文件進行。

當直接訪問localhost時,默認是獲取缺省web應用目錄下的index.html文件。

可以在WEB-INFweb.xml中設置主頁的指向:

<?xml version="1.0" encoding="utf-8"?>
<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_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <welcome-file-list>
    <welcome-file>
        hello.html
    </welcome-file>
  </welcome-file-list>

</web-app>

這樣當訪問localhost時,會自動獲取hello.html內容。


3.5 配置虛擬主機

在conf/server.xml中<Engine>標籤下添加一個<Host>標籤,就可以新增一臺虛擬主機了。

name —— 指定虛擬主機的名稱,瀏覽器通過這個名稱訪問虛擬主機。

appBase —— 虛擬主機管理的目錄,放置在這個目錄下的web應用,虛擬主機可以自動加載。

由於瀏覽器訪問地址時,需要將地址翻譯成對應的ip才能找到服務器,這其中翻譯的過程是由dns服務器來實現的,我們沒辦法修改dns服務器,此時可以修改hosts文件來模擬DNS功能。


缺省虛擬主機

如果來訪者通過ip地址來訪問,這個時候服務器無法辨別當前要訪問的是哪臺虛擬主機中的資源,會默認訪問缺省虛擬主機。

缺省虛擬主機可以通過在server.xmlengine標籤上的defaultHost屬性進行配置。

<Engine name="Catalina" defaultHost="localhost">



4. 一些其他的配置說明

4.1 war包

通常我們可以把一個web應用的文件夾經過命令:

jar -cvf my.war news

將news應用的資源文件壓縮打包成 my.war,然後發送到webapps下,war文件會自動解壓,可以直接被訪問。

其實war就是zip,將zip文件後綴名改一下也能達到效果。


4.2 通用的配置

conf文件夾中,有context.xmlweb.xml,這相當於一個頂級的,父級的配置文件,在webapps中的應用配置默認也是“繼承”於這些配置文件。

比如說,就算不給應用的web.xml中設置主頁,Tomcat也會基於頂級的配置文件,將應用目錄中的index.html指定爲主頁。


4.3 自動加載更新

context元素設置reloadable屬性爲true,可以讓Tomcat自動加載更新後的web應用,當java程序修改後可以不用重啓,服務器自動重新加載。但會降低性能。


4.4 後臺管理界面

和大多數服務器一樣,Tomcat也有一個後臺管理的界面,我們可以通過授權進入這個GUI界面,然後方便地操作管理web應用。

manager

通過localhost/manager/html,可以進入主機內web應用的管理界面,在這之前需要在conf下的tomcat-users.xml添加管理用戶:

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

然後用該用戶進入,管理主機上的所有web應用。

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