您的位置:首页 > 运维架构 > Tomcat

Tomcat的 虚拟目录&虚拟主机 配置放方法

2016-08-25 18:38 686 查看

前言

本篇参考博文《JavaWeb学习总结(二)——Tomcat服务器学习和使用(一)

文字说明来自上述博文,过程通过自己实践得来。

且学且实践!!!

1. Tomcat虚拟目录映射方式

Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。那么在Tomcat服务器中,如何进行虚拟目录的映射呢?总共有如下的几种方式:

1.1 映射方式一:在server.xml文件的host元素中配置

首先,在/conf目录下找到server.xml文件的host元素,如下图所示

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

<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->

<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<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="E:\Javaproject" />


即可将在E盘下的Javaproject这个JavaWeb应用映射到JavaWebApp这个虚拟目录上,JavaWebApp这个虚拟目录是由Tomcat服务器管理的,其是一个硬盘上不存在的目录,是我们自己随便写的一个目录,也就是虚拟的一个目录,所以称之为”虚拟目录”,代码如下:

unpackWARs="true" autoDeploy="true">

<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->

<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

<Context path="/JavaWebApp" docBase="E:\Javaproject" />

</Host>


其中,Context表示上下文,代表的就是一个JavaWeb应用,Context元素有两个属性,

1)path:用来配置虚似目录,必须以”/”开头。

2)docBase:配置此虚似目录对应着硬盘上的Web应用所在目录。

接着,我们需要在本地目录E:/Javaproject下创建一个.jsp文件(用于访问的web应用程序),我们就叫HelloWorld.jsp,代码如下:

<html>
<head>
<title>HelloWorld</title>
</head>
<body>
<%
out.println("Hello World");
%>
</body>
</html>


然后,使用浏览器访问“/JavaWebApp”这个虚拟目录下的HelloWorld.jsp这个web资源,访问结果如下:

http://localhost:8080/JavaWebApp/HelloWorld.jsp



注意:访问之前,Tomcat服务器必须先启动。

从结果看到,HelloWorld.jsp可以正常访问,这说明我们已经成功的将E盘下的Javaproject这个JavaWeb应用映射到了JavaWebApp这个虚拟目录上了,访问“/javaWebApp/HelloWorld.jsp”就相当于访问“E:\Javaproject\HelloWorld.jsp”。

注意:在Tomcat6之后中,不再建议在server.xml文件中使用配置context元素的方式来添加虚拟目录的映射,因为每次修改server.xml文件后,Tomcat服务器就必须要重新启动后才能重新加载server.xml文件。在Tomcat服务器的文档http://localhost:8080/docs/config/context.html中有这样的说明:



1.2 映射方式二:让tomcat服务器自动映射

tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问。

例如:把E盘下的Javaproject这个JavaWeb应用直接copy到tomcat服务器webapps目录中,如下图所示:



此时Tomcat服务器就会自动为Javaproject这个JavaWeb应用映射一个同名的虚拟目录“/Javaproject”,然后就可以使用浏览器访问这个JavaWeb应用的资源了,如下图所示:



1.3 映射方式三

参考Tomcat服务器文档:



意思就是:在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文件的名称。

$CATALINA_BASE指的就是tomcat服务器根目录,[enginename]指的是Tomcat服务器使用的引擎名称,Tomcat使用的引擎是Catalina



在aa.xml文件中添加Context元素映射JavaWeb应用,代码如下:

<Context docBase="E:\Javaproject" />


注意:在Context元素中并没有指明path属性来设置虚拟目录的名称,那么“E:\Javaproject”映射的虚拟目录名称是神马呢,就是当前正在编辑的这个xml文件的名称aa。



使用这种方式映射虚拟目录的最大好处是修改了配置文件后不用重启Tomcat服务器。比如将aa.xml修改成bb.xml,Tomcat服务器会自动Undeploying context [/aa],然后自动信息: Deploying configuration descriptor E:\ tomcat\conf\Catalina\localhost\bb.xml。如下所示:



2. Tomcat服务器配置虚拟主机

2.1 配置虚拟主机

配置虚似主机就是配置一个网站。

在Tomcat服务器配置一个虚拟主机(网站),需要修改conf文件夹下的server.xml这个配置文件,使用Host元素进行配置,打开server.xml,可以看到Tomcat服务器自带的一个名称为localhost的虚拟主机(网站),如下图所示:

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

<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->

<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

</Host>


平时我们将开发好的JavaWeb应用放到webapps文件夹下,然后就可以使用”http://localhost:端口号/JavaWebAppName“的方式去访问了,其实访问的就是”localhost”的那台虚拟主机(Host),这台虚拟主机管理webapps文件夹下的所有web应用。

例如:http://localhost:8080/Javaproject/HelloWorld.jsp,这个URL地址访问的就是名称是localhost的那台虚拟主机下的Javaproject这个应用里面的HelloWorld.jsp这个web资源。

我们可以使用如下的方式配置一个虚拟主机,例如:

1 <Host name="www.asb.cn" appBase="E:\JavaWebApps">
2
3 </Host>


这里我们新配置一个虚拟主机,虚拟主机的name是“www.asb.cn”,虚拟主机“www.asb.cn”现在管理着JavaWebApps文件夹下的所有web应用,平时我们在互联网上使用域名“www.baidu.com”访问百度的网站时,其实就是在访问一个名称是“www.baidu.com”的虚拟主机,所以当我们要访问name是“www.asb.cn”的这个虚拟主机时,就可以使用”域名(www.asb.cn)”去访问,注意一下appBase=“E:\JavaWebApps”,这里的JavaWebApps文件夹代表的不是一个项目的根目录,而是一个存放了一个或者多个JavaWeb应用的文件夹,如下图所示:



就好像是Tomcat服务器的webapps文件夹一样,里面存放了很多的JavaWeb应用



2.2 windows系统中注册域名

配置的主机(网站)要想通过域名被外部访问,必须在DNS服务器或windows系统中注册访问网站时使用的域名,找到“C:\Windows\System32\drivers\etc”目录下的hosts文件,如下图所示:



编辑这个文件,将新添加的网站的域名和IP地址绑定在一起,这样我们就可以在浏览器中使用www.asb.cn这个域名去访问name是www.asb.cn那个虚拟主机里面管理的那些web应用了。



使用浏览器通过域名“www.asb.cn”访问“www.asb.cn”这个虚拟主机下的JavaWebDemo1这个web应用下的HelloWorld.jsp这个web资源,“www.asb.cn”这个虚拟主机开放了一个8080端口,用户只能通过这个8080端口去访问JavaWebDemo1这个web应用下的HelloWorld.jsp这个web资源。

http://www.asb.cn:8080/JavawebDemo1/HelloWorld.jsp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: