Young Kbt blog Young Kbt blog
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)

Shp Liu

朝圣的使徒,正在走向编程的至高殿堂!
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)
  • tbeam

  • 报修系统

    • 报修系统 - 详解
    • 报修系统 - 部署
    • 报修系统 - Tomcat问题
      • 前言
      • 安装
      • 配置
        • server.xml
        • logging.properties
      • 后台启动
        • 修改setclasspath.bat文件
        • 配置Windows服务
        • 总结
      • 问题
  • yonyou

  • 项目工程
  • 报修系统
Young Kbt
2021-12-30
目录

报修系统 - Tomcat问题项目

笔记

记录 Tomcat 升级遇到的问题。

2021-12-30 @Young Kbt

  • 前言
  • 安装
  • 配置
    • server.xml
    • logging.properties
  • 后台启动
    • 修改setclasspath.bat文件
    • 配置Windows服务
    • 总结
  • 问题

# 前言

因为项目的一期验收,漏洞扫描发现 Tocmat 的漏洞比较多,所以目前打算升级 Tomcat 来解决一些自带的漏洞。

Tomcat 是 9.0 版本,已经用了一年半,现在升级到 Tomcat 9.0.56 版本,是目前 9.X 的最新版。

如果本内容步骤遇到了问题,请看最下面的 问题,记录了我遇到的问题。

# 安装

安装不细说了,直接下载解压即可使用,值得一提的是,我们需要的 Tomcat 是 64-bit Windows.zip 的,而不是 .zip 的。

image-20211230153317992

这两个有什么区别呢,64-bit Windows.zip 有需要的一些 .bat 文件如后台启动,而 .zip 没有。

# 配置

我们需要进行一些项目需要的配置,首先进入 Tomcat 安装目录下的 conf 目录,这个目录就是 Tomcat 全局的的配置目录。

# server.xml

打开 server.xml,大概在 69 行,将 8080 端口改为 80。因为项目是直接通过域名访问,80 是默认端口。

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           acceptCount="1500" 
           maxThreads="1600"
           minSpareThreads="500"
           maxHttpHeaderSize ="102400"  />
1
2
3
4
5
6
7

image-20211230153641040

往下找,大概在 119 行处,添加如下内容:

<Connector protocol="AJP/1.3"
           address="::1"
           port="8009"
           redirectPort="8443" 
           secretRequired="" />
1
2
3
4
5

image-20211230153736431

往下继续,大概在 154 行代码,添加如下内容:(有些 Tomcat 已经自带)

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

image-20211230154040367

name 是 IP 地址。

autoDeploy 为 true 就是启动 Tomcat 后,将新的 war 包放在 webapps 目录下,就会自动编译出文件夹,自动部署。

appBase 是指定监听的目录,一旦这个目录发生变化(添加 WAR 包等),就会自动部署,不需要重新启动 Tomcat。

unpackWARs 为 true,则 Tomcat 会自动将 WAR 文件解压,否则不解压,直接从 WAR 文件中运行应用程序。

# logging.properties

这个文件修改日志文件的生成路径等信息。

大概在 25 行,覆盖如下内容:

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = E:/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 15

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = E:/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 15

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = E:/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 15

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = E:/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 15

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

日志放在 E:/logs 目录下,日志保存 15 天后被清除,以及日志语言格式根据服务器环境一样。避免乱码。

# 后台启动

前台启动,只需要启动 bin 目录下的 startup.bat 即可,但是这样会出现一个窗口,不小心关闭了就会停止运行,所以我们需要设置后台启动。

后台启动有两种方式:

  • 修改 setclasspath.bat 文件
  • 配置 Windows 服务

第一种方式其实是隐藏了 startup.bat 的窗口,拥有 startup.bat 窗口的功能,即触发上面 server.xml 配置的 Host,实现自动编译,自动部署。

第二种能设置开机自启,完全处于后台启动,缺点是不能触发上面 server.xml 配置的 Host,无法实现自动编译,自动部署。

我试过了两种,后来使用了第一种方式,因为我目前还要开发新功能,每次开发一个功能要部署一次,所以为了方便,让其自动编译,自动部署。第二种适用于项目已经完全开发,不需要频繁部署新的 WAR 包。

# 修改setclasspath.bat文件

非常简单,进入 Tomcat 安装目录下的 bin 目录,右键以记事本打开(不能双击),在 79 行左右,将 set _RUNJAVA="%JRE_HOME%\bin\java.exe" 改为 set _RUNJAVA="%JRE_HOME%\bin\javaw.exe",利用 jdk 的另一种启动方式 javaw.exe 代替 java.exe,实现自动编译,自动部署。

image-20211230155926719

rem 是注释的意思,把原来的注释掉,或者删除。

然后双击启动同目录下的 startup.bat 文件,此时你会发现窗口一闪而过,此时它会进入后台运行,等待半分钟左右,就可以看到效果了。

如果没有效果,那么就是 Tomcat 无法找到 jdk,需要进行环境变量配置。

如果想停止运行,就双击启动 shutdown.bat 文件。

# 配置Windows服务

打开 CMD ,进入 Tomcat 安装目录的 bin 目录下,执行如下命令:

service.bat install
1

就会安装 Tomcat 服务,然后进入 Windows 的服务,看到如下内容代表生成服务成功:

image-20211230160119117

右键点击属性,然后修改启动类型为自动,这样就会 开机自启,然后启动该服务即可,此时 Tomcat 就会内部悄悄启动,只需要静等待半分钟,就可以了,不需要去运行 startup.bat 文件。

附带删除 Tomcat 服务命令,进入 bin 目录,执行如下命令即可删除 Tomcat 服务:

service.bat remove
1

# 总结

修改 setclasspath.bat 文件其实是启动 startup.bat 时,隐藏窗口,适合不断部署新 WAR 包的环境。

配置 Windows 服务是融入 Windows 服务里,交给 Windows 来启动,适合开发完项目,不频繁部署 WAR 包的环境。

# 问题

java.security.InvalidKeyException: Illegal key size

这是无法访问手机端的原因。

如果密钥大于 128, 会抛出 java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的,这是美国对软件出口的一种控制,只允许密钥低于 128 才能运行。它是检测两个 jar 包来进行控制。

如果你的项目用到密钥大于 128,则需要去下载不受限制的密钥 jar 包。

jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR (opens new window)

jdk6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html (opens new window)

JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html (opens new window)

JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html (opens new window)

需要登录 Oracle 用户,没有请邮箱注册。

下载后解压,可以看到 local_policy.jar 和 US_export_policy.jar 以及 readme.txt。

image-20211230161626455

如果安装了 JRE,将两个 jar 文件放到 %JRE_HOME%\lib\security 目录下覆盖原来的文件。

如果安装了 JDK,还要将两个 jar 文件也放到 %JDK_HOME%\jre\lib\security 目录下覆盖原来文件。

如果两个都安装了,则两个都要覆盖。

  • %JDK_HOME% 是 jdk 的根目录。

  • %JRE_HOME% 是 jre 的根目录,一般在 jdk 的 bin 目录下。

覆盖后,重新启动 Tomcat 就可以了。

配置 JDK 环境变量

前台启动时,双击打开 startup.bat 后,CMD 窗口一闪而过,就是因为没有配置 JDK 环境变量,JDK 的环境变量名字必须叫做 JAVA_HOME。

编辑此页 (opens new window)
更新时间: 2023/10/23, 10:58:52
报修系统 - 部署
YonYou - 节点配置

← 报修系统 - 部署 YonYou - 节点配置→

最近更新
01
技术随笔 - Element Plus 修改包名 原创
11-02
02
Reactor - 扩展性
11-02
03
Reactor - 最佳实践
11-02
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Young Kbt | blog
桂ICP备2021009994号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式