tomcat Web服务器 文件结构和发布网站

web服务器和客户端大致工作流程为:客户端向web服务器发送一个HTTP请求,web服务器接收一个请求,向客户端响应一个http请求。这里面会涉及服务端(Servlet-side服务器处理数据)技术,如:CGI,JSP(JavaServer Pages),servlets,ASP,JavaScript等。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,可解析http协议,它使用服务器端技术。

下载好的tomcat文件如下:

根目录有可执行文件夹(bin)、配置文件夹(conf)、lib(库文件夹)、logs(日志)、temp(临时文件夹)、webapps(网页应用程序)、work(工作),以及license、notice几个文件。

LICENSE:许可证,记录tomcat的一些条款,一些开源的协议。

NOTICE:注意事项。记录tomcat的新的通知,公告。

RELEASE-NOTES:发行版本说明,一些捆绑的API,新特性等等。

RUNNING.txt:运行环境以及怎样配置参数,变量,启动等等。

bin

bin文件夹下面放的是可执行性文件。其中:bat/exe文件是windows下可执行的脚本文件;sh文件时Linux/Unix下可执行的脚本文件。

bootstrap.jar 从文件名可以看出这个jar包是引导程序jar包,是tomcat的入口。

catalina.bat 这个脚本就比较重要了,这个脚本完成了很多基本操作,如启动、关闭等,catalina.bat都参与其中。

catalina.sh文件作用同catalina.bat,只不过在Linux/Unix系统下运行。

catalina-tasks.xml 配置文件,主要是引入各种jar包。

commons-daemon-native.tar.gz Linux/Unix下。

configtest.bat 检测语法是否正确的脚本文件。

cpappend.bat 这个脚本可以这样理解,classpath(cp)append就是将指定参数添加到classpath里面。

digest.bat 博主暂时也没弄清。

service.bat 启动tomcat服务。和注册tomcat服务那块有关系。

setclasspath.bat 设置classpath的脚本,在catalin.bat脚本中调用,可以设置java_home,jre_home等。

shutdown.bat  主要是检查catalina.bat 执行所需环境,并调用catalina.bat 批处理文件关闭tomcat服务。

startup.bat 主要是检查catalina.bat 执行所需环境,并调用catalina.bat 批处理文件启动tomcat服务。

tcnative-1.dll 加速器组件,可以提高性能。(也是在网上搜到的)

tomcat8.exe

tomcat8w.exe

tomcat-juli.jar Apache Tomcat由一个自己的实现了java.util.logging多个关键元素的实现。这个实现被称为“JULI”。实现的核心组件是定制化的LogManager,可以获取运行在Tomcat中的不同web应用(以及不同的class loader)。他支持为应用配置单独的日志配置。当有web应用从内在中是被卸载时,会接到Tomcat的通知,以便他所引用的类可以被清除,避免内存泄露。

tomcat-native.tar.gz 里面放的是tomcat本地的library。

tool-wrapper.bat 工具包装脚本

version.bat 一般是用来判断系统版本获取系统版本信息等。

conf

conf目录主要是用来存放tomcat的一些配置文件。

server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码 

web.xml可以设置tomcat支持的文件类型 

context.xml可以用来配置数据源之类的 

tomcat-users.xml用来配置管理tomcat的用户与权限 

在Catalina目录下可以设置默认加载的项目 

属性

解释

server

port

指定一个端口,这个端口负责监听关闭tomcat的请求

shutdown

指定向端口发送的命令字符串

 

GlobalNamingResources

 

服务器的全局JNDI资源,可以有子标签<Resource></Resource>

Executor(线程池,一个或多个Connector可以共享此线程池)

name

线程池名称,名称必须唯一

namePrefix

线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如 catalina-exec-1 、catalina-exec-2

 

maxThreads

允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源

 

minSpareThreads

最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源

 

maxIdleTime

最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源

 

threadPriority

线程的等级。默认是Thread.NORM_PRIORITY

 

service

name

指定service的名字

Connector (表示客户端和service之间的连接)

port

指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求

minProcessors

服务器启动时创建的处理请求的线程数

 

maxProcessors

最大可以创建的处理请求的线程数

 

enableLookups

如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址

 

redirectPort

指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号

 

acceptCount

指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

 

connectionTimeout

指定超时的时间数(以毫秒为单位)

 

Engine (表示指定service中的请求处理机,接收和处理来自Connector的请求)

name

 

defaultHost

指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的

 

jvmRoute

   

host (表示一个虚拟主机、并且可以包含Context子节点配置虚拟目录)

name

指定主机名

appBase

应用程序基本目录,即存放应用程序的目录

 

unpackWARs

如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序

 

autoDeploy

自动部署

 

xmlValidation

是否验证xml

 

xmlNamespaceAware

   

Realm (表示存放用户名,密码及role的数据库)

className

指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口

Context(host子节点配置虚拟目录)

path

虚拟目录名称

docBase

物理路径

 

Debug

Debug模式

 

Reload

True 重新加载,修改后自动加载

上面是server.xml元素的含义。基本配置都在这里了。

tomcat-users.xml tomcat配置用户的文件。是指定控制台用户、角色、密码的。

<tomcat-users>
 <role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="123456" roles="admin,manager"/>
</tomcat-users>

通过以上配置,可以为tomcat添加具有管理员权限的用户。

web.xml 访问tomcat入口。配置加载类和资源,如欢迎页等。


<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
      <Context path="itcast_hello" docBase="F:/hello"/>
</Host>
 

lib

lib目录主要用来存放tomcat运行需要加载的jar包。 

logs

logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。

webapps

webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。

 

work

work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。 

清空work目录,然后重启tomcat,可以达到清除缓存的作用。

经常用到的是conf和webapps两个文件夹,

tomcat组件

顶级组件:位于配置层次的顶级,并且彼此间有着严格的对应关系;

连接器:连接客户端(可以是浏览器或Web服务器)请求至Servlet容器,

容器:包含一组其它组件;

被嵌套的组件:位于一个容器当中,但不能包含其它组件;

各常见组件:

1、服务器(server):Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。

2、服务(service):一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情下只为一个service指派一个server。

连接器类组件:

3、连接器(connectors):负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序,通常指的是接收客户发来请求的位置及服务器端分配的端口。默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接器。

容器类组件:

4、引擎(Engine):引擎通是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。如果Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而如果Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,因为Web服务器自身就能确定将用户请求发往何处。一个引擎可以包含多个host组件。

5、主机(Host):主机组件类似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN的“虚拟主机”。一个引擎至少要包含一个主机组件。

6、上下文(Context):Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。

被嵌套类(nested)组件:

这类组件通常包含于容器类组件中以提供具有管理功能的服务,它们不能包含其它组件,但有些却可以由不同层次的容器各自配置。

7、阀门(Valve):用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术通常被称作请求转储(request dumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。

8、日志记录器(Logger):用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。日志记录的功能可被继承,因此,一个引擎级别的Logger将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的Logger组件。

9、领域(Realm):用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。

引擎(Engine):引擎是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它从HTTPconnector接收请求并响应请求。它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。如果Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而如果Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,因为Web服务器自身就能确定将用户请求发往何处。一个引擎可以包含多个host组件。

Tomcat连接器架构:

基于Apache做为Tomcat前端的架构来讲,Apache通过mod_jk、mod_jk2或mod_proxy模块与后端的Tomcat进行数据交换。而对Tomcat来说,每个Web容器实例都有一个Java语言开发的连接器模块组件,在Tomcat6中,这个连接器是org.apache.catalina.Connector类。这个类的构造器可以构造两种类别的连接器:HTTP/1.1负责响应基于HTTP/HTTPS协议的请求,AJP/1.3负责响应基于AJP的请求。但可以简单地通过在server.xml配置文件中实现连接器的创建,但创建时所使用的类根据系统是支持APR(Apache Portable Runtime)而有所不同。

APR是附加在提供了通用和标准API的操作系统之上一个通讯层的本地库的集合,它能够为使用了APR的应用程序在与Apache通信时提供较好伸缩能力时带去平衡效用。
同时,需要说明的是,mod_jk2模块目前已经不再被支持了,mod_jk模块目前还apache被支持,但其项目活跃度已经大大降低。因此,目前更常用 的方式是使用mod_proxy模块。

如果支持APR:

1

2

HTTP/1.1:org.apache.cotote.http11.Http11AprProtocol

AJP/1.3:org.apache.coyote.ajp.AjpAprProtocol

如果不支持APR:

1

2

HTTP/1.1: org.apache.coyote.http11.Http11Protocol

AJP/1.3: org.apache.jk.server.JkCoyoteHandler

连接器协议:

Tomcat的Web服务器连接器支持两种协议:AJP和HTTP,它们均定义了以二进制格式在Web服务器和Tomcat之间进行数据传输,并提供相应的控制命令。

AJP(Apache JServ Protocol)协议:目前正在使用的AJP协议的版本是通过JK和JK2连接器提供支持的AJP13,它基于二进制的格式在Web服务器和Tomcat之间传输数据,而此前的版本AJP10和AJP11则使用文本格式传输数据。

HTTP协议:诚如其名称所表示,其是使用HTTP或HTTPS协议在Web服务器和Tomcat之间建立通信,此时,Tomcat就是一个完全功能的HTTP服务器,它需要监听在某端口上以接收来自于商前服务器的请求。

 

附件:tomcat配置网站完整过程。

一 什么是tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。

二 tomcat 的版本:

tomcat 现有的版本有tomcat 7 ,tomcat 8 tomcat8.5,tomcat 9
image
我们可以在图片中看到tomcat8.0版本后续也是不会再进行更新和升级了,我们可以使用tomcat8.5和9.0

三 tomcat的下载

3.1 tomcat9版本下载链接

https://tomcat.apache.org/download-90.cgi

3.2 tomcat8.5版本下载链接

https://tomcat.apache.org/download-80.cgi

我们可以根据我们需要版本和系统进行下载。

四 tomcat的安装

tomcat的安装,由于该应用常用在linux服务器上,我们的安装教程是基于centos7进行安装:

4.1 java环境配置

tomcat 9 版本需要java8以上才能支持
cd /tmp && wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm 
rpm -ivh jdk-8u131-linux-x64.rpm
 环境变量:
vi + /etc/profile 
JAVA_HOME=/usr/java/jdk1.8.0_131 
CLASSPATH=.:$JAVA_HOME/lib.tools.jar 
PATH=$JAVA_HOME/bin:$PATH export 
JAVA_HOME CLASSPATH PATH 

#加载环境变量source /etc/profile

4.2 tomcat安装

# 安装wgetyum install wget -y# 下载tomcat包cd /tmp &&wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.13/bin/apache-tomcat-9.0.13.tar.gz# 解压tar -xzvf  apache-tomcat-9.0.13.tar.gz# 移动到指定位置并重命名mv /tmp/apache-tomcat-9.0.13 /opt/tomcat9# 启动 tomcat/opt/tomcat9/bin/startup.sh 
或者
/opt/tomcat9/bin/catalina.sh start# # 关闭tomcat/opt/tomcat9/bin/shutdown.sh
或者
/opt/tomcat9/bin/catalina.sh stop
还可以直接kill 进程号,当我们的tomcat是有用户进行访问的时候,我们杀死不了这个进程,只能通过强制杀死 kill -9# 查看当前的版本/opt/tomcat9/bin/version.sh# 开放端口tomcat 默认访问端口是8080,我们可以在conf目录的文件server.xml的69行进行端口更改。

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
如果是在阿里云进行配置的话,记得打开安全组的8080端口.

访问:

路径是 ip:8080(tomcat默认是绑定ip 0.0.0.0)
image

五 tomcat的目录结构

bin  # 脚本启动目录conf #配置文件目录lib  #tomcat运行的依赖包logs #日志文件目录temp #临时文件目录webapps  # 用来存放应用程序
    --docs  # 文档
    --examples # 示例
    --host-manager # 虚拟主机web管理界面
    --manager # 管理界面
    --ROOT # 默认访问的应用程序work # 部署的Web应用程序的临时工作目录,当我们需要清除缓存的时候可以将该目录删除.然后重启动tomcat.

六 tomcat的初始化

根据需求来进行初始化

  1. 第一更改端口:

    编辑配置文件 server.xml .
    大约在69行,将 port = "8080"更改成我们想绑定的端口.
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

  2. 配置编码

    为了避免程序上的一些请求和返回的中文乱码问题.我们需要配置.
    编辑配置文件 server.xml .
    大约在69行后,添加 useBodyEncodingForURI="true" URIEncoding="UTF-8"

    <Connector port="8080" protocol="HTTP/1.1"
                useBodyEncodingForURI="true" URIEncoding="UTF-8"
                connectionTimeout="20000"
                redirectPort="8443" />
  3. 配置文件



     

  4. <Server port="8005" shutdown="SHUTDOWN">
    <!-- 属性说明
        port:指定一个端口,这个端口负责监听关闭Tomcat的请求
        shutdown:向以上端口发送的关闭服务器的命令字符串
    -->
     
      <Listener className="org.apache.catalina.core.AprLifecycleListener" />
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
     
      <GlobalNamingResources>
     
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
     
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
           description="User database that can be updated and saved"
               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
     
      </GlobalNamingResources>
    <!--
        每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求
    -->
      <Service name="Catalina">
    <!-- 属性说明
        name:Service的名称
    -->
     
        <!--
            Connector元素:
                由Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果.
        -->
        <Connector port="80" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" />
        <!-- 属性说明
            port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。
            enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名;
                        若为false则不进行DNS查询,而是返回其ip地址。
            redirectPort:服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
            acceptCount:当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回Connection refused错误。
            connectionTimeout:等待超时的时间数(以毫秒为单位)。
            maxThreads:设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200。
            protocol:必须设定为AJP/1.3协议。
            address:如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址。
            minProcessors:服务器启动时创建的处理请求的线程数,每个请求由一个线程负责。
            maxProcessors:最多可以创建的处理请求的线程数。
            minSpareThreads:最小备用线程 。
            maxSpareThreads:最大备用线程。
            debug:日志等级。
            disableUploadTimeout:禁用上传超时,主要用于大数据上传时。
        -->
     
     
        <Connector port="8009" 
                   enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
        <!-- 负责和其他HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时就需要用到这个连接器。 -->
        
        <Engine name="Catalina" defaultHost="localhost">
        <!-- 属性说明
            name:对应$CATALINA_HOME/config/Catalina中的Catalina 
            defaultHost:对应Host元素中的name属性,也就是和$CATALINA_HOME/config/Catalina/localhost中的localhost
                缺省的处理请求的虚拟主机名,它至少与其中的一个Host元素的name属性值是一样的
            debug:日志等级
        -->
     
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 resourceName="UserDatabase"/>
        <!--
            由Host接口定义.一个Engine元素可以包含多个<Host>元素.
                每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.
        -->
        <Host name="localhost" appBase="webapps"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
        
        <!-- 属性说明
            name:在此例中一直被强调为$CATALINA_HOME/config/Catalina/localhost中的localhost虚拟主机名
            debug:是日志的调试等级 
            appBase:默认的应用路径,也就是把应用放在一个目录下,并在autoDeploy为true的情况下,可自动部署应用此路径相对于$CATALINA_HOME/ (web applications的基本目录)
            unpackWARs:设置为true,在Web应用为*.war是,解压此WAR文件. 
                       如果为true,则tomcat会自动将WAR文件解压;否则不解压,直接从WAR文件中运行应用程序.
            autoDeploy:默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用 
        -->
     
        <Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true" > 
            </Context>
        <!-- 属性说明
            path:访问的URI,如:http://localhost/是我的应用的根目录,访问此应用将用:http://localhost/demm进行操作,此元素必须,
                表示此web application的URL的前缀,用来匹配一个Context。请求的URL形式为http://localhost:8080/path/*
            docBase:WEB应用的目录,此目录必须符合Java WEB应用的规范,web application的文件存放路径或者是WAR文件存放路径。
            debug:日志等级 
            reloadable:是否在程序有改动时重新载入,设置成true会影响性能,但可自动载入修改后的文件,
                如果为true,则Tomcat将支持热部署,会自动检测web application的/WEB-INF/lib和/WEB-INF/classes目录的变化,
                自动装载新的JSP和Servlet,我们可以在不重起Tomcat的情况下改变web application
        -->
          </Host>
        </Engine>
      </Service>
    </Server>

七 tomcat的启动

# 启动 tomcat/opt/tomcat9/bin/startup.sh 
或者/opt/tomcat9/bin/catalina.sh start# # 关闭tomcat/opt/tomcat9/bin/shutdown.sh
或者/opt/tomcat9/bin/catalina.sh stop
还可以直接kill 进程号,当我们的tomcat是有用户进行访问的时候,我们杀死不了这个进程,只能通过强制杀死 kill -9# 查看当前的版本/opt/tomcat9/bin/version.sh

八 tomcat更改绑定ip

在生产环境我们经常有这样的需求,将tomcat的绑定ip更改.不让外部人可以直接访问.

tomcat默认的绑定是 0.0.0.0 ,也就意味着这样外网就可以访问我们的tomcat,
但是我们想要我们的tomcat不让外网访问

解决方法:

  1. 更改绑定ip,绑定127.0.0.1,这样就只能本机访问了
    编辑配置文件 server.xml .
    大约在69行,在配置端口的地方,添加 :address="127.0.0.1"

    <Connector port="8080" protocol="HTTP/1.1"
           address="127.0.0.1"
           connectionTimeout="20000"
           redirectPort="8443" />
  2. 更改防火墙规则,不对外开放8080端口.

    firewall-cmd  --remove-port=8080/tcp --permanentfirewall-cmd  --reload

九 tomcat隐藏manager界面

通过nginx重定向的隐藏界面

十 jenkins使用插件自动部署tomcat

使用jenkins来进行发布war包

  1. 除了常规的将tomcat暂停后,进行删除原来的war包,scp传输新的war包,启动tomcat

  2. 还可以使用插件 deploy war/ear to a container ,通过tomcat的manager界面来进行 来进行发布。

deploy war/ear to a container:发布war包到服务器

deploy artifacts to maven reepository:发布到maven服务器

image

WAR/EAR files: 填的是生成的wa包的路径。ugou-admin/target/ugou-admin.war(实际路径是:/root/.jenkins/jobs/ugou-admin-online/workspace/ugou-admin/target/ugou-admin.war)
Context path: 填的是上传到tomcat的路径。即使用localhost/(content path设置的名字)来访问项目
比如我的项目访问路径是 :http://127.0.0.1/ugou-admin/ 那么这里我应该填入的就是 /ugou-admin

Container: 选择我们使用的tomcat版本。
Manager user name /Manager password: 填入我们在$CATALINA_BASE/conf/tomcat-users.xml 配置的用户名和密码

Tomcat URL : 填入我们的tomcat url 比如我们设置的端口是80 那么直接填入ip就行了 :http://127.0.0.1/,如果有端口,那么我们就需要填入对应的端口

Deploy on failure : 构建失败是否还发布。勾选表示是,不勾选表示不是,生产环境建议不勾选。

十一 tomcat 部署项目的三种方法(补充)

11.1 方法一 把war包添加到webapps

直接将 war 包放在 ./webapps 下

tomcat 会自动将war解压

image

11.2 方法二 更改配置文件 server.xml(官方不建议使用该方法)

我们可以在 ./conf/目录下找到server.xml文件
我们需要在 里面添加上我们的项目的访问路径和存放路径配置

<Context  path="/djx" docBase="/tmp/djx/" reloadable="true" />
path 指的是 访问路径  
docBase 指的是项目存放路径
reloadable 设置为true表示Catalina将监视 /WEB-INF/classes/和/WEB-INF/lib的文件,一旦发生更改将自动重新加载Web应用程序。它可以在在开发的时候使用,但需要消耗更多资源,官方文档写到不建议在生产环境上使用,所以它的默认值是false.8.0版本文档
Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected. This feature is very useful during application development, but it requires significant runtime overhead and is not recommended for use on deployed production applications. That's why the default setting for this attribute is false. You can use the Manager web application, however, to trigger reloads of deployed applications on demand.

配置示例:

配置示例

11.3 方法三 使用xml配置文件(建议方法)

在 ./conf/Catalina/localhost/ 下添加xml配置文件.

示例: 我要让/tmp/www/ 里的网站部署在tomcat上 。

vim  djx.xml    # 文件的名称也就是我们后面访问时要在ip端口加的后缀

djx.xml 内容,docBase 后面填入项目的路径

<Context  docBase="/tmp/www/" />

然后我们重启tomcat,然后在浏览器 192.168.1.198/djx/访问的文件名 即可访问到我们的项目文件了
image

11.4 注意点

注意点一

方法三中如果我想直接通过ip+端口就能直接访问到我部署的项目,那么我们这个xml 文件的名称就应该是 ROOT.xml(要全都大写哦)

第三种的文件命名示例:
image

注意点二

对于参数reloadable="true" ,在方法二特别说明了,大家注意。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章