Tomcat的部署学习

Tomcat的安装配置

一、下载

        我知道有两个地方可以下载,一个是Apache的官方网站,一个是清华大学开源软件镜像站。两个都挺好用的。(以下载Tomcat8为例)

Apache Tomcat® - Welcome!

Index of /apache/tomcat (tsinghua.edu.cn)

(1)打开后点击Tomcat8

        有绿色解压版(下载后直接解压,之后需要配置环境变量,将Tomcat作为系统服务进行注册)和安装版(按安装软件步骤完成),一般老师教的都是自己配置,其实用起来都差不多。

(2)镜像站的也很好操作,选择自己想要的版本就可以下载了

 

二、Tomcat的运行环境搭建。

1、初步启动测试

解压后页面如下

 Tomcat的启动是一个bat文件,在bin目录下。双击即可。(相反shutdown.bat是用来关闭的)

启动后在浏览器输入 http:localhost:8080/ 回车,会出现如下画面

问题一:如果启动不成功,一般的情况是控制台出来一下立即消失,说明Tomcat没有找到Java的运行时环境。简单理解,就是Tomcat找不到JDK,没办法运行。

下载安装配置JDK:Version 1.7.0_79 of the JVM is not suitable for this product.Version:1.8【已解决】JDK1.8下载安装与配置测试_Alone_in_的博客-CSDN博客https://blog.csdn.net/Alone_in_/article/details/104059955

问题二:Tomcat启动控制台中文乱码

进入到tomcat安装目录,找到conf下的logging.properties文件,将里面全部UTF-8改为GBK。

 

 shutdown后重新双击startup.bat运行,中文就不会乱码啦!

 

 2、配置Tomcat环境变量

(1)【此电脑】- 右键【属性】- 【高级系统设置】- 【环境变量】- 【系统变量】处新建变量

变量名:CATALINA_HOME

变量值:E:\Storage\Environment\apache-tomcat-8.5.78(Tomcat解压或安装后的路径)

(2)双击打开变量Path,添加变量值:%CATALINA_HOME%\lib;%CATALINA_HOME%\bin

   将命令行转入到Tomcat安装Bin目录,例如:E:\Storage\Environment\apache-tomcat-8.5.78\bin  ,输入命令:service.bat install   如下图:

Win+R输入services.msc回车就可以看到,Tomcat已经注册成为系统服务啦。

 输入命令:service.bat remove可以移除注册服务

 3、测试 Tomcat8 服务

(1)点击左下角的Win图标,找到命令提示符,右键以管理员身份运行,

        或者Win+R输入【runas /user:管理员用户名 cmd】,输入密码后回车也可打开命令提示符管理员模式。

 

 (2)输入命令。启动服务 net Start Tomcat8 / 关闭服务 net stop  Tomcat8

        注:  Tomcat8是刚刚注册的Tomcat服务名称,注册的时候命令行有显示,漏看了就移除重新注册看看。

        启动Tomcat,在浏览器地址栏输入http://localhost:8080/如果看到关于Tomcat的介绍,说明Tomcat的服务注册配置成功。

4、启动方式

tomcat启动方式有很多种,各式各样,前面测试就已经介绍两种了,再记录下其他的。

方式一:服务管理器

      测试tomcat服务的时候我用的是命令行启动,其实还有更简单的方法是直接在服务中右键启动

      Win+R输入 services.msc 或者右键【此电脑】- 【管理】- 【服务和应用程序】- 【服务】,找到“Apache Tomcat 8.5 Tomcat8”服务,右键选择“启动”。

方式二:Tomcat8w.exe

       在 Tomcat 解压目录下的 bin 文件夹有这样一个exe应用,不同版本的名字大同小异。双击打开便可看到如下界面,点击 start 就可启动 Tomcat 了。

         测试是否启动成功的方法都是一样的, 浏览器地址栏输入http://localhost:看能否能出现Tomcat介绍就行了。显示的就是tomcat里面自带的测试项目,完整的地址是http://localhost:8080/ROOT/index.jsp,存储在%TOMCAT_HOME%(以下代指 Tomcat 的安装目录)/webapps文件夹里。

 补充知识点一:Tomcat的目录结构介绍

打开%TOMCAT_HOME%/ RUNNING.txt,里面有一段介绍

  • bin目录存放一些启动运行Tomcat的可执行程序和相关内容。
  • conf存放关于Tomcat服务器的全局配置。
  • lib目录存放Tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包。
  • logs存放Tomcat日志信息;temp存放临时文件。
  • wabapps目录是默认的站点根目录,可以在server.xml更改。
  • work目录用于在服务器运行时过度资源,简单来说,就是存储jsp、servlet翻译、编译后的结果。

补充知识点二: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在默认的站点下把默认的页面返回给客户端浏览器作为响应。

Tomcat部署

        Tomcat部署Java Web应用程序有两种方式:静态部署和动态部署。

        静态部署:指的是服务器启动之前部署Web应用程序,只有当服务器启动之后,Web应用程序才能访问。Tomcat启动部署顺序:

  1. 部署上下文描述符(Context)。
  2. 部署展开的应用。如果部署目录中存在相应的war包,则检查是否比当前的应用更新;如果更新,则删除当前的应用,并解压该war包,得到最新的应用。
  3. 部署war包。

        动态部署:指的是服务器启动之后部署web应用程序,而不用重新启动服务器。可以通过tomcat管理器(%TOMCAT_HOME%/webapps/manager)或者其他工具执行部署。

一、静态部署

        1、利用Tomcat自动部署

         知识点:站点是具有特定结构的文件夹。这一点在Tomcat里表现得极为清晰。在服务器上肯定是用文件夹(即目录结构)来存储和管理的。但是它和普通的文件夹又不同,在Tomcat里,可用于作为站点的文件夹必须有如下特点:拥有一个名为WEB-INF的子文件夹,该子文件夹下必须有一个名为web.xml的文件,而且该xml文件必须受约束与特定的DTD(DTD,文档类型定义,主要用来定义合法的文档结构)。

         建立站点。在%TOMCAT_HOME%/webapps目录下创建文件夹webtest,创建WEB-INF子文件夹,并在其中创建web.xml。web.xml内容可以复制参考webapps/ROOT/WEB-INF/web.xml。同时在webtest目录下新建index.html用于显示测试。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
    <h1>HelloWorld!</h1>
</body>
</html>

        这样一个站点就算建立好了。启动Tomcat,Tomcat启动时将自动加载项目。访问地址:http://localhost:8080/webtest 就能访问到 index.html

         这种方式比较简单,但是web应用程序必须在webapps目录下。Tomcat的webapps目录是Tomcat默认的站点根目录(conf/server.xml 文件的Host节点下的appBase属性),当服务器启动时,会加载这个目录下的所有项目。

         2、修改Server.xml文件部署指定项目

        (1)修改Tomcat默认站点

        访问http://localhost:8080/ 这个空站点,会默认跳转到webapps/ROOT下的index.jsp。修改需在%TOMCAT_HOME%/conf/server.xml 文件的Host节点里,添加Context节点,将空站点改为指向测试项目webtest。

        Context节点意思就是告诉Tomcat当浏览器在请求某个站点时(或者说在域名后面跟的是什么名字),你来找我。告诉Tomcat我在哪里。现在启动Tomcat,浏览器访问测试:

         (2)部署指定路径项目

        这种方式项目可以不用放在到webapps下,我们把webtest移动到D盘做测试,此时项目路径为D:/webtest。同样,添加Context节点(上面修改默认站点添加的那个Context要先删除或直接在上面修改,不然Tomcat启动会报错闪退):        

  • path:是访问时的根地址,表示访问的路径;如上述例子中,访问该应用程序地址如下:http://localhost:8080/webtest
  • reloadable:指示tomcat是否在运行时监控在WEB-INF/classes和WEB-INF/lib目录下class文件的改动。值为true时,文件如有改动,会触发服务器自动重新加载。这个属性在开发阶段通常都设为true,方便开发,在发布阶段应该设置为false,提高应用程序的访问速度,降低可能给服务器带来的性能压力。
  • docbase:表示应用程序的路径,注意斜杠的方向“/”。 docBase可以使用绝对路径,也可以使用相对路径,相对路径是相对于%TOMCAT_HOME%/webapps(参考默认站点的修改)。
  • workdir:表示缓存文件的放置地址,是指Tomcat解析Jsp转换为Java文件,并编译为class存放的文件夹,设置在项目文件夹里面,可以避免移植到其他地方首次读取jsp文件需要重新解析 。(一般格式:项目文件夹/work)

         启动Tomcat测试

        (3)修改Tomcat默认监听端口

        在%TOMCAT_HOME%/conf/server.xml文件中,找到以下内容:

  • port:作为一个网络server端,它需要暴露一个socket端口来accept客户端的链接,可以通过port指定。即Tomcat的监听端口。
  • protocol:使用的网络协议,表示tomcat使用何种方式来接受和处理client端请求,"HTTP/1.1"是默认值,等效"org.apache.coyote.http11.Http11Protocol";还有熟悉的"AJP/1.3";关于HTTP和AJP两种方式的区别和性能优劣可以参见其他文档。在Tomcat 6.0之后,还提供了NIO的方式,可以有效的提升性能,特别是在大量长连接/数据上传+下载等web应用中。此时portocal="org.apache.coyote.http11.Http11NioProtocol".
  • connectionTimeout: 指定超时的时间数( 以毫秒为单位)
  • redirectPort:指定服务器正在处理http 请求时收到了一个SSL 传输请求后重定向的端口号

         一般访问网站输入域名就可以了(如localhost、www.baidu.com),很少出现要自己输入访问端口号的,所以可以将 port 改为80(http协议默认为80)启动Tomcat测试:

        当然,端口号也可以改成其他的,比如8088,8066之类的

Duang!

        问题来了,为什么访问站点时会自动访问webtest下的index.html。打开%TOMCAT_HOME%的conf目录里的web.xml(这个文件是对所有站点的共同属性做出了设置)。在文件的尾部有这样一段设置

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

        如果有需要(比如改成登录页面)改动它就可以,但是不建议在这里改,这里变动会影响所有站点,所以应该将其复制到需要改动的站点下的web.xml里,进行修改设置。比如我把webtest站点的欢迎页面的改成login页面。

        3、增加自定义的Web部署文件

        对于第二种方法而言,一般不会有人每次都对server.xml文件进行修改,而是通过在%TOMCAT_HOME%/conf/Catalina/localhost目录下创建一个xml文件。在conf/server.xml 文件的Host节点除了appBase还有一个xmlBase属性,appBase属性指定Web应用所在的目录,默认值是webapps;xmlBase属性指定Web应用的XML配置文件所在的目录,默认值为%TOMCAT_HOME%/conf/Catalina/localhost。Tomcat按照如下的顺序进行扫描,来检查应用更新:

  1. 扫描虚拟主机指定的xmlBase下的XML配置文件
  2. 扫描虚拟主机指定的appBase下的WAR文件
  3. 扫描虚拟主机指定的appBase下的应用目录

        比如现在在xmlBase目录下新建template.xml,写入如下内容,同时将webtest项目移动到新建的test文件夹:

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="E:/Storage/Environment/apache-tomcat-8.5.78/conf/Catalina/localhost/test/webtest" path="/template" reloadable="false">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

 

最后启动Tomcat,通过 http://localhost:8080/template(这里的path需和xml的名字一致) 访问:

补充知识点:让tomcat只运行conf/server.xml中指定的web应用

      可以有以下2种办法:

       实现一: 

     1)将要部署的WEB应用放在webapps以外的路径, 并在 server.xml 相应的 Context 中的docBase 指定. 

     2)删除 webapps 中的所有文件夹, 以及 conf/catalina/localhost 下所有xml文件. 

     注: webapps是server.xml中的 Host 节点的 appBase 属性的值。

      实现二: 

     修改server.xml中 Host 元素的属性, 添加或修改: deployXML ="false" deployOnStartup ="false" autoDeploy="false"

    deployXML ="false" : 不部署conf/catalina/localhost下的xml相应的WEB应用
    deployOnStartup ="false" :tomcat启动时, 不部署webapps下的所有web应用
    autoDeploy ="false"  :避免tomcat在扫描改动时, 再次把webapps下的web应用给部署进来.

二、动态部署

        在%TOMCAT_HOME%/conf/server.xml 文件的Host节点里,autoDeploy(自动部署)这个属性需为 ture(默认就是),当它为true,Tomcat启动时支持如下操作:

  1. 部署新拷贝到appBase下的war文件。
  2. 部署拷贝到appBase下的展开的应用(未压缩的)。
  3. 当提供一个更新的war包时,重新部署应用。会先删除当前存在的应用,再进行解压部署。
  4. 当/WEB-INF/web.xml被改写时,自动部署。
  5. 当web应用的context.xml上下文描述符被更新时,自动部署。
  6. 当CATALINA_HOME/conf下对应的应用的上下文描述符被更新时,自动部署。
  7. 当对应的docBase文档被删除时,自动部署。

        第一:Tomcat管理器

        Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。

 想要进去需要先配置账户密码和权限,否则就会报401:(401状态码: 请求要求身份验证)

 打开%TOMCAT_HOME%/conf/tomcat-users.xml,添加user属性,账户密码随意:

  • manager-gui:允许访问HTML GUI和状态页面(/manager/html/*)
  • manager-script:允许访问HTTP API和状态页面(/manager/text/*)
  • manager-jmx:允许访问JMX代理和状态页面(/manager/jmxproxy/*)
  • manager-status:只允许访问状态页面(/manager/status/*)

        根据文件里的注释介绍,manager-gui、manager-script、manager-jmx均具备manager-status的权限,也就是说,manager-gui、manager-script、manager-jmx三种角色权限无需再额外添加manager-status权限,即可直接访问路径/manager/status/*。

        等待Tomcat重新加载内存用户数据库,或者重启Tomcat后,再次点击Manager App输入设置的账户密码就能进入项目管理页面了,可在里面进行项目的管理和动态部署war等操作。

        比如我在Eclipse新建了一个Web项目,写了一个简单显示Hello World的页面,现在Export导出成HelloWebProject.war,回到Manager界面,选择刚刚的war包,点击部署。 

就部署成功了 。

在webapps文件夹里能看到,Tomcat是将war包从外面复制过来后,进行解压部署的。

此时就能通过​​​​​​​http://localhost:8088/HelloWebProject/访问到HelloWorld页面了。

 补充:1、war包如果太大,超出Tomcat Manager的默认限制大小(50MB),部署失败的话,可以在%TOMCAT_HOME%/webapps/manager/WEB-INF/web.xml中进行修改,修改后重启生效。

2、 听说server.xml的Connector节点需添加URIEncoding="UTF-8",不然会出现前台传递到后台出现乱码或者带中文参数的查询sql查询不到数据的情况,我没出现过,先记录这备用。

        第二:TCD(Tomcat Client Deployer)

        上面下载安装时下载的是Core核心包,使用TCD则需要下载Deployer部署包。

         打开deployer-howto.html,里面对TCD有简单的介绍,据说还要对Apache Ant有一定的了解,具体是怎么使用的,说实话我还没开始看,等后面我研究了再更新吧。

        第三:服务器运维管理面板

        宝塔、AppNode、云帮手、安全狗、云帮手、云锁、悬镜、WDCP、旗鱼云梯

 参考:

Tomcat服务器的安装配置图文教程(推荐) / 张生荣 (zhangshengrong.com)

一:Tomcat安装、配置和部署笔记 (bbsmax.com)

Tomcat 部署详解 - xingoo - 博客园 (cnblogs.com)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值