`

tomcat的Server.xml

 
阅读更多

1 Server.xml结构介绍

<Server> -- 大饭店

  <Listener> -- 不理它!

  <Service> -- 一个饭店就一个服务系统

    <Connector> -- 服务员

    <Engine> -- (正规饭店称之为后厨)

      <Host> -- 热菜区(还可以西餐区等等)

        <Context> -- 

<Server>:根元素,表示整个服务器的配置信息;

<Listener><Server>的子元素,在<Server>可以有N个监听器,现在不用理睬它;

<Service><Server>的子元素,在<Server>中只能有一个<Service>元素,它表示服务;Service有一个属性  <Service name="Catalina">

<Connector><Service>的子元素,在<Service>中可以有N<Connector>元素,它表示连接。你可以把它理解为接待人员,接待人员不能处理业务,但它会带领你去查找可以处理业务的组件。不同的<Connector>针对不同的协议,我们只需要关心处理HTTP协议的<Connector>元素。该元素有port属性,表示端口号,默认值为8080,你可以把它修改为80,那么以后在访问项目时就不用再给出端口号了,因为80HTTP默认端口,即不给出时就是表示使用80端口,例如:http://localhost/hello/index.jsp

<Engine><Service>的子元素,在<Service>中只能有一<Engine>元素,它是处理引擎。前面已经说过了<Connector>是接待员,它不能处理业务,它会把用户带到<Engine>这里来处理业务,也就是说用户最终连接的是<Engine>

<Host><Engine>的子元素,在<Engine>中可以有N<Host>元素,每个<Host>元素表示一个虚拟主机。所谓虚拟主机就像是真的主机一样,每个主机都有自己的主机名和项目目录。例如<Host name=localhost appBase=webapps>表示主机名为localhost,这个主机的项目存放在webapps目录中。访问这个项目下的主机时,需要使用localhost主机名,项目都存放在webapps目录下。下面会介绍如果添加虚拟主机!!!

<Context><Host>元素的子元素,在<Host>中可以有N<Context>元素,每个<Context>元素表示一个项目。不配置它项目也可以正常运行,前面我们创建项目时也没有在server.xml文件中创建<Context>,也可以运行。但如果你需要多一些特殊功能,那么就要配置Context元素了。重要!!!

 

  用户发出一个请求:http://localhost:8080/hello/index.jsp。接待人员(Conector)发现是http/1.1协议,而且还是8080端口,就把请求接收,然后交给引擎(Engine)。引擎通过请求中的主机名localhost找到虚拟主机(Host),再通过虚拟主机对应的appBase(即webapps)中去找项目。在webapps中找到hello项目,再到hello项目再去找index.jsp

 

2 修改端口号

打开server.xml文件

http默认端口号为80,也就是说在URL中不给出端口号时就表示使用80端口。当然你也可以修改为其它端口号。

在网络中通过IP地址可以锁定一台主机,通过端口号可以锁定主机上的一个程序。与网络相关的软件都会有接口号:

Oracle默认端口号:1521

MySQL默认端口号:3306

WebLogic默认端口号:7001

tomcat : 8080

80http可以省略的默认端口

tomcat的端口设置为80那么就可以这样访问 http://localhost/

http://www.baidu.com:80/ 与  http://www.baidu.com/ 是相同的,80可以设置.

端口号必须是0~65535之间的整数,OS会使用0~1023这些端口号,所以你最好去使用1024~65535之间的端口号。

 

查看端口是否被占用:cmd à netstat -abv

 

3 添加虚拟主机

你想不想这样来访问Tomcat的首页:http://www.qdmmy6.com,当然这是可以的!但这有三件事要做:

修改Tomcat端口号为80

注册DNS,到C:\WINDOWS\system32\drivers\etc\hosts,打开它,添加127.0.01 www.qdmmy6.com

server.xml文件中添加名为www.qdmmy6.comHost元素;

 

第一步上面已经讲过了,还有两步。

注册DNS

server.xml中添加<Host>元素

 

当然,你也可以把appBase的值修改为其它目录,那么你的项目就要放到appBase指定的目录中去。假如你把appBase=F:\myapps,用户访问http://www.qdmmy6.com/hello时,服务器会去F:\myapps目录去查找hello项目。

注意,其他人不能通过http://www.qdmmy6.com/hello来访问我的服务器,因为你们的电脑不能解析http://www.qdmmy6.com是什么,你可能会想,在自己的C:\WINDOWS\system32\drivers\etc\hosts文件中添加127.0.0.1 www.qdmmy6.com,这也是不行的,因为你的电脑会把www.qdmmy6.com解析成127.0.0.1这个IP地址,而这个地址表示的是本机!所以你需要把127.0.0.1修改为我的IP就可以了!但这么做没什么意思,因为每个人想通过http://www.qdmmy6.com来访问我的服务器,都需要去修改自己的C:\WINDOWS\system32\drivers\etc\hosts文件,只是玩玩而已,不用当真!

域名解析的过程:DNS服务器上面存放着一张表,IP地址与域名相对应的,当在浏览器中请求http://www.baidu.com,首先要解析域名,即找到与www.baidu.com对应的IP地址,解析的过程就是:先到本地机器的C:\WINDOWS\system32\drivers\etc\hosts文件中查找,如果找到就访问,如果找不到就到远程DNS服务器上找通过就个原理可以封锁网站,如果你不想让某个网站的广告出现就把它的域名在C:\WINDOWS\system32\drivers\etc\hosts文件中映射成127.0.0.1这样就访问不到了.当你把www.baidu.com映射成127.0.0.1,你就访问不到百度了.

 

4 发布项目三种方式

常用的是三种方式:其他的还有,去参考tomcat的帮助文档.

第一种我们已经学过了,就是把项目放到webapps目录下,即localhost主机名对应的项目空间目录中。

第二种方式:配置虚拟目录一个Context元素对应一个项目Context就是上下文件路径.

我们所说的上下文路径就是Context path属性的值,Context path一般与项目名相同

第二种方式:可以把项目放到任何目录,然后通过添加<Context>元素来指定项目的真实位置。在<Host>元素中添加<Context>元素,然后指定<Context>元素的pathdocBase属性,其中path指定的是项目虚拟路径,可以随意给出,例如abcdocBase指定你的项目的真实存放的路径。

例如,项目的真实目录在F:\hello。你找到server.xml中的<Host>元素,给其添加子元素<Context>,内容如下:

 

注意,一旦给出了docBase属性的值后,访问localhostabc项目时,就不会再去webapps目录下去查找项目,而是通过docBase的值来锁定项目位置,即F:\hello1

注意,访问项目的URLhttp://localhost/abc/index.jsp,而不是http://localhost/hello1/index.jsp,你可能会说,我们的项目目录名叫hello1,但因为指定了<Context>元素的path属性,那么访问项目时就不会再使用项目目录名来作为访问路径了。

第三种方式与第二种比较相似,第三种是使用外部文件来添加<Context>元素。这需要在conf目录下找到catalina\localhost目录,然后在这个目录下创建一个XML文件,这个名称就是虚拟路径名。例如创建的XML文件名为def.xml,然后在def.xml文件中添加如下内容

<Context docBase="F:\hello1"/>

注意,这里没有给出path属性,因为已经不用给出了,path的值由XML文件的名称决定。也就是说path的值为def。访问URL为:http://localhost/def/index.jsp

<!--EndFragment-->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics