一结借、Tomcat服務(wù)器端口的配置
- Tomcat的所有配置都放在conf文件夾之中际邻,里面的server.xml文件是配置的核心文件胯究。
- 如果想修改Tomcat服務(wù)器的啟動(dòng)端口蚊伞,則可以在server.xml配置文件中的Connector節(jié)點(diǎn)進(jìn)行的端口修改。
將Tomcat服務(wù)器啟動(dòng)端口修改成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服務(wù)器虛擬目錄的映射方式
Web應(yīng)用開(kāi)發(fā)好后矛渴,若想供外界訪問(wèn),需要把web應(yīng)用所在目錄交給web服務(wù)器管理惫搏,這個(gè)過(guò)程稱之為虛似目錄的映射具温。那么在Tomcat服務(wù)器中,如何進(jìn)行虛擬目錄的映射呢筐赔?總共有如下的幾種方式:
2.1 虛擬目錄的映射方式一:在server.xml文件的host元素中配置
默認(rèn)的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>這對(duì)標(biāo)簽加上<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />即可將在F盤下的JavaWebDemoProject這個(gè)JavaWeb應(yīng)用映射到JavaWebApp這個(gè)虛擬目錄上铣猩,JavaWebApp這個(gè)虛擬目錄是由Tomcat服務(wù)器管理的,JavaWebApp是一個(gè)硬盤上不存在的目錄茴丰,是我們自己隨便寫(xiě)的一個(gè)目錄达皿,也就是虛擬的一個(gè)目錄,所以稱之為"虛擬目錄"贿肩。
修改后的host配置
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
</Host>
Context表示上下文峦椰,代表的就是一個(gè)JavaWeb應(yīng)用,Context元素有兩個(gè)屬性汰规,
- path:用來(lái)配置虛似目錄们何,必須以"/"開(kāi)頭。
- docBase:配置此虛似目錄對(duì)應(yīng)著硬盤上的Web應(yīng)用所在目錄
請(qǐng)求路徑:localhost:8080/JavaWebApp/..
2.2 虛擬目錄的映射方式二:讓tomcat服務(wù)器自動(dòng)映射
tomcat服務(wù)器會(huì)自動(dòng)管理webapps目錄下的所有web應(yīng)用控轿,并把它映射成虛似目錄。換句話說(shuō)拂封,tomcat服務(wù)器webapps目錄中的web應(yīng)用茬射,外界可以直接訪問(wèn)。
1冒签、JavaWebDemoProject這個(gè)JavaWeb應(yīng)用直接copy到tomcat服務(wù)器webapps目錄中在抛。
2、localhost:8080/JavaWebDemoProject/..
2.3 虛擬目錄的映射方式三
1萧恕、在tomcat服務(wù)器的\conf\Catalina\localhost目錄下添加一個(gè)以xml作為擴(kuò)展名的文件刚梭,xml文件的名字可以任意取肠阱,比如下面的aa.xml,注意這一句話"The context path and version will be derived from the base name of the file"朴读,這一句話的意思翻譯過(guò)來(lái)就是"context元素的path屬性源自于是這個(gè)xml文件的名字"屹徘,上面提到過(guò),Context元素的path屬性是用來(lái)配置虛似目錄的名稱的衅金,所以虛似目錄的名稱就是這個(gè)xml文件的名稱噪伊。
2、在aa.xml文件中添加Context元素映射JavaWeb應(yīng)用氮唯,代碼如下:
<Context docBase="F:\JavaWebDemoProject" />
三鉴吹、Tomcat服務(wù)器配置虛似主機(jī)
3.1、配置虛擬主機(jī)
配置虛似主機(jī)就是配置一個(gè)網(wǎng)站惩琉。
在Tomcat服務(wù)器配置一個(gè)虛擬主機(jī)(網(wǎng)站)豆励,需要修改conf文件夾下的server.xml這個(gè)配置文件,使用Host元素進(jìn)行配置瞒渠,打開(kāi)server.xml良蒸,可以看到Tomcat服務(wù)器自帶的一個(gè)名稱為localhost的虛擬主機(jī)(網(wǎng)站),如下圖所示:
<Host name="www.gacl.cn" appBase="F:\JavaWebApps"></Host>
平時(shí)我們將開(kāi)發(fā)好的JavaWeb應(yīng)用放到webapps文件夾下在孝,然后就可以使用"http://localhost:端口號(hào)/JavaWebAppName"的方式去訪問(wèn)了诚啃,其實(shí)訪問(wèn)的就是name是"localhost"的那臺(tái)虛擬主機(jī)(Host),這臺(tái)虛擬主機(jī)管理webapps文件夾下的所有web應(yīng)用私沮。
例如:http://localhost:8080/JavaWebDemoProject/1.jsp始赎,這個(gè)URL地址訪問(wèn)的就是名稱是localhost的那臺(tái)虛擬主機(jī)下的JavaWebDemoProject這個(gè)應(yīng)用里面的1.jsp這個(gè)web資源。
這里我們新配置一個(gè)虛擬主機(jī)仔燕,虛擬主機(jī)的name是"www.gacl.cn"造垛,虛擬主機(jī)"www.gacl.cn"現(xiàn)在管理著JavaWebApps文件夾下的所有web應(yīng)用,平時(shí)我們?cè)诨ヂ?lián)網(wǎng)上使用域名"www.baidu.com"訪問(wèn)百度的網(wǎng)站時(shí)晰搀,其實(shí)就是在訪問(wèn)一個(gè)名稱是"www.baidu.com"的虛擬主機(jī)五辽,所以當(dāng)我們要訪問(wèn)name是"www.gacl.cn"的這個(gè)虛擬主機(jī)時(shí),就可以使用"域名(www.gacl.cn)"去訪問(wèn)外恕。
3.2 通過(guò)域名被外部訪問(wèn)
配置的主機(jī)(網(wǎng)站)要想通過(guò)域名被外部訪問(wèn)杆逗,必須在DNS服務(wù)器或windows系統(tǒng)中注冊(cè)訪問(wèn)網(wǎng)站時(shí)使用的域名,找到"C:\Windows\System32\drivers\etc"目錄下的hosts文件鳞疲。
4罪郊、瀏覽器與服務(wù)器交互的過(guò)程
1、瀏覽器根據(jù)主機(jī)名"www.gacl.cn"去操作系統(tǒng)的Hosts文件中查找主機(jī)名對(duì)應(yīng)的IP地址尚洽。
2悔橄、瀏覽器如果在操作系統(tǒng)的Hosts文件中沒(méi)有找到對(duì)應(yīng)的IP地址,就去互聯(lián)網(wǎng)上的DNS服務(wù)器上查找"www.gacl.cn"這臺(tái)主機(jī)對(duì)應(yīng)的IP地址。
3癣疟、瀏覽器查找到"www.gacl.cn"這臺(tái)主機(jī)對(duì)應(yīng)的IP地址后挣柬,就使用IP地址連接到Web服務(wù)器。
4睛挚、瀏覽器連接到web服務(wù)器后邪蛔,就使用http協(xié)議向服務(wù)器發(fā)送請(qǐng)求,發(fā)送請(qǐng)求的過(guò)程中竞川,瀏覽器會(huì)向Web服務(wù)器以Stream(流)的形式傳輸數(shù)據(jù)店溢,告訴Web服務(wù)器要訪問(wèn)服務(wù)器里面的哪個(gè)Web應(yīng)用下的Web資源。
5委乌、打包JavaWeb應(yīng)用
jar -cvf JavaWebApps.war JavaWebApps
6床牧、Tomcat的體系結(jié)構(gòu)
Tomcat服務(wù)器的啟動(dòng)是基于一個(gè)server.xml文件的,Tomcat啟動(dòng)的時(shí)候首先會(huì)啟動(dòng)一個(gè)Server遭贸,Server里面就會(huì)啟動(dòng)Service戈咳,Service里面就會(huì)啟動(dòng)多個(gè)"Connector(連接器)",每一個(gè)連接器都在等待客戶機(jī)的連接壕吹,當(dāng)有用戶使用瀏覽器去訪問(wèn)服務(wù)器上面的web資源時(shí)著蛙,首先是連接到Connector(連接器),Connector(連接器)是不處理用戶的請(qǐng)求的耳贬,而是將用戶的請(qǐng)求交給一個(gè)Engine(引擎)去處理踏堡,Engine(引擎)接收到請(qǐng)求后就會(huì)解析用戶想要訪問(wèn)的Host,然后將請(qǐng)求交給相應(yīng)的Host咒劲,Host收到請(qǐng)求后就會(huì)解析出用戶想要訪問(wèn)這個(gè)Host下面的哪一個(gè)Web應(yīng)用,一個(gè)web應(yīng)用對(duì)應(yīng)一個(gè)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服務(wù)器的數(shù)字證書(shū)
1腐魂、SUN公司提供了制作證書(shū)的工具keytool帐偎, 在JDK 1.4以后的版本中都包含了這一工具,它的位置為<JAVA_HOME>\bin\keytool.exe
2蛔屹、命令執(zhí)行完之后削樊,操作系統(tǒng)的用戶文件夾下面就會(huì)生成一個(gè).keystore文件,如下圖所示:
3兔毒、使用命令:keytool -list -keystore .keystore查看.keystore密鑰庫(kù)里面的所有證書(shū)
7.2 配置https連接器
1漫贞、將生成的.keystore密鑰庫(kù)文件拷貝到Tomcat服務(wù)器的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文件中配置了一個(gè)端口是8443的加密連接器擂红,瀏覽器訪問(wèn)8443端口的連接器時(shí),將會(huì)以加密的方式來(lái)訪問(wèn)web服務(wù)器,這個(gè)連接器收到瀏覽器的請(qǐng)求后昵骤,將會(huì)向?yàn)g覽器出示一份數(shù)字證書(shū)树碱,瀏覽器再用數(shù)字證書(shū)里面的公鑰來(lái)加密數(shù)據(jù),keystoreFile="conf/.keystore" 用來(lái)指明密鑰庫(kù)文件的所在路徑变秦,服務(wù)器從密鑰庫(kù)中提取證書(shū)時(shí)需要密碼成榜,keystorePass="123456"指明密鑰庫(kù)的訪問(wèn)密碼。