• Tomcat简介--01


    一、tomcat简介

    Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成

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

    Tomcat和Nginx,Apache(httpd),lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Server和JSP容器,独立的Server容器是Tomcat的默认模式,.不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器.
    其他JAVA容器还有resin,weblogic等

    二、 tomcat安装

    1.环境介绍

    2.部署java环境

    [root@sweb01 ~]# yum install java-1.8.0 -y
    [root@sweb01 ~]# java -version
    openjdk version "1.8.0_222"
    OpenJDK Runtime Environment (build 1.8.0_222-b10)
    OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
    

    3.部署tomcat

    [root@sweb01 ~]# mkdir /data/soft -p
    [root@sweb01 ~]# cd /data/soft/
    [root@sweb01 /data/soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz
    [root@sweb01 /data/soft]# tar zxf apache-tomcat-8.5.43.tar.gz -C /opt/
    [root@sweb01 /data/soft]# cd /opt/
    [root@sweb01 /opt]# ll
    总用量 4
    drwxr-xr-x 9 root root 4096 8月  10 16:37 apache-tomcat-8.5.43
    [root@sweb01 /opt]# ln -s apache-tomcat-8.5.43 tomcat
    [root@sweb01 /opt]# ll -h
    总用量 4.0K
    drwxr-xr-x 9 root root 4.0K 8月  10 16:37 apache-tomcat-8.5.43
    lrwxrwxrwx 1 root root   20 8月  10 16:37 tomcat -> apache-tomcat-8.5.43
    [root@sweb01 /opt]# echo 'export TOMCAT_HOME=/opt/tomcat'>>/etc/profile
    [root@sweb01 /opt]# source /etc/profile
    [root@sweb01 /opt]# /opt/tomcat/bin/version.sh    
    Using CATALINA_BASE:   /opt/tomcat
    Using CATALINA_HOME:   /opt/tomcat
    Using CATALINA_TMPDIR: /opt/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
    Server version: Apache Tomcat/8.5.43
    Server built:   Jul 4 2019 20:53:15 UTC
    Server number:  8.5.43.0
    OS Name:        Linux
    OS Version:     3.10.0-327.el7.x86_64
    Architecture:   amd64
    JVM Version:    1.8.0_222-b10
    JVM Vendor:     Oracle Corporation
    

    4.tomcat目录介绍

    总目录

    [root@sweb01 ~]# cd /opt/tomcat/
    [root@sweb01 /opt/tomcat]# tree -L 1
    ├── bin             #用以启动,关闭Tomcat或其他脚本功能的脚本(.bat和.sh)
    ├── conf            #用以配置Tomcat的XML及DTD文件
    ├── lib             #存放web应用能访问的JAR包
    ├── logs            #Catalina和其他web应用程序的日志文件
    ├── temp            #临时文件
    ├── webapps         #Web应用程序根目录
    └── work            #用以产生有JSP编译出的Servlet的.java和.class文件
    

    webapps目录

    [root@sweb01 /opt/tomcat]# cd webapps/
    [root@sweb01 /opt/tomcat/webapps]# ll
    总用量 8
    drwxr-x--- 14 root root 4096 8月  10 16:37 docs          #tomcat帮助文档
    drwxr-x---  6 root root   78 8月  10 16:37 examples      #web应用
    drwxr-x---  5 root root   82 8月  10 16:37 host-manager  #管理
    drwxr-x---  5 root root   97 8月  10 16:37 manager       #管理
    drwxr-x---  3 root root 4096 8月  10 16:37 ROOT          #默认网站根目录
    

    bin目录

    脚本            作用
    startup.sh           开启tomcat脚本
    shutdown.sh          关闭tomcat脚本
    catalina.shtomcat    核心管理脚本,以后jvm优化参数及相关配置,修改tomcat启动参数
    

    5.启动tomcat

    [root@sweb01 /opt/tomcat/bin]# cd
    [root@sweb01 ~]# /opt/tomcat/bin/startup.sh 
    Using CATALINA_BASE:   /opt/tomcat
    Using CATALINA_HOME:   /opt/tomcat
    Using CATALINA_TMPDIR: /opt/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    

    6.检查和测试

    [root@sweb01 ~]# ps -ef|grep tomcat
    root       2249      1  5 16:49 pts/1    00:00:01 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start
    [root@sweb01 ~]# ss -lntup|grep tomcat
    [root@sweb01 ~]# ss -lntup|grep java
    tcp    LISTEN     0      100      :::8009                 :::*                   users:(("java",pid=2249,fd=54))
    tcp    LISTEN     0      100      :::8080                 :::*                   users:(("java",pid=2249,fd=49))
    tcp    LISTEN     0      1      ::ffff:127.0.0.1:8005                 :::*                   users:(("java",pid=2249,fd=69))
    

    8.访问网站

    9.查看tomcat日志

    [root@sweb01 ~]# tail -f /opt/tomcat/logs/catalina.out 
    10-Aug-2019 16:50:03.831 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/apache-tomcat-8.5.43/webapps/docs] has finished in [25] ms
    10-Aug-2019 16:50:03.831 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/apache-tomcat-8.5.43/webapps/examples]
    10-Aug-2019 16:50:04.144 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/apache-tomcat-8.5.43/webapps/examples] has finished in [313] ms
    10-Aug-2019 16:50:04.144 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/apache-tomcat-8.5.43/webapps/host-manager]
    10-Aug-2019 16:50:04.164 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/apache-tomcat-8.5.43/webapps/host-manager] has finished in [20] ms
    10-Aug-2019 16:50:04.164 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/apache-tomcat-8.5.43/webapps/manager]
    10-Aug-2019 16:50:04.196 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/apache-tomcat-8.5.43/webapps/manager] has finished in [31] ms
    10-Aug-2019 16:50:04.213 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
    10-Aug-2019 16:50:04.219 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
    10-Aug-2019 16:50:04.221 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 44249 ms
    

    10.关闭命令

    [root@sweb01 ~]# /opt/tomcat/bin/shutdown.sh 
    Using CATALINA_BASE:   /opt/tomcat
    Using CATALINA_HOME:   /opt/tomcat
    Using CATALINA_TMPDIR: /opt/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
    [root@sweb01 ~]# ss -lntup|grep java  
    
    

    三、 tomcat配置文件

    1.tomcat配置文件介绍

    [root@sweb01 ~]# tree /opt/tomcat/conf/
    /opt/tomcat/conf/
    ├── Catalina
    │   └── localhost
    ├── catalina.policy
    ├── catalina.properties
    ├── context.xml
    ├── jaspic-providers.xml
    ├── jaspic-providers.xsd
    ├── logging.properties
    ├── server.xml              #主配置文件
    ├── tomcat-users.xml        #管理用户配置文件
    ├── tomcat-users.xsd
    └── web.xml
    
    

    2.tomcat管理

    测试功能,生产环境不要用
    Tomcat管理功能用于对Tomcat自身以及部署在Tomcat的应用管理的web应用,在默认的情况下处于禁止状态的.如果需要开启这个功能,就要配置管理用户,即配置前面说过的tomcat-user.xml
    下面是命令集合:
    修改tomcat-users.xml

    [root@sweb01 ~]# cat /opt/tomcat/conf/tomcat-users.xml    
    <?xml version='1.0' encoding='utf-8'?>
    <!--
         这是个优雅的注释
    -->
    <tomcat-users xmlns="http://tomcat.apache.org/xml"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
                  version="1.0">
      <role rolename="admin-gui"/>
      <role rolename="host-gui"/>
      <role rolename="manager-gui"/>
      <user username="tomcat" password="tomcat" roles="admin-gui,host-gui,manager-gui"/>
    </tomcat-users>
    
    

    修改context.xml文件

    [root@sweb01 ~]# grep "10" /opt/tomcat/webapps/manager/META-INF/context.xml    
             allow="10.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
    
    

    重新启动tomcat

    [root@sweb01 ~]# /opt/tomcat/bin/shutdown.sh 
    Using CATALINA_BASE:   /opt/tomcat
    Using CATALINA_HOME:   /opt/tomcat
    Using CATALINA_TMPDIR: /opt/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
    [root@sweb01 ~]# /opt/tomcat/bin/startup.sh 
    Using CATALINA_BASE:   /opt/tomcat
    Using CATALINA_HOME:   /opt/tomcat
    Using CATALINA_TMPDIR: /opt/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    
    

    3.访问网页测试

    四、 tomcat主配置文件Server.xml详解

    1.server.xml组件类别

     顶级组件:位于整个配置的顶层,如server
     容器类组件:可以包含其它组件的组件,如server,engine,host,context
     连接器组件:连接用户请求至tomcat,如connector
     被嵌套类组件:位于一个容器内,不能包含其它组件,如Valve,logger.

    <server>
         <service>
         <connector />
         <engine>
         <host>
         <context></context>
         </host>
         <host>
         <context></context>
         </host>
         </engine>
         </service>
    </server>
    
    

    2.组件详情

    engine:核心容器组件,catalina引擎,负责通过connector接受用户请求,并处理请求,将请求转至对应的虚拟主机host
    host:类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机
    context:定义一个应用程序,是一个最内层的容器类组件(不能再嵌套).篇日志context的主要目的指定对应的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外的属性,如部署方式等.
    connector:接收用户请求,类似于httpd的listen配置监听端口.
    service(服务):将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine.service内部有两个connector,一个engine.因此一个service内部可以有多个connector.
    server:表示一个运行于JVM中的tomcat实例
    Valve:阀门,拦截请求并在将其转至对应的webapp前进行某种处理操作,可以用于任何容器中,比如记录日志(access log valve),基于IP做访问控制(remote address filter valve).
    logger: 日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中.
    realm:可以用于任意容器类的组件中,关联一个用户认证库,实现认证和授权.可以关联的认证库有两种:UserDatabaseRealm,MemoryRealm和JDBCRealm
    UserDatabaseRealm:使用JNDI自定义的用户认证库.
    MemoryRealm:认证信息定义在tomcat-users.xml中
    JDBCRealm:认证信息定义在数据库中,并通过JDBC连接至数据库查找认证用户.
    
    

    3.配置文件注释

    tomcat配置文件注释
    
    <?xml version='1.0' encoding='utf-8'?>
    <!--
    <Server>元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.
        port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
        shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
    -->
    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
      <GlobalNamingResources>
        <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服务组件-->
      <Service name="Catalina">
        <!--
        connector:接收用户请求,类似于httpd的listen配置监听端口.
            port指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
            address:指定连接器监听的地址,默认为所有地址(即0.0.0.0)
            protocol连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
            minProcessors服务器启动时创建的处理请求的线程数
            maxProcessors最大可以创建的处理请求的线程数
            enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
            redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
            acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
            connectionTimeout指定超时的时间数(以毫秒为单位)
        -->
        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
        <!--engine,核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host
            defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
        -->
        <Engine name="Catalina" defaultHost="localhost">
          <!--Realm表示存放用户名,密码及role的数据库-->
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
          <!--
          host表示一个虚拟主机
            name指定主机名
            appBase应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。
            unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
            autoDeploy:在tomcat启动时,是否自动部署。
            xmlValidation:是否启动xml的校验功能,一般xmlValidation="false"。
            xmlNamespaceAware:检测名称空间,一般xmlNamespaceAware="false"。
          -->
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
            <!--
            Context表示一个web应用程序,通常为WAR文件
                docBase应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。
                path表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
                reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序
            -->
            <Context path="" docBase="" debug=""/>
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          </Host>
        </Engine>
      </Service>
    </Server>
    
    

    五、 Tomcat端口解释

    参考博客:

    https://www.jianshu.com/p/95d6ac54fc67
    
    

    tomcat启动之后默认会启动3个端口,分别是8080,8009,8005

    8080端口和8443端口

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

    这个端口用于监听浏览器发送的请求,设置为80后可以直接使用域名访问,但是如果使用普通账户启动的tomcat,则不能使用小于1024的端口
    8443端口是用于https连接的,除了打开注释之外还需要有域名证书才可以

    8009端口

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
    

    Nginx反向代理tomcat的时候可以使用ajp协议反向代理到该端口
    不过我们常用的还是反向代理到8080。

    8005端口

    <Server port="8005" shutdown="SHUTDOWN">
    
    

    tomcat监听的额关闭端口,就是说这个端口负责关闭tomcat的请求
    当执行shutdown.sh关闭tomcat就是链接8085端口执行shutdown命令

    六、 WEB站点部署

    1.使用war包部署web站点

    上线的代码有两种方式,第一种方式是直接将程序目录放在webapps目录下面,这种方式大家已经明白了,就不多说了,第二种方式是使用开发工具将程序打包成war包,然后上传到webapps目录下面,下面我们见识一下这种方式.

    2.自定义默认网站目录

    [root@sweb01 /opt/tomcat/webapps]# ls
    docs  examples  host-manager  manager  ROOT
    [root@sweb01 /opt/tomcat/webapps]# rz      #上传软件包
    [root@sweb01 /opt/tomcat/webapps]# ls      #上传完毕后tomcat会自动解压memtest.war包
    docs  examples  host-manager  manager  memtest  memtest.war  ROOT
    
    

    3.访问测试

    浏览器访问:http://10.0.1.9:8080/memtest/meminfo.jsp

    4.自定义默认网站目录

    上面访问的的网址为:http://10.0.1.9:8080/memtest/meminfo.jsp
    现在我想访问格式为:http://10.0.1.9:8080/meminfo.jsp
    应该怎么修改呢?
    方法一:
    将meminfo.jsp或其他程序放在tomcat/webapps/ROOT目录下即可.因为默认网站根目录为tomcat/webapps/ROOT
    方法二:
    修改配置文件,操作命令如下:

    [root@sweb01 ~]# vim /opt/tomcat/conf/server.xml 
       148        <Host name="localhost"  appBase="webapps"
       149              unpackWARs="true" autoDeploy="true">
       150              <Context path="" docBase="/opt/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
    
    

    5.访问测试

  • 相关阅读:
    How to Create a site at the specified URL and new database (CommandLine Operation)
    Using Wppackager to Package and Deploy Web Parts for Microsoft SharePoint Products and Technologies
    SQL Server Monitor v0.5 [Free tool]
    How to build Web Part
    Deploy web part in a virtual server by developing a Web Part Package file(.cab)
    How to recreate "sites" link if you delete it accidentally
    SharePoint Portal Server管理匿名访问设置
    Monitor sql connection from .Net SqlClient Data Provider
    Brief installation instruction of Sharepoint Portal Server
    How to Use SharePoint Alternate URL Access
  • 原文地址:https://www.cnblogs.com/gongjingyun123--/p/12548312.html
Copyright © 2020-2023  润新知