2653885 发表于 2017-1-25 10:50:21

tomcat的Server.xml

1 Server.xml结构介绍
<Server> -- 大饭店
  <Listener> -- 不理它!
  <Service> -- 一个饭店就一个服务系统
    <Connector> -- 服务员
    <Engine> -- 厨房(正规饭店称之为后厨)
      <Host> -- 热菜区(还可以西餐区等等)
        <Context> -- 厨师
l <Server>:根元素,表示整个服务器的配置信息;
l <Listener>:<Server>的子元素,在<Server>中可以有N个监听器,现在不用理睬它;
l <Service>:<Server>的子元素,在<Server>中只能有一个<Service>元素,它表示服务;Service有一个属性  <Service name="Catalina">
l <Connector>:<Service>的子元素,在<Service>中可以有N个<Connector>元素,它表示连接。你可以把它理解为接待人员,接待人员不能处理业务,但它会带领你去查找可以处理业务的组件。不同的<Connector>针对不同的协议,我们只需要关心处理HTTP协议的<Connector>元素。该元素有port属性,表示端口号,默认值为8080,你可以把它修改为80,那么以后在访问项目时就不用再给出端口号了,因为80是HTTP默认端口,即不给出时就是表示使用80端口,例如:http://localhost/hello/index.jsp。
l <Engine>:<Service>的子元素,在<Service>中只能有一<Engine>元素,它是处理引擎。前面已经说过了<Connector>是接待员,它不能处理业务,它会把用户带到<Engine>这里来处理业务,也就是说用户最终连接的是<Engine>。
l <Host>:<Engine>的子元素,在<Engine>中可以有N个<Host>元素,每个<Host>元素表示一个虚拟主机。所谓虚拟主机就像是真的主机一样,每个主机都有自己的主机名和项目目录。例如<Host name=”localhost” appBase=”webapps”>表示主机名为localhost,这个主机的项目存放在webapps目录中。访问这个项目下的主机时,需要使用localhost主机名,项目都存放在webapps目录下。下面会介绍如果添加虚拟主机!!!
l <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地址可以锁定一台主机,通过端口号可以锁定主机上的一个程序。与网络相关的软件都会有接口号:
l Oracle默认端口号:1521;
l MySQL默认端口号:3306;
l WebLogic默认端口号:7001;
l tomcat : 8080
l 80是http可以省略的默认端口
l 把tomcat的端口设置为80那么就可以这样访问 http://localhost/
l 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,当然这是可以的!但这有三件事要做:
l 修改Tomcat端口号为80;
l 注册DNS,到C:\WINDOWS\system32\drivers\etc\hosts,打开它,添加127.0.01 www.qdmmy6.com;
l 在server.xml文件中添加名为www.qdmmy6.com的Host元素;
 
第一步上面已经讲过了,还有两步。
注册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>元素的path和docBase属性,其中path指定的是项目虚拟路径,可以随意给出,例如abc。docBase指定你的项目的真实存放的路径。
例如,项目的真实目录在F:\hello。你找到server.xml中的<Host>元素,给其添加子元素<Context>,内容如下:
 

注意,一旦给出了docBase属性的值后,访问localhost的abc项目时,就不会再去webapps目录下去查找项目,而是通过docBase的值来锁定项目位置,即F:\hello1。
注意,访问项目的URL:http://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-->
页: [1]
查看完整版本: tomcat的Server.xml