Tomcat 服务器是一个免费的开源 Web 应用服务器, 属于轻量级应用服务器, 在中小型系统和并发用户不是很多的场合中被普遍使用, 是开发和测试 JSP 程序的首选. 一般来说, Tomcat 虽然和 apache 或者 Nginx 这些 Web 服务器一样, 具有处理 HTML 页面的功能, 然而由于其处理静态页面的能力远不如 apache 或者 Nginx, 所以 Tomcat 一般是作为一个 servlet 和 JSP 容器, 单独运行在后端.
关于 Tomcat 的目录及配置文件详解可参考官网: https://tomcat.apache.org/
一, 部署 Tomcat
准备工作:
? centos7.3 服务器一台
? 下载所需用到的软件包: https://pan.baidu.com/s/1Meys8bsvBsdwVUYak9srKQ
? 提取码: 5bic
1, 开始部署:
- [[email protected] /]# rpm -qa | grep jdk # 检测 rpm 安装的 jdk 环境
- copy-jdk-configs-1.2-1.el7.noarch
- java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
- java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
- java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
- java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
- # 将带有 headless 的软件包卸载掉
- [[email protected] /]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 # 将两个版本都卸载
- [[email protected] /]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
- [[email protected] /]# mkdir tomcat
- [[email protected] /]# cd tomcat/
- [[email protected] tomcat]# rz # xshell 环境直接上传所需软件包
- [[email protected] tomcat]# ls
apache-tomcat-8.5.35.tar.gz jdk-8u211-Linux-x64.tar.gz tomcat 监控页面. txt
- [[email protected] tomcat]# tar zxf jdk-8u211-Linux-x64.tar.gz -C /usr/local/ # 将 jdk 软件包解压到指定目录
- [[email protected] tomcat]# tar zxf apache-tomcat-8.5.35.tar.gz # 解压 Tomcat 源码包
- [[email protected] tomcat]# mv apache-tomcat-8.5.35 /usr/local/tomcat # 移动 Tomcat 至指定路径并修改目录名为 Tomcat
- [[email protected] tomcat]# VIM /etc/profile # 编辑环境变量, 在文件末尾添加如下几行
- ............. // 省略部分内容
- export JAVA_HOME=/usr/local/jdk1.8.0_211
- export JRE_HOME=/usr/local/jdk1.8.0_211/jre
- export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
- export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
- [[email protected] tomcat]# . /etc/profile # 执行使之生效
- [[email protected] /]# java -version # 查看 Java 版本, 确保已经安装成功
- java version "1.8.0_211"
- Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
- Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
- [[email protected] /]# /usr/local/tomcat/bin/startup.sh # 启动 Tomcat 服务
- Using CATALINA_BASE: /usr/local/tomcat
- Using CATALINA_HOME: /usr/local/tomcat
- Using CATALINA_TMPDIR: /usr/local/tomcat/temp
- Using JRE_HOME: /usr/local/jdk1.8.0_211/jre
- Using CLASSPATH: /usr/local/tomcat/bin/Bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
- Tomcat started.
- [[email protected] /]# netstat -anput | grep 8080 # 查看端口是否正常监听
- tcp6 0 0 :::8080 :::* LISTEN 3712/java
可以使用客户端访问 Tomcat 服务器 IP+8080 端口, 可以看到以下页面:
二, 定义 Tomcat 多实例
所谓多实例, 就是在一台服务器上运行多个 Tomcat 服务, 所以, 需要注意, 在定义 Tomcat 的多实例时, 千万不要出现端口冲突的情况
- [[email protected] local]# cp -r tomcat tomcat2 # 将 Tomcat 复制一份
- [[email protected] local]# VIM tomcat2/conf/server.xml # 编辑复制的 Tomcat 主配置文件
- # 配置文件的所有端口号, 除了带注释的外, 都需要修改,
- # 只要配置项中带有 "port" 的, 并且后面是数字的, 都是端口号
- # 可自行根据情况进行更改
- [[email protected] local]# /usr/local/tomcat2/bin/startup.sh # 启动复制版 Tomcat
- Using CATALINA_BASE: /usr/local/tomcat2
- Using CATALINA_HOME: /usr/local/tomcat2
- Using CATALINA_TMPDIR: /usr/local/tomcat2/temp
- Using JRE_HOME: /usr/local/jdk1.8.0_211/jre
- Using CLASSPATH: /usr/local/tomcat2/bin/Bootstrap.jar:/usr/local/tomcat2/bin/tomcat-juli.jar
- Tomcat started.
- [[email protected] local]# netstat -anput | grep 8081 # 看到已经开始监听
- tcp6 0 0 :::8081 :::* LISTEN 3936/java
可以使用客户端访问 Tomcat 服务器 IP+8081 端口, 可以看到以下页面 (由于是完全复制之前的 Tomcat 目录, 所以看到的页面一样):
三, 配置 Tomcat 自定义目录
- [[email protected] /]# mkdir -p /data/project # 创建自定义网站根目录
- [[email protected] /]# echo aaa> /data/project/index1.jsp # 编辑两个测试网页
- [[email protected] /]# echo bbb> /data/project/index2.jsp
- [[email protected] /]# VIM /usr/local/tomcat/conf/server.xml # 编辑主配置文件
- ......................... // 省略部分内容
- <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
- .................. # 找到 Host 元素, 添加如下内容
- <Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
- </Context>
- </Host>
- # 上述的 <Context....> </Context > 标签的另一种写法就是 < Context......./>
- # 在上述添加的配置解释如下:
- #Path: 指出客户端访问的路径;
- #docBase: 指定网页的存放路径;
- #Debug: 指定 debug 的等级为 0, 输出信息最少, 9 提供最多的信息;
- #reloadable: 为 true 时表示当 Web.xml 文件有改动的时候自动加载, 不必重启服务;
- #CorssContext: 为 true 时, 表示不同的 context 共享一个 session(会话池);
- [[email protected] /]# /usr/local/tomcat/bin/shutdown.sh # 执行此两条命令, 重启服务使配置生效
- [[email protected] /]# /usr/local/tomcat/bin/startup.sh
访问 https://192.168.171.134:8080/shop/index1.jsp 验证
访问 https://192.168.171.134:8080/shop/index2.jsp 验证
四, 开启 Tomcat 目录遍历
在 apache 或 Nginx 中, 它们的目录遍历是默认开启的, 而 Tomcat 服务, 它的目录遍历默认是关闭的, 有些情况下, 我们需要开启它的目录遍历功能
直接访问 192.168.171.134:8080/shop / 进行测试, 会报错 404:
开启 tomcat 的遍历功能:
- [[email protected] /]# VIM /usr/local/tomcat/conf/Web.xml
- ................... // 省略部分内容
- <init-param>
- <param-name>listings</param-name>
- <param-value>true</param-value> # 搜索 false, 找到此行, false 修改为 true 即可
- </init-param>
- [[email protected] /]# /usr/local/tomcat/bin/shutdown.sh # 重启 tomcat 使配置生效
- [[email protected] /]# /usr/local/tomcat/bin/startup.sh
重新访问 192.168.171.134:8080/shop/ 进行测试:
五, Tomcat 配置 https
- [[email protected] /]# keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.eystore -validity 36500 # 获取证书
- Enter keystore password: # 填写密钥
- Re-enter new password:
- What is your first and last name? # 你的姓和名是什么?
- [Unknown]: zyz
- What is the name of your organizational unit? # 你组织单位名称是什么?
- [Unknown]: hh
- What is the name of your organization? # 您的组织名称是什么?
- [Unknown]: test
- What is the name of your City or Locality? # 你的城市或地区的名字是什么?
- [Unknown]: bj
- What is the name of your State or Province? # 你的州或省的名字是什么?
- [Unknown]: bj
- What is the two-letter country code for this unit? # 这个单位的国家代号是什么?
- [Unknown]: cn
- Is CN=zyz, OU=, O=test, L=bj, ST=bj, C=cn correct? # 是否确定?
- [no]: y
- Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 36,50 days
- for: CN=zyz, OU=, O=test, L=bj, ST=bj, C=cn
- Enter key password for <tomcat>
- (RETURN if same as keystore password): # 直接回车即可
- [Storing /usr/local/tomcat/conf/tomcat.keystore]
- [[email protected] /]# VIM /usr/local/tomcat/conf/server.xml
- ................ // 省略部分内容
- # 在 service 元素中添加如下内容
- <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
- maxThreads="150" SSLEnabled="true"
- keystoreFile="/usr/local/tomcat/conf/tomcat.keystore" # 指定文件存放位置
- keystorePass="123.com"> # 指定密钥
- </Connector>
- [[email protected] /]# /usr/local/tomcat/bin/shutdown.sh # 重启服务使配置生效
- [[email protected] /]# /usr/local/tomcat/bin/startup.sh
- [[email protected] /]# netstat -anput | grep 443 # 查看端口是否监听
- tcp6 0 0 :::443 :::* LISTEN 4795/java
访问 https://192.168.171.134 进行验证:
六, 使用 Tomcat 实时监控 JVM 虚拟机资源使用情况
- [[email protected] /]# VIM /usr/local/tomcat/conf/server.xml
- <Host name="localhost" appBase="webapps"
- unpackWARs="true" autoDeploy="true">
- <Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
- # zai host 元素中添加如下内容
- </Context> <Context path = "/jiankong" docBase="/data/jiankong" debug="0" reloadable="flase" crossContext="true"/>
- </Host>
- [[email protected] /]# mkdir -p /data/jiankong # 创建测试网站根目录
- [[email protected] /]# VIM /data/jiankong/index.jsp # 编辑测试文件
- <%
- Runtime rtm = Runtime.getRuntime();
- long mm = rtm.maxMemory()/1024/1024;
- long tm = rtm.totalMemory()/1024/1024;
- long fm = rtm.freeMemory()/1024/1024;
- out.println("JVM memory detail info :<br>");
- out.println("Max memory:"+mm+"MB"+"<br>");
- out.println("Total memory:"+tm+"MB"+"<br>");
- out.println("Free memory:"+fm+"MB"+"<br>");
- out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
- %>
- [[email protected] /]# /usr/local/tomcat/bin/shutdown.sh # 重启服务使配置生效
- [[email protected] /]# /usr/local/tomcat/bin/startup.sh
访问 http://192.168.171.134:8080/jiankong/ 验证:
七, 开启 JMX 远程调试功能
- [[email protected] /]# VIM /usr/local/tomcat/bin/catalina.sh # 编辑此文件, 跳转到 306 行
- export JDK_JAVA_OPTIONS # 在此行下面添加如下内容
- CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
- [[email protected] /]# cd /usr/local/jdk1.8.0_211/jre/lib/management/
- [[email protected] management]# cp jmxremote.password.template jmxremote.password
- [[email protected] management]# VIM jmxremote.password
- # 跳转到最后一行添加如下内容
- zyz 123.com
- # 由于是只读文件, 所以需要 wq! 强制保存退出
- [[email protected] management]# VIM jmxremote.access
- # 在最后一行添加如下内容
- zyz readwrite create javax.management.monitor.*,javax.management.timer.* unregister
- [[email protected] management]# chmod 600 jmxremote.password jmxremote.access #必须修改其权限为 600, 否则会失败
- [[email protected] management]# /usr/local/tomcat/bin/shutdown.sh # 重启服务使配置生效
- [[email protected] management]# /usr/local/tomcat/bin/startup.sh
- [[email protected] /]# . /etc/profile # 执行刷新变量
- [[email protected] /]# jconsole # 执行此命令
验证其远程调试功能, 由于其需要图形化的支持, 所以需要进入其图形化桌面环境, 下面的操作不可以在 xshell 上进行了:
然后点击如下:
然后就可以看到如下界面, 显示 JVM 虚拟机的使用情况:
八, 开启 mangent 管理页面
1, 在访问 Tomcat 的默认界面时, 有一个 "Manager App" 的框, 如下:
2, 点击进入后, 会看到以下 403 报错页面, 我们需要复制它提示的代码:
此错误页面, 已经将原因及该如何配置写的明明白白的.
3, 配置开启它的 manager 管理页面:
- [[email protected] /]# VIM /usr/local/tomcat/conf/tomcat-users.xml
- # 在末尾添加如下两行
- <role rolename="manager-gui"/>
- <user username="tomcat" password="s3cret" roles="manager-gui"/>
- </tomcat-users> # 此行是结尾不必写
- [[email protected] /]# VIM /usr/local/tomcat/webapps/manager/META-INF/context.xml
- <Context antiResourceLocking="false" privileged="true">
- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
- allow="192.168.171.134|192.168.171.1|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
- #在上面 "allow=" 后添加允许访问的 IP, 以管道符 "|" 为分割
- <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
- </Context>
- [[email protected] /]# /usr/local/tomcat/bin/shutdown.sh
- [[email protected] /]# /usr/local/tomcat/bin/startup.sh
客户端验证:
重新点击, 即可提示输入密码:
4, 下拉页面, 可以通过 war 包添加自定义的目录:
准备 war 包
- [[email protected] test]# cat index.jsp
- test
- test
- test
- test
- test
- test
- ...................
- [[email protected] test]# jar -cvf test.war index.jsp
- added manifest
- adding: index.jsp(in = 80) (out= 10)(deflated 87%)
在 Web 图形界面, 添加 war 包:
客户端可以访问 TomcatIP+8080 端口 +/test 进行访问测试, 其内容就是我们做的 war 包中的内容, 如下:
九, 开启 host-mangent 管理页面
- [[email protected] /]# VIM /usr/local/tomcat/conf/tomcat-users.xml
- .......... // 在末尾处添加如下两行
- <role rolename="admin-gui"/>
- <user username="zyz" password="123.com" roles="admin-gui"/>
- </tomcat-users>
- [[email protected] /]# VIM /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
- <Context antiResourceLocking="false" privileged="true">
- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
- allow="192.168.171.134|192.168.171.1|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
在 allow 后添加允许的 IP, 以 "|" 分隔开
- <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"
- />
- </Context>
客户端验证:
十, Tomcat 的运行日志切割
cronolog 是一个第三方的日志切割工具, 比较方便快捷, 是日志切割的一大利器. 这里就使用这个第三方工具.
- [[email protected] tomcat]# tar zxf cronolog-1.6.2.tar.gz # 解包
- [[email protected] tomcat]# cd cronolog-1.6.2/
- [[email protected] cronolog-1.6.2]# ./configure && make && make install # 编译并安装
- [[email protected] cronolog-1.6.2]# which cronolog # 确保可以查到 cronolog 这个命令
- /usr/local/sbin/cronolog
- [[email protected] cronolog-1.6.2]# VIM /usr/local/tomcat/bin/catalina.sh # 编辑此文件
搜索 touch 并注释掉:# touch "$CATALINA_OUT"
跳转到 470 行左右修改
org.apache.catalina.startup.Bootstrap "[email protected]" start 2>&1 | /usr/local/sbin/cronolog /usr/local/tomcat/logs/test.%Y-%m-%d.out>> /dev/null &
注释掉:#>> "$CATALINA_OUT" 2>&1 "&"
- [[email protected] cronolog-1.6.2]# /usr/local/tomcat/bin/shutdown.sh # 重启验证
- [[email protected] cronolog-1.6.2]# /usr/local/tomcat/bin/startup.sh
- [[email protected] logs]# ls # 确保有 test.2020-01-12.out
- catalina.2020-01-12.log localhost.2020-01-12.log test.2020-01-12.out
- catalina.out localhost_access_log.2020-01-12.txt
- host-manager.2020-01-12.log manager.2020-01-12.log
十一, 定义 Tomcat 404 错误返回的页面
默认情况, 客户端访问 Tomcat 服务器上一个不存在的目录时, 会提示 404 错误, 而且会将我们 Tomcat 的版本信息等显示出来, 这是我们比较忌讳的, 默认的 404 返回的错误页面如下:
解决办法就是, 将 404 状态码进行重定向, 以便我们自定义返回的页面信息, 如下:
- [[email protected] logs]# cat /usr/local/tomcat/webapps/ROOT/error.jsp
- Access Error...
- [[email protected] logs]# VIM /usr/local/tomcat/conf/Web.xml
- version="3.1"> # 在 22 行附近添加如下内容
- <error-page>
- <error-code>404</error-code>
- <location>/error.jsp</location>
- </error-page>
- [[email protected] /]# /usr/local/tomcat/bin/shutdown.sh # 重启验证
- [[email protected] /]# /usr/local/tomcat/bin/startup.sh
再次访问一个不存在的页面进行验证:
十二, Tomcat 的内存优化
- [[email protected] ~]# VIM /usr/local/tomcat/bin/catalina.sh #编辑此文件
- #!/bin/sh #在第一行下面添加以下内容
- JAVA_OPTS="-Dfile.encoding=UTF-8
- -server
- -Xms1023M
- -Xmx1024M
- -XX:NewSize=512M
- -XX:MaxNewSize=1020M
- -XX:NewRatio=2
- -XX:ParallelGCThreads=15
- -XX:+DisableExplicitGC"
- # 添加完成后, 保存退出后, 重启 Tomcat 后, 即可生效,
- # 可以通过之前的实时监控 JVM 虚拟机资源使用进行查看验证
- # 若是在 Tomcat 8.0 之前的版本, 还可以在上面添加以下两个配置项, 8.0 以后的版本就被移除了:
- #-XX:PermSize=256M
- #-XX:MaxPermSize=356M
添加的各个配置项解释如下:
-Xms: 表示 JVM 初始内存大小, 也可以说是 Java 初始化堆的大小,-Xms 与 - Xmx 设成一样的值, 避免 JVM 反复重新申请内存, 导致性能大起大落, 默认值为物理内存的 1/64
-Xmx: 表示最大 Java 堆大小, 当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出, 并且导致应用服务崩溃, 因此一般建议堆的最大值设置为可用内存的最大值的 80%.
-Xmn: 设置 JVM 最小内存 (128-256 就够了, 一般不设置)
-XX:NewSize: 设置新生代内存大小. 新生代, 对象新创建的时候分配的内存空间, 老生代在垃圾回收器回收过后该对象依然没有被回收, 该对象就会移动到老生代
-XX:PermSize: 设置持久代内存大小, 用于存放静态文件, 如今 Java 类, 方法等. 持久代对垃圾回收没有显著影响, 但是有些应
用可能动态生成或者调用一些 class, 持久带也称为方法区, 方法区存储每一个 java 类的结构信息: 比如运行时常量池, 字段和方法数据, 构造函数和普通方法的字节码内容以及类, 实例, 接口初始化时需要使用到的特殊方法等数据, JDK8 中已经把持久代 (PermGen Space) 干掉了, 取而代之的元空间 (Metaspace).Metaspace 占用的是本地内存, 不再占用虚拟机内存.
-XX:MaxPermSize: 设置最大值持久代内存大小, 永久代不属于堆内存, 堆内存只包含新生代和老年代
-XX:NewRatio: 改变新旧空间的比例, 意思是新空间的尺寸是旧空间的 1/8(默认为 8)
-XX:ParallelGCThreads 可用来增加并行度, 需要多 CPU
-XX:+DisableExplicitGC: 关闭 System.gc(), 简单理解就是关闭 java 中的内存回收机制
十三, Tomcat 线程池的优化
- [[email protected] /]# VIM /usr/local/tomcat/conf/server.xml # 编辑 zh 主配置文件
- <Service name="Catalina"> # 在 53 行下面添加如下内容
- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThread="4"/>
- <Connector port="8080" protocol="HTTP/1.1" # 在 69 行下面添加如下内容
- executor="tomcatThreadPool"
上述 Excutor 重要参数说明:
name: 共享线程池的名字, 这是 connector 为了共享线程池要引用的名字, 该名称必须唯一
namePrefix: 在 JVM 上, 每运行线程都可以有一个 name 字符串, 这一属性为线程池中每个线程的 name 字符串设置了一个前缀, Tomcat 将把线程号追加到这一前缀后面, 默认值为 tomcat-exec-
maxThreads: 该线程池可以容纳的最大线程数, 默认 200
minSpareThreads:Tomcat 应该始终打开的最小不活跃线程数, 默认 25
Connector 参数说明
executor: 表示使用参数值对应的线程池.
十四, 修改 Tomcat 服务的请求方式
Tomcat 支持的三种请求方式: BIO,NIO,APR.
BIO: 阻塞式 I/O 操作, Tomcat7 以下版本默认情况下是以 bio 模式运行的, 每个请求都要创建一个线程来处理, 线程开销比较大, 不适用高并发的场景, 性能也最低;
NIO: 基于缓冲区, 能提供非阻塞 I/O 操作, 和传统的 BIO 相比, 具备更好的并发性能
APR(Apache portable run-time libraries): 简单理解, 就是从操作系统级别解决异步 IO 问题, 大幅度的提高服务器的处理和相应性能, 也是 Tomcat 运行高并发的首选模式
APR 提供的主要功能模块包括: 内存分配及内存池, 原子操作, 文件 I/O, 锁, 内存映射, 哈希表, 网络 I/O, 轮询, 进程及线程操作等等, 通过采用 APR,Tomcat 可以获得高度可扩展性以及优越的性能, 并且可以更好的与本地服务器技术集成, 从而可以使 Tomcat 作为一款通用的 Web 服务器使用, 而不仅仅作为轻量级应用服务器. 在这种情况下, Java 将不再是一门侧重于后端的编程语言, 也可以更多的用于成熟的 Web 服务器平台.
1, 更改其请求方式为 NIO(注意: Tomcat8 以上版本, 默认使用的就是 NIO 模式, 不需要额外修改 )
- [[email protected] /]# VIM /usr/local/tomcat/conf/server.xml # 编辑 zh 主配置文件
- <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" # 修改为 nio
- executor="tomcatThreadPool"
- connectionTimeout="20000"
- redirectPort="8443" />
重启后, 查看其 "catalina.out" 日志, 有以下字样, 则表示是在 nio 接收请求处理方式, 如下 (我这里在上面对 catalina.out 进行了日志切割, 所以需要查看切割后的日志文件):
2, 更改其请求方式为 APR 模式
启用这种模式稍微麻烦一些, 需要安装一些依赖库, 下面是基于 CentOS 7.3 环境的 Tomcat/8.5.35 进行配置.
安装 apr 动态库:
- [[email protected] /]# yum -y install apr-devel openssl-devel gcc make
- [[email protected] /]# cd /usr/local/tomcat/bin/
- [[email protected] bin]# tar zxf tomcat-native.tar.gz
- [[email protected] bin]# cd tomcat-native-1.2.18-src/native/
- [[email protected] native]# ./configure && make && make install
- # 编译安装完成后, apr 动态库默认安装在 / usr/local/apr/lib 目录下.
配置 APR 本地库到系统共享库搜索路径中:
设置 LD_LIBRARY_PATH 和 LD_RUN_PATH 环境变量, 指向 / usr/local/apr/lib 目录, 可配置到 / etc/profile 文件中. 如下:
- [[email protected] native]# VIM /etc/profile #编辑全局变量, 在文件末尾写入以下两行
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
- export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
- [[email protected] native]# . /etc/profile #重新加载环境变量
- # 重启验证
- [[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
- [[email protected] ~]# /usr/local/tomcat/bin/startup.sh
- [[email protected] native]# VIM /usr/local/tomcat/conf/server.xml
- <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" # xiugai 修改为 apr
- executor="tomcatThreadPool"
- connectionTimeout="20000"
- redirectPort="8443" />
来源: http://www.bubuko.com/infodetail-3377841.html