Tomcat的安装以及配置

Tomcat的版本很多,每个版本的区别是很大的,但在实际的使用上都是大同小异,现在常用的版本为5.x或者6.x,,这些版本在网上下载都是很容易的。从安装方式上来看分为:安装版与解压版,我们主要讨论这种情况。安装版tomcat我们下载的是一个exe文件如图所示,对于windows系列系统来说,安装的步骤很简单如下图所示。





在安装的过程中,需要注意:tomca会要求用户指定jdk安装目录,即comcat的运行时需要jdk的支持的,而且当需要给tomcat指定jdk的安装目录的时候,tomcat会自动检索到系统已安装的jdk,这也就是说 在安装tomcat之前,需要先安装jdk,当tomcat检索到jdk之后,我们就可以一直点击“下一步”安装tomcat。安装完成后,会在tomcat的安装目录看到如下文件,下面需要做的就是测试tomcat是否安装成功,首先打开tomcat安装目录下的bin文件,启动bin文件夹中的startup.bat文件,当出现如下情况时,表示tomcat服务已经启动成功。接下来打开一个浏览器并在地址栏中输入http://localhost:8080字样如若出现如下界面表示tomcat运行正常。下面介绍tomcat解压版,如若我们下载的是一个tomcat的压缩文件,可以在系统中找到一个合适的目录(注:此目录不要有中文目录名,而且目录名上不要有空格)将tomcat解压缩,会得到与安装版几乎一摸一样的目录文件,同样打开tomcat主目录下的bin文件夹,启动bin文件夹下的startup.bat文件,注意很可能不会启动成功或是一闪而过或是出现一大串的错误信息,这些种种的原因都与jdk的路径有关,解压版的tomcat没有自动寻找jdk的能力,但有寻找JAVA_HOME系统变量的能力,但如果系统变量列表中没有JAVA_HOME这个系统变量,那么tomcat就无能为力了,显示给你的就是一大片的错误信息,所以需要在系统的环境变量中配置JAVA_HOME系统变量,配置方法如下图所示,配置完成之后,在重新启动startup.bat文件,tomcat就正常启动了,同样的在浏览器地址栏中输入http://localhost:8080验证tomcat是否运行正常。简单的说,安装版的tomcat我们几乎不需要配置,对于解压版的来说一定不要忘了JAVA_HOME这个系统变量。

     Tomcat的目录介绍

/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件

/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml

/doc:存放Tomcat文档

/server:包含三个子目录:classes、lib和webapps

 

/server/lib:存放Tomcat服务器所需的各种JAR文件

/server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用

/common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件

/shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)

/logs:存放Tomcat执行时的日志文件

/src:存放Tomcat的源代码

/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录

/work:存放JSP编译后产生的class文件

     为何使用JAVA_HOME

我们分两个方面介绍,其一对于j2se程序来说需要在系统中配置环境变量,及在path环境变量中指向一个能找到jdk目录下的bin目录,我们通常的方法不是直接在path中给出bin文件夹的全路径,而是新建一个名为JAVA_HOME的系统变量将其值设置为jdk的安装目录,之后再path环境变量中加入%JAVA_HOME%\bin,从而使系统能够找到jdk中的bin文件夹,这样做的好处是,我们的系统可以装不同版本的jdk,我们可以改变JAVA_HOME中的值而改变我们使用的jdk版本,这样就不用改变path中的值,因为path中的值除了jdk的配置外还有很多其他软件的配置,所以尽量是path环境变量中的值简洁清晰。

另外JAVA_HOME逐渐成为一种需要用jdk支持的软件中的配置信息中的一个关键字或者保留字,就像上文介绍的tomcat。所以我们选择JAVA_HOME进行环境变量的配置。

     Jdk、jre、jvm之间的关系介绍

我们在安装好JDK后就可以想象成我们已经买了一台安装好软件的新的电脑。

    JVM : Java Virtual Machine(Java虚拟机) 。所谓“虚拟机”顾名思义就是模拟出来的东西。就像是我们在用电脑看电视,但是电脑里并没有像电视机里面一样的硬件支持,但是我们仍然可以从电脑里接受电视台的节目。那是因为我们编写了一个可以模拟电视机硬件工作的软件运行在电脑的平台上面的原因。同样JVM就是模拟了电脑的硬件,它同样有着像CPU一样可以执行代码的功能。它的实现具体有:指令集 寄存器组 类文件格式 栈 垃圾收集堆 内存区。可以把它理解成是专门用来执行Java程序的一台机器。也就是说JVM提供了Java执行的硬件平台。JVM上执行的代码都存放在.CLASS 文件中。JVM只执行字节码文件。

   JRE :Java Runtime Environment(Java运行环境)。就是可以运行Java程序的地方。就像是我们要在电脑上运行一个视频软件的时候必须在Windos或者是Linux等操作系统上一样。那我们就可以把它看做是一个操作系统。也就是说JRE提供了Java执行的软件平台。在运行Java的过程中除了需要有JVM执行Java代码这个动作外,还需要Java API(Application Programming Interface,应用编程接口)说简单的就是“类库”。Java程序在运行中没有这些API是不行的,所以JRE包含JVM。

      JDK: Java Development ToolKit(Java开发工具包)。我们有了硬件和软件两个平台后就可以做我们自己想做的事情了。JDK就是我们用来做事情的工具,它包括JRE还有其他工具。我们所说版本的不同,也就是说它里面的工具有差异。就像是你不同的工具箱里放着不同的工具一样。举个例子:最常用的一个就是javac,它是把.java的文件翻译成.class文件的工具。然后让JVM来执行.class文件中的字节码。(就像电脑的CPU只认识0或1的道理)

如果一台计算机的需求只是运行Java程序,而不是去编写Java程序的时候,它只需要安装JRE就可以了。

     Classpath的作用

Classpath主要是在执行java程序时起作用的,对于一个j2se程序来说,可以先将java源文件编译成字节码文件也就是.class文件,这个.class文件加入在电脑中F盘,如果我们在系统环境变量中新建一个classpath并将其值设置成这个class文件的绝对路径,就可以在电脑的任何目录下执行这个文件,同样的在任何地方都引用此class文章塑造的类,对于j2EE程序来说,如若我们需要一些第三方的类库或jar包,都会需要将这些类库或jar包导入到本程序中,实际上也就是将他们的路径保存在了classpath中,虽然有些时候在系统环境变量中没有看到classpath中拥有这些信息,但是在项目的配置文件中都会找到这些信息的,另外需要说明的是classpath中的”.”表示当前路径。

Tomcat的默认行为。

      我们的浏览器请求如果到达了Tomcat,并且请求无误,一般Tomcat会以静态页面(即html文件)的形式给与响应,这是http服务器的默认行为。

      一个完整的资源请求包括:

      协议(如http)

      主机名(域名,如localhost、www.baidu.com

      端口号(http协议默认为80,所以我们一般向某个网站发起请求没有输入)

      站点

      资源位置

 

        如http://localhost:8080/ROOT/index.jsp

      那么在第二步时我们只输入了域名(或者主机名)就访问到了某个具体的页面,这是怎么回事呢?。

      首先,请求会通过一些途径到达请求的主机地址并被该服务器(指硬件,如我们的本机电脑)上的http服务器程序获得。这一步解释起来比较麻烦,我们不做赘述,我会在其他篇幅里介绍。

      比如我们输入http://localhost:8080到浏览器里。被Tomcat发现了。

 

      现在它拿到请求,先分析我们所请求的是什么资源。由于我们没有指定,它会到默认的站点去拿默认的页面给我们。

      现在我们把过程走一遍:

        服务器端:Tomcat监听着8080端口,时时注意是否有请求过来。

        客户端浏览器发出请求,到达了服务器端,由于端口的分配,请求最终被Tomcat得到。

        Tomcat解析请求的资源,发现没有指定需要的是哪个站点下的哪个资源。

        Tomcat在默认的站点下把默认的页面返回给客户端浏览器作为响应。

  

  5、更改Tomcat默认配置。

     ①、修改Tomcat监听端口。

        我们都有过访问网站的经历。我们一般只输入了域名对吧,那么假设我们现在作为网络服务提供者,将要对外发布网站,我们怎么让用户只输入我们的域名就能看到我们为他/她准备的网页呢?

        首先我们需要将监听端口设置为80,道理很简单,用户不会在浏览器输入:8080来访问网站,浏览器也不会自动将请求发送到服务器的8080端口。

          在%TOMCAT_HOME%(以下代指Tomcat的安装路径)下的conf目录下的server.xml文件中修改。

  

      这个文件里东西不少,其实大家不必在意。为什么呢?你把注释删除后再把整个xml看作一个对象,是吧,每个节点是一个属性,这个属性又可能是一个对象,它里面有属性……要这样去理解,或者直接认为是Tomcat的配置信息到也没错。

      这样,就不用输入:8080了。

    ②、修改默认站点。

      首先说,站点是具有特定结构的文件夹。这一点在Tomcat里表现得极为清晰。

      站点,在服务器上肯定是用文件夹(即目录结构)来存储和管理的。但是它和普通的文件夹又不同,在Tomcat里,可用于作为站点的文件夹必须有如下特点:拥有一个名为WEB-INF的子文件夹,该子文件夹下必须有一个名为web.xml的文件,而且该xml文件必须受约束与特定的DTD。

      

      我们先配置或者说叫创建一个站点,再将其设置为默认站点。

        配置站点:创建文件夹,创建WEB-INF子文件夹,创建web.xml,完成。web.xml内容可以参考webapps/ROOT/WEB-INF/web.xml。

        设置为默认站点:

          这里需要分为两步执行。

            告诉Tomcat当请求哪个站点时(或者说在域名后面跟的是什么名字),你来找我。

            告诉Tomcat我在哪里。

  

            上图已经将两步配置好了(实际上Tomcat默认加上了将空站点指向ROOT的代码),我们的d:/myweb:

            如果你的站点存放在webapps目录下,可以使用相对路径,比如,我们将d:/myweb整个拷到%TOMCAT_HOME%/webapps下,上图的docBase很明显就不需要加上d:/了。

  

            我在index.html里写了几句话,然后结果出来了:

  

 

    ③、修改默认页面。

      在上面,我们还算是中规中矩,按照常理出牌,谢了index.html。那么如果没有写呢?Tomcat会怎么做呢?

      请大家找到conf/web.xml。这个文件是对所有站点的共同属性做出了设置。比如大家看文件结尾处:

  

      这个叫做欢迎页面,当没有输入资源地址时,会由上至下地查找,获取页面,进行响应。

      很清楚了吧,改动它就可以,但是不建议在这里改,会是所有站点设置变化,你应该将其复制到你需要改动的站点下的web.xml,进行设置。

   6、虚拟主机的配置。

      所谓虚拟主机,就是将一个或多个主机名(域名)和Tomcat所在的服务器进行绑定。由于一个IP可以和多个域名进行帮定,我们大可以将不同的域名指向服务器(指硬件)上的不同文件夹,造成一个服务器(或者一个IP)多个主机的“虚拟主机”效果。

      这个实现起来相当的简单。只需要在server.xml文件中新建Host节点,将其属性进行不同设置即可。

复制代码
 1 #你的主机名(域名)1
 2 <Host name="localhost"  appBase="webapps"
 3            unpackWARs="true" autoDeploy="true"
 4            xmlValidation="false" xmlNamespaceAware="false"> 
 5 </Host> 
 6 #你的域名2
 7 <Host name="www.coderecord.org" appBase="主机空间地址" 
 8        unpackWARs="true" autoDeploy="true" 
 9        xmlValidation="false" xmlNamespaceAware="false">  
10        #域名3可以和域名2共用一个主机空间
11         <Alias>coderecord.org</Alias>
12         <Context path="" docBase="站点地址" debug="1" reloadable="true" allowLinking="true" />
13 </Host> 
复制代码

      以上配置信息根据Tomcat的版本不同而不同。


posted on 2016-05-27 19:04  波波嘟  阅读(192)  评论(0编辑  收藏  举报