详解Tomcat配置及使用

1. 初识Tomcat

此处以 Tomcat 7.0.88版本为例。

1.1 启动

进入bin目录,在点击startup.bat启动时,如果窗口一闪而过,启动失败,一般是因为环境变量没有设置好。

设置:
JAVA_HOME 为 JDK安装路径。

Tomcat就可以根据JAVA_HOME找到JDK,然后启动了。(Tomcat依赖于java)

1.2 关闭

同样的,bin目录中可以点击shutdown.bat将其关闭,如果关闭失败,一般是因为环境变量没有设置好。

设置:
CATALINA_HOME 为 Tomcat安装路径。

这个环境变量能够让Tomcat在该变量所配置的目录来启动。

注意!如果本机安装了多个Tomcat,不论点击谁的startup.bat,启动的都是CATALINA_HOME变量所指向的Tomcat。因为该原因,一般也不推荐配置这个环境变量。

1.3 配置端口

进入conf目录,编辑server.xml配置文件。

找到下面这段配置:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

可以将port的值修改为80,这样下次启动就访问浏览器localhost即可,因为浏览器的默认端口就是80

1.4 关于端口占用问题

使用命令:

netstat -ano

可以找到占用端口的进程pid,再进入任务管理器,将对应pid的进程关闭。

如果没有找到pid,在属性显示栏右键勾选pid,即可看到。



2. Tomcat目录结构

bin —— 存放启动和关闭Tomcat的脚本文件。
conf —— 存放Tomcat服务器的各种配置文件。
lib —— 存放Tomcat服务器的支撑jar包。
logs —— 存放Tomcat的日志文件。
temp —— 存放运行时产生的临时文件。
webapps —— web应用所在目录,供外界访问的web资源的存放目录。
work —— Tomcat的工作目录。



3. 虚拟主机配置

3.1 什么是虚拟主机

虚拟主机:

由于在Tomcat中可以运行多个站点,用户用浏览器访问Tomcat服务器中的每个站点的时候,就像在访问各自独立的服务器一样。

所以我们可以说,各个站点是分别运行在Tomcat这个真实服务器上的一台虚拟主机上。

简而言之:

一个Tomcat中可以配置多台虚拟主机,一个虚拟主机上可以运行一个网站。

一个网站就可以认为是一台虚拟主机。

3.2 什么是web应用

一个虚拟主机上的很多web资源,按照功能类别组织成一个个的web应用,再交给虚拟主机管理,并提供给用户访问。

3.3 如何配置web应用

当我们完成了一个web应用后,所有的该应用资源全部放在一个文件夹中,比如news,如何让虚拟主机去识别这个文件夹,并管理呢?

我们进入到conf目录的server.xml中,可以看到有这么一段配置:

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

这就是Tomcat初始自带的一个虚拟主机localhost,并且外部访问所有应用资源所在的根目录是webapps

Host元素中的Context元素,代表web应用。

关于context元素的属性:

- docBase: 
    指定web应用程序的文档基目录或者WAR文件的路径名。可以是绝对路径也可以是相对于appBase的路径名。

- path:
    指定web应用程序的上下文路径。

- unpackWAR:
    如果为true,Tomcat在运行web程序前将展开所有压缩的web应用程序,默认值是true。


配置web应用给虚拟主机:


方法一:

在Server.xml的<Host>标签中,添加<Context/>标签,就可以为该虚拟主机配置一个web应用了。

<Context path="/news" docBase="E:\news" />

虚拟路径映射:

path是虚拟路径,docBase是真实路径。

当URL中输入localhost/news,实际上是去系统的E:\news下寻找资源。

缺省web应用的配置:

即默认的web应用,当不写web应用路径时,默认访问的就是这个应用。

<Context path="" docBase="E:\news" />

注意,修改完这些配置后,服务器都需要重启,这种方式不是很好。


方法二:

Tomcat/conf/Catalina/[Host] 目录下写一个xml文件,其中,xml文件的名字就是虚拟路径,在这个xml中可以添加标签,再在其中配置真实路径。

如:conf/Catalina/localhost/news.xml的配置:

<?xml version="1.0" encoding="utf-8"?>
<Context docBase="E:\news" />

然后就可以在浏览器中通过localhost/news/...来访问news应用里的资源了。

这种修改方式不需要重启服务器,稍微等待即可看到效果。

注意,如果虚拟路径中有”/”,由于文件名不允许包含”/”,需要用”#”代替。

如果需要设置为缺省应用,该如何操作?

只需要将 conf/Catalina/localhost/news.xml 中的news.xml名称修改为ROOT.xml,即可通过localhost/...直接访问应用资源了。


方法三:

这是最为简单的一种方式。

直接将web应用放置到虚拟主机管理的目录下,虚拟主机就可以找到这个web应用,从而对其进行管理。

news为例:

直接将news文件夹放到 Tomcat/webapps 下,即可通过localhost/news/...访问该应用资源。

如何设置缺省应用?

只要将web应用文件夹的名称改为ROOT,这个web应用就是缺省应用。


3.4 web应用目录结构

如果web应用的目录结构不合法,可能会出现各种问题。

news
|-- 
|-- WEB-INF 
    |-- classes 
    |-- lib 
    |-- web.xml 

①:静态资源和JSP文件都可以直接放置在web应用的目录下,浏览器可以直接访问到。

②:这个文件夹可以没有,但最好有,如果有则一定要保证其目录结构完整。放置在WEB-INF目录下的所有资源浏览器没有办法直接进行访问。

③:动态web资源运行时的java类class文件要放在这个目录下。

④:动态web资源运行时所依赖的jar包要放在这个目录下。

⑤:整个web应用的配置文件,配置主页/Servlet的映射/过滤监听器的配置都需要依赖这个文件进行。

当直接访问localhost时,默认是获取缺省web应用目录下的index.html文件。

可以在WEB-INFweb.xml中设置主页的指向:

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <welcome-file-list>
    <welcome-file>
        hello.html
    </welcome-file>
  </welcome-file-list>

</web-app>

这样当访问localhost时,会自动获取hello.html内容。


3.5 配置虚拟主机

在conf/server.xml中<Engine>标签下添加一个<Host>标签,就可以新增一台虚拟主机了。

name —— 指定虚拟主机的名称,浏览器通过这个名称访问虚拟主机。

appBase —— 虚拟主机管理的目录,放置在这个目录下的web应用,虚拟主机可以自动加载。

由于浏览器访问地址时,需要将地址翻译成对应的ip才能找到服务器,这其中翻译的过程是由dns服务器来实现的,我们没办法修改dns服务器,此时可以修改hosts文件来模拟DNS功能。


缺省虚拟主机

如果来访者通过ip地址来访问,这个时候服务器无法辨别当前要访问的是哪台虚拟主机中的资源,会默认访问缺省虚拟主机。

缺省虚拟主机可以通过在server.xmlengine标签上的defaultHost属性进行配置。

<Engine name="Catalina" defaultHost="localhost">



4. 一些其他的配置说明

4.1 war包

通常我们可以把一个web应用的文件夹经过命令:

jar -cvf my.war news

将news应用的资源文件压缩打包成 my.war,然后发送到webapps下,war文件会自动解压,可以直接被访问。

其实war就是zip,将zip文件后缀名改一下也能达到效果。


4.2 通用的配置

conf文件夹中,有context.xmlweb.xml,这相当于一个顶级的,父级的配置文件,在webapps中的应用配置默认也是“继承”于这些配置文件。

比如说,就算不给应用的web.xml中设置主页,Tomcat也会基于顶级的配置文件,将应用目录中的index.html指定为主页。


4.3 自动加载更新

context元素设置reloadable属性为true,可以让Tomcat自动加载更新后的web应用,当java程序修改后可以不用重启,服务器自动重新加载。但会降低性能。


4.4 后台管理界面

和大多数服务器一样,Tomcat也有一个后台管理的界面,我们可以通过授权进入这个GUI界面,然后方便地操作管理web应用。

manager

通过localhost/manager/html,可以进入主机内web应用的管理界面,在这之前需要在conf下的tomcat-users.xml添加管理用户:

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

然后用该用户进入,管理主机上的所有web应用。

猜你喜欢

转载自blog.csdn.net/longyin0528/article/details/80836543