tomcat(五)配置详解

By | 2019年 11月 23日

6. 配置详解

server.xml 内部有一个 server 的定义
每个 server 中可以定义多个 service,
每个 service 中可以定义多个 connector 供自己的 engine 使用,
每个 engine 中可以定义多个 host,
host 为虚拟主机, 可以指定项目在文件系统同的路径和其他配置信息。

查看配置,下面会一块一块讲解,删除注释

cat /usr/local/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 name="Catalina">

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


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

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

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

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                prefix="localhost_access_log" suffix=".txt"
                pattern="%h %l %u %t "%r" %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

6.1. <Server>

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

8005是 tomcat 的管理端口,此条配置会让 tomcat 监听在本地的 127.0.0.1:8005 端口,使用 telnet 发送SHUTDOWN字符串后,tomcat 会关机。为了安全和规范,建议更改端口,更改 SHUTDOWN字符串为无规律复杂字符串。

  1. 示例telnet关闭tomcat。先安装telnet
yum install telnet
  1. telnet连接上后输入SHUTDOWN回车
# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN
Connection closed by foreign host.
  1. 查看端口,已经被关闭了
# ss -tnl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN      0      128               *:22                            *:*
LISTEN      0      128              :::22                           :::*
  1. 这个管理功能建议禁用,改shutdown为一串猜不出的字符串。如:
<Server port="8005" shutdown="44ba3c71d57f494992641b258b965f28">

6.2. <GlobalNamingResources>

<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>

该配置段可以指定一些全局配置,下面我配置一下用户验证功能,根据配置内容我们去修改 tomcat-users.xml 文件

用户认证,配置文件路径是/usr/local/tomcat/conf/tomcat-users.xml

  1. 打开tomcat-users.xml,删除注释
    我们需要一个角色manager-gui
vim /usr/local/tomcat/conf/tomcat-users.xml
<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="manager-gui"/>
    <user username="chen" password="123" roles="manager-gui"/>
</tomcat-users>
  1. Tomcat启动加载后,这些内容是常驻内存的。如果配置了新的用户,需要重启Tomcat。
su - tomcat -c '/usr/local/tomcat/bin/shutdown.sh'
su - tomcat -c '/usr/local/tomcat/bin/startup.sh'
  1. 访问manager的时候返回403,提示中告诉去manager的context.xml中修改
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml




在这里插入图片描述

修改allow这个键值,在结尾加|192\.168\.\d+\.\d+
再次测试,成功。

在这里插入图片描述

登录


6.3. <Service>

<Service name="Catalina">

一般情况下,一个Server实例配置一个Service,name属性相当于该Service的ID。


6.4. <Connector>

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

连接器配置
redirectPort,如果访问HTTPS协议,自动转向这个连接器。但大多数时候,Tomcat并不会开启HTTPS,因为Tomcat往往部署在内部,HTTPS性能较差。


6.5. <Engine>

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

引擎配置
defaultHost指向内部定义某虚拟主机。缺省虚拟主机可以改动,默认localhost。


6.6. <Host>

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

HTMLCopy

虚拟主机配置
name,必须是主机名,用主机名来匹配。
appBase,当期主机的网页根目录,相对于CATALINA_HOME,也可以使用绝对路径
unpackWARs,是否自动解压war格式
autoDeploy,热部署,自动加载并运行应用

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注