日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat中server.xml文件内各节点详解

發(fā)布時(shí)間:2023/11/29 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat中server.xml文件内各节点详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于 Tomcat 基于 Java,實(shí)際上在各種 Linux 發(fā)行版里的配置方法都大同小異,只是我看見在 Arch Linux 環(huán)境里搭建 Tomcat 的文章比較少,所以在 Arch Linux 實(shí)踐一遍然后得出此文。此文假設(shè)你對(duì) Tomcat 并不十分了解,主要筆墨將會(huì)在 Tomcat 的配置之上。

1、安裝 Java JDK

在 Arch Linux 的 extra 源里有 jdk7-openjdk 和 openjdk6,可以直接使用 pacman 安裝,至于選用哪一個(gè)可以視具體情況而定。我安裝的是 OpenJDK 7:

$ sudo pacman -S jdk7-openjdk

2、安裝 Tomcat

同樣地,extra 源里已有 tomcat 版本5、6、7,可以根據(jù)具體情況而定,我這里安裝的是tomcat 6。

$ sudo pacman -S tomcat6

默認(rèn)情況 tomcat 6 安裝路徑為 /usr/share/tomcat6,這里羅列一下主要目錄的作用(箭頭表示目錄鏈接的實(shí)際位置):

  • /usr/share/tomcat6: 程序主目錄,也是變量 $CATALINA_HOME 所指向的位置,在單 tomcat 實(shí)例的情況下,也是變量 $CATALINA_BASE 所指向的位置。
  • conf -> /etc/tomcat6: 配置文件目錄。
  • lib -> /usr/share/java/tomcat6: 共享jar包目錄,這些包既給 tomcat 所使用,也能給 web 應(yīng)用程序所引用。
  • logs -> /var/log/tomcat6: 日志目錄,對(duì)于查找錯(cuò)誤以及查看訪問記錄很有幫助。
  • webapps -> /var/lib/tomcat6/webapps: 默認(rèn)的 web 應(yīng)用程序目錄,tomcat 6 自帶了幾個(gè)示例程序,下面會(huì)介紹。

現(xiàn)在可以嘗試啟動(dòng) tomcat 服務(wù):

$ sudo /etc/rc.d/tomcat start

根據(jù)安裝的 Java 運(yùn)行時(shí)的不同,啟動(dòng)時(shí)可能有錯(cuò)誤,檢查啟動(dòng)腳本的配置文件 /etc/conf.d/tomcat6 里面的 TOMCAT_JAVA_HOME 變量的值,在我的安裝中 Java 運(yùn)行時(shí)應(yīng)該在 /opt/java 里(用 $ which java 就可以看到了),因此將:

TOMCAT_JAVA_HOME=/usr/lib/jvm/java-7-openjdk 更改為如下即可: TOMCAT_JAVA_HOME=/opt/java

重啟 tomcat 服務(wù):

$ sudo /etc/rc.d/tomcat6 restart

一般應(yīng)該沒有問題,打開任意瀏覽器并在地址欄里輸入 “http://localhost:8080″,如果看到 tomcat 貓即說明服務(wù)已經(jīng)安裝妥當(dāng)并且能正常運(yùn)行了。

3、認(rèn)識(shí) webapps 目錄

這個(gè)目錄位于 tomcat6 的安裝目錄之下,實(shí)際內(nèi)容位于 /var/lib/tomcat6/webapps。 webapps 目錄里每一個(gè)目錄對(duì)應(yīng)一個(gè)web應(yīng)用程序,比如 docs 目錄的訪問地址是 http://localhost:8080/docs,同理 manager 目錄的訪問地址是 http://localhost:8080/manager,其中比較特殊的是 ROOT 目錄,它對(duì)應(yīng)的訪問地址恰好是網(wǎng)站的根目錄,即 http://localhost:8080/。

Tomcat 附帶的示例程序可以逐個(gè)訪問體驗(yàn)一下,其中 manager 和 host-manager 這兩個(gè)應(yīng)用程序設(shè)置了需要登錄驗(yàn)證才能訪問,增加登錄用戶的方法是編輯 Tomcat 安裝目錄下的配置文件 conf/tomcat-users.xml (實(shí)際上也是文件 /etc/tomcat6/tomcat-users.xml),添加如下幾行:

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

然后重啟 Tomcat 服務(wù),即可以通過用戶名 tomcat 和密碼 tomcat 登錄并訪問 manager 和 host-manager 兩個(gè)應(yīng)用程序。

每個(gè) Java Web 應(yīng)用程序都有如下的目錄結(jié)構(gòu)

  • /index.html 訪客直接訪問的資源,比如靜態(tài)圖片和CSS樣式表。
  • /WEB-INF/ 訪客不能直接訪問的資源。
  • /WEB-INF/classes 應(yīng)用程序的 Java 源碼編譯后的class文件。
  • /WEB-INF/web.xml 應(yīng)用程序的配置文件。
  • /WEB-INF/lib 應(yīng)用程序所引用的包。

當(dāng)然也不是所有都是必須的,你甚至可以創(chuàng)建一個(gè)目錄,比如“hello”,然后在里面只創(chuàng)建一個(gè) index.html 文件(內(nèi)容隨便),即可以通過 http://localhost:8080/hello/index.html 訪問了。(當(dāng)然這樣的不是Web應(yīng)用程序,此方法僅用于測(cè)試用)

下面使用 Apache Maven 創(chuàng)建一個(gè)最簡(jiǎn)單的 Web 應(yīng)用程序,在用戶目錄里執(zhí)行如下命令創(chuàng)建 Web 應(yīng)用程序的骨架:

$ mvn archetype:generate

在交互界面中,

Choose a number or apply filter: 輸入 174,即創(chuàng)建 maven-archetype-webapp 類型項(xiàng)目。 Choose version: 輸入5,即版本 1.0。 Define value for property ‘groupId’: 輸入 org.test。 Define value for property ‘a(chǎn)rtifactId’: 輸入 demo。 Define value for property ‘version’: 輸入 1.0。 Define value for property ‘package’: 輸入 org.test.demo Confirm properties configuration: 直接回車

上面涉及 Maven 知識(shí)不在此文的討論范圍,如果不熟悉的話可以參閱免費(fèi)的中文電子圖書《Maven in action》,順帶提一下,Maven 是Java項(xiàng)目構(gòu)建和管理的最常用工具之一。

現(xiàn)在應(yīng)該看到一個(gè)名為 demo 的目錄,進(jìn)入后可以使用 Maven 打包項(xiàng)目:

$ cd demo$ mvn package

打包的結(jié)果是文件 ./target/demo.war,把這個(gè)文件復(fù)制到 webapps 目錄:

$ sudo cp target/demo.war /var/lib/tomcat6/webapps/

由于 Tomcat 默認(rèn)創(chuàng)建的站點(diǎn)會(huì)自動(dòng)部署應(yīng)用程序,所以剛才復(fù)制到 webapps 目錄的文件 demo.war 會(huì)被自動(dòng)解壓縮,檢視 webapps 目錄應(yīng)該會(huì)發(fā)現(xiàn)多出一個(gè)名字為 demo 的目錄,現(xiàn)在可以在瀏覽器里嘗試訪問 http://localhost:8080/demo,應(yīng)該看到 “Hello World!”字樣,這就是剛才用 Maven 創(chuàng)建的 Web 應(yīng)用程序運(yùn)行的結(jié)果。

需要說明的是,java web 應(yīng)用程序打包之后所形成的 war 文件并不是一定要解壓出來才能運(yùn)行的,這點(diǎn)將會(huì)在下一節(jié)的配置里會(huì)講到。

4、認(rèn)識(shí) Tomcat 的主配置文件 server.xml

這個(gè)文件位于 tomcat 6 安裝目錄之下的 conf 目錄之內(nèi),實(shí)際內(nèi)容位于 /etc/tomcat6/server.xml。

正如該文件的擴(kuò)展名所示,這是一個(gè) xml 格式的文件,打開之后將會(huì)看到如下的結(jié)構(gòu):

<Server port="8005" shutdown="SHUTDOWN"><Service name="Catalina"><Executor ...... /><Connector ...... /><Connector ...... /><Engine name="Catalina" ... ><Host name="localhost" ... ><Context ... /></Host></Engine></Service> </Server>

即一個(gè)由 Server->Service->Engine->Host->Context 組成的四層結(jié)構(gòu),從里層向外層分別是:

  • Context: 即 Web 應(yīng)用程序,一個(gè) Context 即對(duì)于一個(gè) Web 應(yīng)用程序。
  • Host:即虛擬主機(jī),比如 www.dog.com 對(duì)應(yīng)一個(gè)虛擬主機(jī),api.dog.com 對(duì)于另一個(gè)虛擬主機(jī)。一個(gè) Host 用于定義一個(gè)虛擬主機(jī)。(所謂的”一個(gè)虛擬主機(jī)”可簡(jiǎn)單理解為”一個(gè)網(wǎng)站”)
  • Engine:一組虛擬主機(jī)的集合。比如www.dog.com 和 api.dog.com 可以組成一組虛擬主機(jī)集合。
  • Service:一組 Engine 的集合,包括線程池 Executor 和連接器 Connector 的定義。

CONNECTOR 的配置

一個(gè) Connector 即一個(gè)對(duì)外界開放的端口,簡(jiǎn)單理解就是大部分網(wǎng)絡(luò)服務(wù)程序都會(huì)遇到的 IpAddress:Port 的組合,比如 192.168.0.10:8080 就是一個(gè)端口,當(dāng)然在 Connector 里可以定義的內(nèi)容要豐富得多,即 Connector 這個(gè) XML 節(jié)點(diǎn)里可以加上許多屬性。下面列舉一下常用的:

  • enableLookups:(default=true) 是否允許反向解析訪客的IP地址,當(dāng)你的應(yīng)用程序使用 request.getRemoteHost() 時(shí)如果只需要IP地址,建議禁用此項(xiàng),這樣能節(jié)省反向域名解析的時(shí)間。
  • maxPostSize:(default=2097152 即2MB) 最大允許 POST 上傳的數(shù)據(jù)大小(單位為:字節(jié)),對(duì)于一般網(wǎng)站來說,比如有寫評(píng)論寫文章的網(wǎng)站,默認(rèn)的2MB已經(jīng)足夠,不過如果網(wǎng)站帶有圖片甚至文件上傳功能,則需要根據(jù)具體情況來定。
  • protocol:連接器的類型,tomcat 6 有如下幾種選擇
    • org.apache.coyote.http11.Http11Protocol:簡(jiǎn)寫為 “HTTP/1.1″,這是默認(rèn)的連接器,一個(gè)訪客網(wǎng)絡(luò)連接需要一個(gè)線程,并發(fā)性能比較低。
    • org.apache.coyote.http11.Http11NioProtocol:NIO連接器,一個(gè)由非阻塞的socket工作模式構(gòu)成的連接器,并發(fā)性能良好,純Java實(shí)現(xiàn)。
    • org.apache.coyote.http11.Http11AprProtocol:APR連接器,所謂 APR 就是網(wǎng)絡(luò)上最多服務(wù)器使用的 Web 服務(wù)程序 Apache Http Server 所使用的庫(kù),Tomcat 建議在生產(chǎn)環(huán)境使用,具體方法下面會(huì)介紹。
  • redirectPort:當(dāng)用戶訪問非https的資源而該資源又需要https方式訪問時(shí),tomcat會(huì)自動(dòng)重定向到https端口,一般https使用 TCP 443端口,所以一般取值”443″。
  • SSLEnabled:(default=false),設(shè)置當(dāng)前連接器是否使用安全SSL傳輸,如果設(shè)置為”true”,則應(yīng)該同時(shí)設(shè)置下面兩個(gè)屬性: scheme=”https” (default=http) 可以設(shè)置為 http 或者 https。 secure=”true” (default=false)。
  • adress:連接器所綁定的IP地址,當(dāng)一臺(tái)服務(wù)器存在多個(gè)ip地址時(shí)可以指定其中的需要綁定的一個(gè),默認(rèn)不設(shè)置該屬性的值表示綁定當(dāng)前服務(wù)器的所有ip地址。
  • compressableMimeType:(default=”text/html,text/xml,text/plain”) 指定需要GZIP壓縮的資源的類型。
  • compression:(default=off) 是否啟用GZIP壓縮,可以取值 on/off/force,設(shè)置為on之后會(huì)對(duì) compressableMimeType 屬性指定的資源類型啟用GZIP壓縮。
  • connectionTimeout:(default=”60000″) 當(dāng)訪客網(wǎng)絡(luò)連接后,服務(wù)器等待第一行Request頭出現(xiàn)的時(shí)間。單位是毫秒。
  • executor:指定當(dāng)前連接器使用的線程池的名稱,如果指定,則忽略其他針對(duì)線程數(shù)量的設(shè)置,比如 maxThreads。
  • maxThreads:(default=200) 最多可創(chuàng)建線程的數(shù)量。
  • port=”80″:綁定端口
  • keepAliveTimeout:(default=connectionTimeout),訪客完成一次請(qǐng)求后維持網(wǎng)絡(luò)連接的時(shí)間。

一個(gè)簡(jiǎn)單的 Connector 定義如下:

<Connector port="80" protocol="HTTP/1.1"connectionTimeout="60000"redirectPort="443" />

EXECUTOR 的配置

Executor 用于定義共享的線程池。默認(rèn)情況下每個(gè) Connector 都會(huì)產(chǎn)生自己的一個(gè)線程池,如果你想多個(gè) Connector 共享一個(gè)線程池,則可以先定義一個(gè)線程池,如:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/>

然后修改上述的 Connector 配置,增加 executor 屬性,修改后的配置如下:

<Connector executor="tomcatThreadPool"port="80" protocol="HTTP/1.1"connectionTimeout="60000"redirectPort="443" />

HOST 的配置

一個(gè) Host 配置即為一個(gè)虛擬主機(jī),例如下面是一個(gè)簡(jiǎn)單的 Host 配置:

<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><Alias>dog.com</Alias><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> </Host>

Host 配置節(jié)點(diǎn)各個(gè)屬性的作用:

  • name:設(shè)置虛擬主機(jī)的域名,比如 localhost 表示本機(jī)名稱,實(shí)際應(yīng)用時(shí)應(yīng)該填寫具體域名,比如 www.dog.com 或者 dog.com,當(dāng)然如果該虛擬主機(jī)是給內(nèi)部人員訪問的,也可以直接填寫服務(wù)器的 ip 地址,比如 192.168.1.10。
  • autoDeploy:是否允許自動(dòng)部署,默認(rèn)值是 true,即表示 Tomcat 會(huì)自動(dòng)檢測(cè) appBase 目錄下面的文件變化從而自動(dòng)應(yīng)用到正在運(yùn)行的 Web 應(yīng)用程序。
  • unpackWARs:設(shè)置是否自動(dòng)展開 war 壓縮包再運(yùn)行 Web 應(yīng)用程序,默認(rèn)值是 true。
  • appBase:設(shè)置 Web 應(yīng)用程序組的路徑。前面說過一個(gè)虛擬主機(jī)可以由多個(gè) Web 應(yīng)用程序構(gòu)成,所以這里的 appBase 所指向的目錄應(yīng)該是準(zhǔn)備用于存放這一組 Web 應(yīng)用程序的目錄,而不是具體某個(gè) Web 應(yīng)用程序的目錄本身(即使該虛擬主機(jī)只由一個(gè) Web 應(yīng)用程序組成)。appBase 屬性的值可以是相對(duì)于 Tomcat 安裝目錄的相對(duì)路徑,也可以是絕對(duì)路徑,需要注意的是該路徑必須是 Tomcat 有權(quán)限訪問的,通過 Arch Linux 源安裝的 Tomcat 是通過 tomcat 用戶運(yùn)行的,因此創(chuàng)建一個(gè)新的 appBase 目錄之后可以使用 chown 命令更改目錄的所有者。

下面舉例說明如何創(chuàng)建一個(gè)新的虛擬主機(jī) www.dog.com:

在目錄 /var/lib/tomcat6 下面可以看到安裝 Tomcat 時(shí)默認(rèn)創(chuàng)建的 webapps 目錄,為了方便管理我們即將創(chuàng)建的虛擬主機(jī)的文檔也在 /var/lib/tomcat6 里創(chuàng)建:

$ sudo mkdir dog

然后在 dog 目錄里面創(chuàng)建目錄 ROOT,再在 ROOT 里面創(chuàng)建文件 index.html(內(nèi)容隨便)。

現(xiàn)在將目錄的所有者和所有組都更改為 tomcat:

$ sudo chown -R tomcat:tomcat dog

然后在 server.xml 的 Host 節(jié)點(diǎn)下增加如下 Host 節(jié)點(diǎn):

<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog"> </Host>

重啟 Tomcat 服務(wù)就可以在瀏覽器里通過地址 http://www.dog.com 訪問這個(gè)新創(chuàng)建的虛擬主機(jī)了,當(dāng)然你必須要先在 /etc/hosts 文件里增加 www.dog.com 到 127.0.0.1 的解析記錄,如下:

127.0.0.1 www.dog.com

有時(shí)一個(gè)虛擬主機(jī)可能會(huì)同時(shí)綁定多個(gè)域名,比如 www.dog.com 和 dog.com,這時(shí)可以通過在 Host 配置節(jié)點(diǎn)里增加 Alias 實(shí)現(xiàn),比如:

<Alias>dog.com</Alias>

另外上面示例當(dāng)中的 <Valve className=… /> 配置了訪客的訪問日志的儲(chǔ)存位置以及文件名。

ENGINE 的配置

默認(rèn)的 Engine 節(jié)點(diǎn)如下:

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

這個(gè)應(yīng)該不用展開敘述了,其中 defaultHost 用于指定訪客在沒有相應(yīng)的虛擬主機(jī)時(shí),Tomcat 默認(rèn)選擇的虛擬主機(jī)的名稱。考慮如下的情形:

假如有3個(gè)域名都 DNS 解析到你的服務(wù)器,比如 dog.com, www.dog.com, api.dog.com,當(dāng)前你只配置了虛擬主機(jī) dog.com 和 www.dog.com,那么當(dāng)有個(gè)訪客通過 api.dog.com 訪問你的服務(wù)器時(shí),Tomcat 就會(huì)依據(jù) defaultHost 的設(shè)置返回其中一個(gè)虛擬主機(jī)運(yùn)行的結(jié)果。實(shí)際應(yīng)用中 defaultHost 應(yīng)該設(shè)置為你的主力域名,比如 www.dog.com。

5、多站點(diǎn)的配置:設(shè)置多個(gè)HOST節(jié)點(diǎn)

有時(shí)我們需要在一臺(tái)服務(wù)器上跑多個(gè)站點(diǎn),通過 Tomcat 很容易實(shí)現(xiàn)這點(diǎn),下面假設(shè)我們要搭建 www.dog.com 和 www.cat.com 這兩個(gè)站點(diǎn)。

首先要確定你的兩個(gè)域名的 DNS 已經(jīng)能正確解析到你的服務(wù)器,因?yàn)檫@里我們是做實(shí)驗(yàn),所以可以在本機(jī)添加域名解析。修改 /etc/hosts 文件,加入如下兩行:

127.0.0.1 www.cat.com 127.0.0.1 www.dog.com

然后在 /var/lib/tomcat6 目錄里分別創(chuàng)建名字為 cat 和 dog 的兩個(gè)目錄,然后在每個(gè)目錄里都創(chuàng)建名字為 ROOT 的目錄,并在 ROOT 里面創(chuàng)建名字為 index.html 文件(內(nèi)容隨便)。然后將目錄 cat 和 dog 的所有者和所有組都更改為 tomcat,方法參考上一節(jié),這里不再贅述。

現(xiàn)在編輯 Tomcat 的主配置文件 server.xml,在默認(rèn)的 Host 節(jié)點(diǎn)下面再加入如下兩個(gè)新的 Host 節(jié)點(diǎn):

<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog" autoDeploy="true" unpackWARs="true"> </Host> <Host name="www.cat.com" appBase="/var/lib/tomcat6/cat" autoDeploy="true" unpackWARs="true"> </Host>

在 Host 節(jié)點(diǎn)里面可以根據(jù)上一節(jié)的說明加入自己需要的屬性或者 Alias 和 Value 子節(jié)點(diǎn)。重啟 Tomcat 服務(wù),現(xiàn)在應(yīng)該可以在瀏覽器里分別通過 http://www.dog.com 和 http://www.cat.com 瀏覽這兩個(gè)站點(diǎn)了。

6、使用 NIO 連接器

默認(rèn)的連接器并發(fā)性能不太好,如果網(wǎng)站的并發(fā)訪問量不大則無所謂,或者在公司內(nèi)部網(wǎng)這點(diǎn)可能體會(huì)不出來(因?yàn)樵趦?nèi)部網(wǎng)可能每個(gè)請(qǐng)求在1秒鐘之內(nèi)就完成了),當(dāng)環(huán)境換成 Internet 之后,可能每個(gè)客戶請(qǐng)求在網(wǎng)絡(luò)會(huì)幾秒甚至幾十秒的延時(shí)才傳輸完成,這樣則會(huì)導(dǎo)致“許多訪客同時(shí)連接”的現(xiàn)象,當(dāng) Tomcat 的連接器所有線程都被占用的情況下,后來者(訪客)就會(huì)被卡在門外。因此我們最好在實(shí)際環(huán)境中把默認(rèn)的連接器改成 NIO 連接器(non blocking Java connector)。方法很簡(jiǎn)單,只要把 Connector 節(jié)點(diǎn)的 protocol 屬性值更改為 “org.apache.coyote.http11.Http11NioProtocol” 即可,例如原先的是這樣:

<Connector port="80" protocol="HTTP/1.1"redirectPort="443" />

修改為:

<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"redirectPort="443" />

然后重啟 Tomcat 服務(wù)器即可。

7、為網(wǎng)站添加 SSL 證書

有時(shí)網(wǎng)站可能涉及重要的業(yè)務(wù)數(shù)據(jù),在互聯(lián)網(wǎng)上傳輸這些頁(yè)面最好以 https 方式傳輸,這樣可以防止重要信息被中間環(huán)節(jié)竊取。

詳細(xì)的方法可以參考我之前的一篇文章《添加 GoDaddy SSL 證書到你的網(wǎng)站》,文章介紹如何申請(qǐng)簽名的 SSL 證書以及如何修改 Tomcat 的配置。如果你現(xiàn)在只是想試驗(yàn)一下為網(wǎng)站添加 https 功能,或者只是在公司的內(nèi)部網(wǎng)站使用上 https,則可以使用一個(gè)簡(jiǎn)單的方法實(shí)現(xiàn):使用自簽名 SSL 證書。所謂自簽名的 SSL 證書就是自己產(chǎn)生的證書,這種證書沒有通過第三方證書商簽名認(rèn)證,所以在瀏覽這種網(wǎng)站時(shí)瀏覽器會(huì)提示證書錯(cuò)誤,不過訪客是完全可以繼續(xù)瀏覽網(wǎng)站內(nèi)容。

下面假設(shè)我們要為上一節(jié)的 www.dog.com 添加SSL證書。首先使用 Java 自帶的 keytool 工具產(chǎn)生一個(gè) keystore 文件(一種用于存放證書的文件格式),在自家目錄執(zhí)行如下命令:

$ keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore

然后它會(huì)提示你設(shè)置一個(gè)密碼以及輸入DN信息:

Enter keystore password: 設(shè)置一個(gè)用于保護(hù)你keystore文件的密碼,例如123456 Re-enter new password: 重復(fù)上面的密碼 What is your first and last name?[Unknown]: www.dog.com (就是域名啦) What is the name of your organizational unit?[Unknown]: Networking 組織單位名稱(隨便) What is the name of your organization?[Unknown]: dog.com 組織名稱(隨便) What is the name of your City or Locality?[Unknown]: Shenzhen 所在城市(隨便) What is the name of your State or Province?[Unknown]: Guangdong 所在省份(隨便) What is the two-letter country code for this unit?[Unknown]: CN 所在國(guó)家的兩位代號(hào)(隨便) Is CN=www.dog.com, OU=Networking, O=dog.com, L=Shenzhen, ST=Guangdong, C=CN correct?[no]: yes 以上信息正確則輸入yesEnter key password for(RETURN if same as keystore password): 這一步直接敲回車

完成后會(huì)在當(dāng)前目錄產(chǎn)生一個(gè) tomcat.keystore 文件。把這個(gè)文件復(fù)制到 dog 網(wǎng)站應(yīng)用程序的根目錄(即 /var/lib/tomcat6/dog):

$ sudo cp tomcat.keystore /var/lib/tomcat6/dog

然后修改 Tomcat 的主配置文件 server.xml,在默認(rèn)的 Connector 節(jié)點(diǎn)之下添加如下的新 Connector 節(jié)點(diǎn):

<Connector port="443" protocol="HTTP/1.1″SSLEnabled="true"scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore"keystorePass="123456" />

假如你使用的是 NIO 連接器,則應(yīng)該這樣把 protocol 屬性值換成 Http11NioProtocol,即:

<Connector port="443" protocol="Http11NioProtocol″SSLEnabled="true"scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore"keystorePass="123456" />

重啟 Tomcat 服務(wù),用瀏覽器訪問 https://www.dog.com,這時(shí)瀏覽器可能會(huì)提示證書錯(cuò)誤,忽略它(對(duì)于 Firefox 瀏覽器還需要點(diǎn)擊 “添加例外” 按鈕才能忽略)即可以看到已經(jīng)是 https 方式在瀏覽網(wǎng)頁(yè)了。

8、使用 APR 高性能連接器

APR 即 Apache Portable Runtime,提供了 Apache Http 的高性能特性,下面普通連接器、NIO和APR的特性簡(jiǎn)單比較(摘自這里):

Java Blocking Connector Java Nio Blocking Connector APR ConnectorClassname Http11Protocol Http11NioProtocol Http11AprProtocolTomcat Version 3.x 4.x 5.x 6.x 6.x 5.5.x 6.xSupport Polling NO YES YESPolling Size N/A Unlimited - Restricted by mem Unlimited - ConfigurableRead HTTP Request Blocking Non Blocking BlockingRead HTTP Body Blocking Sim Blocking BlockingWrite HTTP Response Blocking Sim Blocking BlockingSSL Support Java SSL Java SSL OpenSSLSSL Handshake Blocking Non blocking BlockingMax Connections maxThreads See polling size See polling size

Tomcat 文檔在 NIO 和 APR 之間比較推薦后者,由于我沒有實(shí)際環(huán)境(即大量從 internet 過來的訪問)詳細(xì)測(cè)試和比較,所以我也不太清楚兩者相差多少。下面介紹使用 APR 的方法:

先安裝 APR for Tomcat 的本地庫(kù)和 OpenSSL(假如需要使用 SSL 證書并且系統(tǒng)還沒安裝的話),Arch Linux 的 local 源里面已經(jīng)存在這兩者,所以安裝方法很簡(jiǎn)單:

$ sudo pacman -S tomcat-native $ sudo pacman -S openssl

然后修改 Tomcat 的主配置文件 server.xml,把 Connector 的 protocol 屬性值修改為“org.apache.coyote.http11.Http11AprProtocol”,修改后的配置大致如下:

<Connector port="80" protocol="org.apache.coyote.http11.Http11AprProtocol"redirectPort="443" />

(注:保留 protocol=”HTTP/1.1″ 屬性值也是可以的)

然后重啟 Tomcat 服務(wù)即可,如何知道是否用上 APR 連接器呢?只要翻查 Tomcat 的日志文件就知道了,默認(rèn)的日志文件為:/var/log/tomcat6/catalina.err:

$ sudo tail /var/log/tomcat6/catalina.err

如果在重啟 Tomcat 服務(wù)后看到日志末尾處有出現(xiàn)下面紅色字的內(nèi)容,則表示已經(jīng)成功用上 APR連接器了。

Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-80 Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-443 Feb 19, 2012 9:44:05 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 1281 ms

如果你使用了 APR 連接器同時(shí)又需要添加 SSL 證書(即需要 https 訪問功能),則需要使用 OpenSSL 的方法產(chǎn)生加密私鑰并且修改一下相應(yīng)的 Connector 的配置,仍然以上面第7節(jié)的例子,即為 www.dog.com 站點(diǎn)添加 SSL 證書來講解。

先用 OpenSSL 產(chǎn)生私鑰以及自簽名,在自家目錄下執(zhí)行下面命令:

# Generate private key $ openssl genrsa -out ca.key 1024 # Generate CSR $ openssl req -new -key ca.key -out ca.csr# Generate Self Signed Key $ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

同上面第7節(jié)類似,中途也會(huì)要求你輸入 DN 信息,完成后把 ca.crt 和 ca.key 文件復(fù)制到 dog 站點(diǎn)應(yīng)用程序的根目錄:

$ sudo cp ca.crt /var/lib/tomcat6/dog $ sudo cp ca.key /var/lib/tomcat6/dog

然后修改 Connector 節(jié)點(diǎn)為如下:

<Connector port="443" SSLEnabled="true"scheme="https" secure="true"SSLCertificateFile="/var/lib/tomcat6/dog/ca.crt"SSLCertificateKeyFile="/var/lib/tomcat6/dog/ca.key"/>

重啟 Tomcat 服務(wù)之后生效。

最后

此文簡(jiǎn)單講述在 Arch Linux 環(huán)境下安裝 Tomcat 6、修改主配置文件、搭建多站點(diǎn)、添加 SSL 證書以及使用高性能的 NIO 和 APR 連接器的方法和步驟。

轉(zhuǎn)載于:https://www.cnblogs.com/tdskee/p/7908307.html

總結(jié)

以上是生活随笔為你收集整理的Tomcat中server.xml文件内各节点详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。