Rocky8.5安装tomcat9(jdk使用jdk17版)

Posted gsls200808

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rocky8.5安装tomcat9(jdk使用jdk17版)相关的知识,希望对你有一定的参考价值。

安装和之前的类似,注意几个细节即可,jre目录需要手动生成,tomcat9不支持8以上的高版本jre,只支持高版本jdk。指定环境变量时需要注意。

1.安装jdk17

使用下面的命令下载安装

如果是安装8u202以上,11版本,因版权问题,建议使用openjdk,redhat编译版jdk

#先下载jdk17这里是jdk-17_linux-x64_bin.tar.gz

cp jdk-17_linux-x64_bin.tar.gz /usr/local/
cd /usr/local/
tar -zxvf jdk-17_linux-x64_bin.tar.gz
rm jdk-17_linux-x64_bin.tar.gz

默认jdk17没有jre目录,我们需要生成jre目录

cd /usr/local/jdk-17.0.6/bin
./jlink --module-path jmods --add-modules java.desktop --output ../jre

若jre要支持tomcat启动,打包模块要比上面的这个多

./jlink --module-path jmods --add-modules java.desktop,java.logging,java.management,java.naming,java.rmi,java.sql,java.security.jgss,java.instrument --output ../jre

如果还提示类找不到,一般是缺少模块,可通过jshell命令查找所属模块

jshell
Module module = java.util.logging.Logger.class.getModule();
#Module module = org.ietf.jgss.GSSException.class.getModule();
String moduleName = module.getName();
System.out.println(moduleName);
/exit

生成的jre目录与bin目录同级

设置环境变量

编辑 /etc/profile,在最后添加

JAVA_HOME=/usr/local/jdk-17.0.6
JRE_HOME=/usr/local/jdk-17.0.6/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar:$JRE_HOME/lib

最后执行下面这个命令,使环境变量生效

source /etc/profile

验证

java -version
javac -version

2.安装tomcat9

这里安装tomcat9.0.71

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz
cp apache-tomcat-9.0.71.tar.gz /usr/local/
cd /usr/local/
tar -zxvf apache-tomcat-9.0.71.tar.gz
rm apache-tomcat-9.0.71.tar.gz
mv apache-tomcat-9.0.71 tomcat

配置systemctl启动服务

cd /usr/lib/systemd/system/
nano tomcat.service

输入如下内容,然后Ctrl+X保存

[Unit]
Description=tomcat
After=network.target mysqld.service
[Service]
Type=oneshot
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

设置开机自启&启动&查看状态

systemctl enable tomcat.service
systemctl start tomcat.service
systemctl status tomcat.service

查看状态发现报错

startup.sh[23725]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

是tomcat的JAVA_HOME或者JRE_HOME环境变量在tomcat里没配置

编辑$TOMCAT_HOME/bin/catalina.sh或者$TOMCAT_HOME/bin/setclasspath.sh 添加JAVA_HOME和JRE_HOME两个环境变量,内容如下,写在第一段大注释后面即可,大约110行的位置。

export JAVA_HOME=/usr/local/jdk-17.0.6
#export JRE_HOME=/usr/local/jdk-17.0.6/jre

注意,tomcat9支持8以上的高版本jre比较繁琐,只支持高版本jdk,所以jdk8以后的版本不要指定jre目录

若指定了模块较少的jre目录,可能会报找不到 java/util/logging/Logger的错误:Exception in thread "main" java.lang.NoClassDefFoundError: java/util/logging/Logger

之后就能正常启动了

systemctl restart tomcat.service
systemctl status tomcat.service

3.tomcat改端口

找到文件$TOMCAT_HOME/conf/server.xml

找到

<Connector port="8080" protocol="HTTP/1.1"

将port后的值改成对应的端口就OK了

这里改成80即

<Connector port="80" protocol="HTTP/1.1"

4.防火墙放行端口

放行80端口为例

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

访问

http://ip/

以上是关于Rocky8.5安装tomcat9(jdk使用jdk17版)的主要内容,如果未能解决你的问题,请参考以下文章

jdk8支持tomcat9吗

Ubuntu16安装jdk8配置Tomcat9

Linux安装Java和tomcat,并添加开机启动服务

Centos7安装jdk1.8和tomcat9

nginx+tomcat9+redisson+redis+jdk1.8简单实现session共享

Centos8安装tomcat9以及常见用法