利刃出鞘_Tomcat 核心原理解析(七)
一、Tomcat专题 - Tomcat管理配置 - host-manager
1、Tomcat 管理配置
从早期的Tomcat版本开始,就提供了Web版的管理控制台,他们是两个独立的Web应用,位于webapps目录下。Tomcat 提供的管理应用有用于管理的Host的host-manager和用于管理Web应用的manager。
2、host-manager
Tomcat启动之后,可以通过 http://localhost:8080/host-manager/html 访问该Web应用。 host-manager 默认添加了访问权限控制,当打开网址时,需要输入用户名和密码(conf/tomcat-users.xml中配置) 。所以要想访问该页面,需要在conf/tomcat-users.xml 中配置,并分配对应的角色:
1) admin-gui:用于控制页面访问权限。
2) admin-script:用于控制以简单文本的形式进行访问。
…\apache-tomcat-8.5.42\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="admin-script"/>
<user username="dzs168" password="dzs168" roles="admin-script,admin-gui"/>
</tomcat-users>
3、 在 apache-tomcat-8.5.42\conf\server.xml 配置文件里配置2个虚拟主机。
<?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" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- 默认引擎 标签的虚拟主机,配置为 www.tomcat.com -->
<Engine name="Catalina" defaultHost="www.tomcat.com">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!-- 第1个虚拟主机 -->
<Host name="www.tomcat.com" appBase="webapps" unpackWARs="false" 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>
<!-- 第2个虚拟主机 -->
<Host name="oa.tomcat.com" appBase="webapps2" unpackWARs="false" 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>
4、修改本地 hosts 文件。C:\Windows\System32\drivers\etc\hosts
127.0.0.1 www.tomcat.com
127.0.0.1 oa.tomcat.com
5、复制 …\apache-tomcat-8.5.42\webapps\ 文件夹,更名为…\apache-tomcat-8.5.42\webapps2\
1)修改 …\apache-tomcat-8.5.42\webapps\ROOT\index.jsp 区别标识。
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="${tomcatUrl}">Home-01</a></span>
......
2)修改 …\apache-tomcat-8.5.42\webapps2\ROOT\index.jsp 区别标识。
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="${tomcatUrl}">Home-02</a></span>
......
6、启动 tomcat 服务(…\apache-tomcat-8.5.42\bin\startup.bat)进行测试。
1)浏览器地址栏输入:http://127.0.0.1:8080/ 正常访问。index.jsp( Home-01 页面 )
2)浏览器地址栏输入:http://www.tomcat.com:8080/ 可正常访问。index.jsp( Home-01 页面 )
3)浏览器地址栏输入:http://oa.tomcat.com:8080/ 可正常访问。index.jsp( Home-02 页面 )
4)当在 …\apache-tomcat-8.5.42\conf\tomcat-users.xml 配置下,没有设置 admin-gui 和 admin-script 时,
如下:
<?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="admin-script"/>
<user username="dzs168" password="dzs168" roles="admin-script,admin-gui"/>
-->
</tomcat-users>
5)点击 【Host Manager】,会提示输入用户名、密码,点击【取消】,弹出如下界面。
7、当在 …\apache-tomcat-8.5.42\conf\tomcat-users.xml 配置下,设置好 admin-gui 和 admin-script ,
重新启动 tomcat 服务( …\apache-tomcat-8.5.42\bin\startup.bat )
<?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="admin-script"/>
<user username="dzs168" password="dzs168" roles="admin-script,admin-gui"/>
</tomcat-users>
8、浏览器地址栏输入:http://127.0.0.1:8080/ 正常访问。index.jsp( Home-01 页面 )
点击 【Host Manager】,输入用户名:dzs168 、密码:dzs168,点击【登录】。会看到两个虚拟主机。
二、Tomcat专题 - Tomcat管理配置 - manager
1、manager 的访问地址为 http://localhost:8080/manager, 同样, manager 也添加了页面访问控制,因此我们需要为登录用户分配角色为:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="dzs168" password="dzs168" roles="admin-script,admin-gui,manager-gui,manager-script"/>
2、在 …\apache-tomcat-8.5.42\conf\tomcat-users.xml 配置下,设置好 manager-gui 和 manager-script ,
<?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="admin-script"/>
<!-- <user username="dzs168" password="dzs168" roles="admin-script,admin-gui"/> -->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="dzs168" password="dzs168" roles="admin-script,admin-gui,manager-gui,manager-script"/>
</tomcat-users>
3、重新启动 tomcat 服务( …\apache-tomcat-8.5.42\bin\startup.bat ),浏览器地址栏输入:http://127.0.0.1:8080/ 正常访问。index.jsp( Home-01 页面 )
点击 【Manager App】,输入用户名:dzs168 、密码:dzs168,点击【登录】。
4、Server Status 服务状态。
三、Tomcat专题 - JVM配置 - 内存参数配置
1、JVM 配置
最常见的JVM配置当属内存分配,因为在绝大多数情况下,JVM默认分配的内存可能不能够满足我们的需求,特别是在生产环境,此时需要手动修改Tomcat启动时的内存参数分配。
2、 JVM 内存模型图
3、JVM 配置选项
1)windows 平台( …\apache-tomcat-8.5.42\bin\catalina.bat ):
set JAVA_OPTS=‐server ‐Xms2048m ‐Xmx2048m ‐XX:MetaspaceSize=256m ‐XX:MaxMetaspaceSize=256m ‐XX:SurvivorRatio=8
2)linux 平台( …\apache-tomcat-8.5.42\bin\catalina.sh ):
JAVA_OPTS="‐server ‐Xms1024m ‐Xmx2048m ‐XX:MetaspaceSize=256m ‐XX:MaxMetaspaceSize=512m ‐XX:SurvivorRatio=8"
4、JVM 配置选项 参数说明 :
序号 | 参数 | 含义 | |
---|---|---|---|
1 | -Xms | 堆内存的初始大小 | |
2 | -Xmx | 堆内存的最大大小 | |
3 | -Xmn | 新生代的内存大小,官方建议是整个堆得 3/8。 | |
4 | -XX:MetaspaceSize | 元空间内存初始大小, 在JDK1.8版本之前配置为 -XX:PermSize(永久代) | |
8 | -XX:MaxMetaspaceSize | 元空间内存最大大小, 在JDK1.8版本之前配置为 -XX:MaxPermSize(永久代) | |
6 | -XX:InitialCodeCacheSize -XX:ReservedCodeCacheSize | 代码缓存区大小 | |
7 | -XX:NewRatio | 设置新生代和老年代的相对大小比例。这种方式的优点是新生代大小会随着整个堆大小动态扩展。如 -XX:NewRatio=3 指定老年代 / 新生代为 3/1。 老年代占堆大小的 3/4,新生代占 1/4 。 | |
8 | -XX:SurvivorRatio | 指定伊甸园区 (Eden) 与幸存区大小比例。如-XX:SurvivorRatio=10 表示伊甸园区 (Eden) 是 幸存区 To 大小的 10 倍 (也是幸存区 From的 10 倍)。 所以, 伊甸园区 (Eden) 占新生代大小的 10/12, 幸存区 From 和幸存区 To 每个占新生代的 1/12 。 注意, 两个幸存区永 | |
5、配置之后, 重新启动Tomcat ,访问 http://localhost:8080/manager/status 查看 JVM 内存情况。
上一节关联链接请点击
# 利刃出鞘_Tomcat 核心原理解析(六)