詳解Tomcat配置及使用


 

 版權聲明:本文為博主原創文章,轉載請附上作者與出處。 https://blog.csdn.net/longyin0528/article/details/80836543

1. 初識Tomcat

此處以 Tomcat 7.0.88版本為例。 

1.1 啟動

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

設置:
JAVA_HOME 為 JDK安裝路徑。 Tomcat就可以根據JAVA_HOME找到JDK,然后啟動了。(Tomcat依賴於java)
  • 1
  • 2
  • 3
  • 4

1.2 關閉

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

設置:
CATALINA_HOME 為 Tomcat安裝路徑。 這個環境變量能夠讓Tomcat在該變量所配置的目錄來啟動。 注意!如果本機安裝了多個Tomcat,不論點擊誰的startup.bat,啟動的都是CATALINA_HOME變量所指向的Tomcat。因為該原因,一般也不推薦配置這個環境變量。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.3 配置端口

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

找到下面這段配置:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
  • 1
  • 2
  • 3

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

1.4 關於端口占用問題

使用命令:

netstat -ano 可以找到占用端口的進程pid,再進入任務管理器,將對應pid的進程關閉。 如果沒有找到pid,在屬性顯示欄右鍵勾選pid,即可看到。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7



2. Tomcat目錄結構

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



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">
  • 1
  • 2

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

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

關於context元素的屬性:

- docBase: 指定web應用程序的文檔基目錄或者WAR文件的路徑名。可以是絕對路徑也可以是相對於appBase的路徑名。 - path: 指定web應用程序的上下文路徑。 - unpackWAR: 如果為true,Tomcat在運行web程序前將展開所有壓縮的web應用程序,默認值是true。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

 

配置web應用給虛擬主機:

 

方法一:

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

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

虛擬路徑映射:

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

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

缺省web應用的配置:

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

<Context path="" docBase="E:\news" />
  • 1
  • 2
  • 3

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

 

方法二:

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

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

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

然后就可以在瀏覽器中通過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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

①:靜態資源和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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

 

3.5 配置虛擬主機

在conf/server.xml中<Engine>標簽下添加一個<Host>標簽,就可以新增一台虛擬主機了。 name —— 指定虛擬主機的名稱,瀏覽器通過這個名稱訪問虛擬主機。 appBase —— 虛擬主機管理的目錄,放置在這個目錄下的web應用,虛擬主機可以自動加載。
  • 1
  • 2
  • 3
  • 4
  • 5

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

 

缺省虛擬主機

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

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

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



4. 一些其他的配置說明

4.1 war包

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

jar -cvf my.war news 將news應用的資源文件壓縮打包成 my.war,然后發送到webapps下,war文件會自動解壓,可以直接被訪問。 其實war就是zip,將zip文件后綴名改一下也能達到效果。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

 

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"/>
  • 1
  • 2

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM