Tomcat 安装
大约 4 分钟
提示
BasicPaperCloud 已经不需要本地安装 Tomcat。这个文档仅是为了方便查询 Tomcat 的安装步骤。
JDK 环境变量配置
- 在
/usr/local/
目录下创建java
目录,并将JDK解压到此目录下
cd /usr/local
mkdir java
cd java
tar -zxvf /home/jdk-8u311-linux-x64.tar.gz -C /usr/local/java
- 修改
/etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_311
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
- 加载修改后的
profile
source /etc/profile
- 检验是否配置成功
java -version
# 执行后显示类似以下信息则代表成功
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)
Tomcat 安装
- 在
/usr/local/
目录下创建tomcat
目录,并将Tomcat解压到此目录下
cd /usr/local
mkdir tomcat
cd tomcat
tar -zxvf /home/apache-tomcat-9.0.58.tar.gz -C /usr/local/tomcat
- 将 Tomcat 目录重命名为相关模块的名字
推荐命名规则:apache-tomcat-版本号_模块名称_端口号
mv /usr/local/tomcat/apache-tomcat-9.0.58 /usr/local/tomcat/apache-tomcat-9.0.58_BP_8080
设置 Tomcat 内存信息
注意
- 所有模块的内存不建议超过系统内存的 80%。这个 80% 只是一个估计值,具体请根据系统内存大小酌情预留可以用内存,一般预留出 4 ~ 8G 的可用内存即可。
- 如果在业务服务器中存在搜索引擎、数据库、Redis 等模块,那么要预留出更多的可用内存(这种行为非常不推荐,尽量将这些核心服务使用独立服务器部署)。
使用 vim 修改 catalina.sh
文件
vim /usr/local/java/apache-tomcat-9.0.58_BP_8080/bin/catalina.sh
在
catalina.sh
下找到以下代码进行插入配置,-Xms
与-Xmx
设置为相同大小,-Xmn
设置为-Xmx
的 0.375 倍-Xms 堆内存的初始大小,默认为物理内存的1/64
-Xmx 堆内存的最大大小,默认为物理内存的1/4
-Xmn 堆内新生代的大小,通过这个值也可以得到老生代的大小:-Xmx减去-Xmn
# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms4096m -Xmx4096m -Xmn1536m"
线程池配置
使用 vim 修改 server.xml
文件
vim /usr/local/java/apache-tomcat-9.0.58_BP_8080/conf/server.xml
Executor
表示可组件之间 Tomcat 中共享的线程池。每个connector
(连接器)都会创建一个线程池。但是可以通过配置共享一个Executor
。它的位置应该在connector
之前,这样才能生效。
<!--将注释打开-->
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="800" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="400"/>
<!--在Connector中设置executor属性指向上面的执行器-->
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false"/>
属性 | 描述 |
---|---|
className | 实现的类。该实现必须实现 org.apache.catalina.Executor 接口。此接口确保可以通过其 name 属性引用该对象并实现该对象的生命周期,以便可以使用容器启动和停止该对象。className 的默认值为 org.apache.catalina.core.StandardThreadExecutor |
name | 用于在 server.xml 中其他位置引用此池的名称。名称是必需的,并且必须是唯一的。 |
threadPriority | 执行程序中线程的线程优先级,默认值为 5 |
daemon | 线程是否为守护线程,默认为 true |
namePrefix | 线程名前缀。单个线程的线程名称将为 namePrefix + threadNumber |
maxThreads | 线程池中活动线程的最大数量,默认设置 200,一般建议在 500 ~ 1000,根据硬件设施和业务来判断 |
minSpareThreads | 始终保持活动状态的最小线程数(空闲和活动),默认值为 25 |
maxIdleTime | 空闲线程关闭前的毫秒数,除非活动线程数小于或等于 minSpareThreads 。默认值为 60000毫秒 |
prestartminSpareThreads | 程序启动时是否启用 minSpareThreads ,默认值为 false |
maxQueueSize | 最大的等待队列数,超过则拒绝请求。默认值为 Integer.MAX_VALUE |
设置最大缓存值
在 context.xml
中 <Context>
内加入以下配置,由于 spring boot
项目使用模板需要缓存空间,故需要添加以下配置
vim /usr/local/java/apache-tomcat-9.0.58_BP_8080/conf/context.xml
<Resources cachingAllowed="true" cacheMaxSize="102400" />
https配置
配合nginx动态获取https(推荐)
nginx 需要在配置文件中添加 proxy_set_header X-Forwarded-Proto $scheme;
在 server.xml
中 <Host>
标签内加入以下配置,如果 https 访问端口不是 443 需要添加属性 httpsServerPort="端口号"
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" />
强制使用https(不推荐)
在 server.xml
中找到端口配置,在其中添加属性 scheme="https"
<Connector port="8180" protocol="HTTP/1.1" scheme="https" connectionTimeout="20000" redirectPort="8443" />