一、Tomcat服務器端口的配置
- Tomcat的所有配置都放在conf文件夾之中,里面的server.xml文件是配置的核心文件。
- 如果想修改Tomcat服務器的啟動端口,則可以在server.xml配置文件中的Connector節點進行的端口修改。
將Tomcat服務器啟動端口修改成8081端口--修改config/server.xml文件
修改前
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />
修改后
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />
二、Tomcat服務器虛擬目錄的映射方式
Web應用開發好后,若想供外界訪問,需要把web應用所在目錄交給web服務器管理,這個過程稱之為虛似目錄的映射。那么在Tomcat服務器中,如何進行虛擬目錄的映射呢?總共有如下的幾種方式:
2.1 虛擬目錄的映射方式一:在server.xml文件的host元素中配置
默認的host配置
<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 "%r" %s %b" />
</Host>
在<Host></Host>這對標簽加上<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />即可將在F盤下的JavaWebDemoProject這個JavaWeb應用映射到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat服務器管理的,JavaWebApp是一個硬盤上不存在的目錄,是我們自己隨便寫的一個目錄,也就是虛擬的一個目錄,所以稱之為"虛擬目錄"。
修改后的host配置
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
</Host>
Context表示上下文,代表的就是一個JavaWeb應用,Context元素有兩個屬性,
- path:用來配置虛似目錄,必須以"/"開頭。
- docBase:配置此虛似目錄對應著硬盤上的Web應用所在目錄
請求路徑:localhost:8080/JavaWebApp/..
2.2 虛擬目錄的映射方式二:讓tomcat服務器自動映射
tomcat服務器會自動管理webapps目錄下的所有web應用,并把它映射成虛似目錄。換句話說,tomcat服務器webapps目錄中的web應用,外界可以直接訪問。
1、JavaWebDemoProject這個JavaWeb應用直接copy到tomcat服務器webapps目錄中。
2、localhost:8080/JavaWebDemoProject/..
2.3 虛擬目錄的映射方式三
1、在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文件的名稱。
2、在aa.xml文件中添加Context元素映射JavaWeb應用,代碼如下:
<Context docBase="F:\JavaWebDemoProject" />
三、Tomcat服務器配置虛似主機
3.1、配置虛擬主機
配置虛似主機就是配置一個網站。
在Tomcat服務器配置一個虛擬主機(網站),需要修改conf文件夾下的server.xml這個配置文件,使用Host元素進行配置,打開server.xml,可以看到Tomcat服務器自帶的一個名稱為localhost的虛擬主機(網站),如下圖所示:
<Host name="www.gacl.cn" appBase="F:\JavaWebApps"></Host>
平時我們將開發好的JavaWeb應用放到webapps文件夾下,然后就可以使用"http://localhost:端口號/JavaWebAppName"的方式去訪問了,其實訪問的就是name是"localhost"的那臺虛擬主機(Host),這臺虛擬主機管理webapps文件夾下的所有web應用。
例如:http://localhost:8080/JavaWebDemoProject/1.jsp,這個URL地址訪問的就是名稱是localhost的那臺虛擬主機下的JavaWebDemoProject這個應用里面的1.jsp這個web資源。
這里我們新配置一個虛擬主機,虛擬主機的name是"www.gacl.cn",虛擬主機"www.gacl.cn"現在管理著JavaWebApps文件夾下的所有web應用,平時我們在互聯網上使用域名"www.baidu.com"訪問百度的網站時,其實就是在訪問一個名稱是"www.baidu.com"的虛擬主機,所以當我們要訪問name是"www.gacl.cn"的這個虛擬主機時,就可以使用"域名(www.gacl.cn)"去訪問。
3.2 通過域名被外部訪問
配置的主機(網站)要想通過域名被外部訪問,必須在DNS服務器或windows系統中注冊訪問網站時使用的域名,找到"C:\Windows\System32\drivers\etc"目錄下的hosts文件。
4、瀏覽器與服務器交互的過程
1、瀏覽器根據主機名"www.gacl.cn"去操作系統的Hosts文件中查找主機名對應的IP地址。
2、瀏覽器如果在操作系統的Hosts文件中沒有找到對應的IP地址,就去互聯網上的DNS服務器上查找"www.gacl.cn"這臺主機對應的IP地址。
3、瀏覽器查找到"www.gacl.cn"這臺主機對應的IP地址后,就使用IP地址連接到Web服務器。
4、瀏覽器連接到web服務器后,就使用http協議向服務器發送請求,發送請求的過程中,瀏覽器會向Web服務器以Stream(流)的形式傳輸數據,告訴Web服務器要訪問服務器里面的哪個Web應用下的Web資源。
5、打包JavaWeb應用
jar -cvf JavaWebApps.war JavaWebApps
6、Tomcat的體系結構
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 "%r" %s %b" />
</Host>
<Host name="www.gacl.cn" appBase="F:\JavaWebApps">
<Context path="" docBase="F:\JavaWebApps\JavaWebDemo1"/>
</Host>
</Engine>
</Service>
</Server>
7、https連接器
7.1 生成Tomcat服務器的數字證書
1、SUN公司提供了制作證書的工具keytool, 在JDK 1.4以后的版本中都包含了這一工具,它的位置為<JAVA_HOME>\bin\keytool.exe
2、命令執行完之后,操作系統的用戶文件夾下面就會生成一個.keystore文件,如下圖所示:
3、使用命令:keytool -list -keystore .keystore查看.keystore密鑰庫里面的所有證書
7.2 配置https連接器
1、將生成的.keystore密鑰庫文件拷貝到Tomcat服務器的conf目錄下。
2、修改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"指明密鑰庫的訪問密碼。