如何基于RHEL 9.x部署TomCat之二?

Tomcat

1 前言

一个问题,一篇文章,一出故事。
笔者最近需要在生产环境安装部署Tomcat,于是重新整理Tomcat的部署方法。
本次部署把以往使用“daemon.sh”脚本控制服务的方法改为使用“startup.sh”与“shutdown.sh”脚本控制服务的方法,优点在于新的方式可以省略编译。
另外,如果你对之前的部署方法有兴趣,请参阅如下章节,

如何基于RHEL 9.x部署TomCat?

如何基于RHEL 6.x部署TomCat?

2 实操部分

2.1 系统环境

2.1.1 系统信息

OS = RHEL 9.x x86_64
IP Address = 10.168.0.157
Host Name = any.cmdschool.org

2.1.2 关闭SELinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.1.3 配置防火墙

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all

2.2 软件配置

2.2.1 安装JDK

请参阅以下文章安装JDK,

如何部署openJDK?


注:本章测试使用的安装包是“openjdk-18.0.1.1_linux-x64_bin.tar.gz”

2.2.2 下载安装包

cd ~
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz

2.2.3 配置运行用户

groupadd  -g 91 tomcat
useradd -u 91 -g 91 -d /usr/tomcat  -s /sbin/nologin tomcat

2.2.4 部署tomcat目录

mkdir /usr/tomcat
chown root:tomcat -R /usr/tomcat
chmod 770 -R /usr/tomcat/

2.2.5 配置安装目录

cd ~
tar -xf apache-tomcat-10.0.27.tar.gz
mv apache-tomcat-10.0.27 /usr/tomcat/
chown root:tomcat -R /usr/tomcat
chmod 770 -R /usr/tomcat/
ln -s /usr/tomcat/apache-tomcat-10.0.27/logs/ /var/log/tomcat

2.3 配置Tomcat

2.3.1 配置环境变量

cat > /usr/tomcat/apache-tomcat-10.0.27/bin/setenv.sh << EOF
JAVA_HOME='/usr/java/jdk-18.0.1.1'
CATALINA_PID='/usr/tomcat/apache-tomcat-10.0.27/temp/tomcat.pid'
CATALINA_HOME=/usr/tomcat/apache-tomcat-10.0.27
CATALINA_BASE=\${CATALINA_HOME}
JAVA_OPTS='-Xms2048M -Xmx4096M -Xss512k -server -XX:+UseParallelGC'
JAVA_OPTS='-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
TOMCAT_USER=tomcat
EOF

2.3.1 手动测试服务启停

sudo -u tomcat /usr/tomcat/apache-tomcat-10.0.27/bin/startup.sh
sudo -u tomcat /usr/tomcat/apache-tomcat-10.0.27/bin/shutdown.sh

然后,你可以使用如下命令查看启动的进程,

pgrep -u tomcat java -a

可见如下显示,

11710 /usr/java/jdk-18.0.1.1/bin/java -Djava.util.logging.config.file=/usr/tomcat/apache-tomcat-10.0.27/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/tomcat/apache-tomcat-10.0.27/bin/bootstrap.jar:/usr/tomcat/apache-tomcat-10.0.27/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat/apache-tomcat-10.0.27 -Dcatalina.home=/usr/tomcat/apache-tomcat-10.0.27 -Djava.io.tmpdir=/usr/tomcat/apache-tomcat-10.0.27/temp org.apache.catalina.startup.Bootstrap start

然后,你可以使用如下命令查看运行的端口,

netstat -antp | grep `pgrep -u tomcat java`

可见如下显示,

tcp6       0      0 :::8080                 :::*                    LISTEN      11710/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      11710/java

2.3.2 配置tomcat服务

cat > /usr/lib/systemd/system/tomcat.service << EOF
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment="JAVA_HOME=/usr/java/jdk-18.0.1.1"
Environment="CATALINA_PID=/usr/tomcat/apache-tomcat-10.0.27/temp/tomcat.pid"
Environment="CATALINA_HOME=/usr/tomcat/apache-tomcat-10.0.27"
Environment="CATALINA_BASE=/usr/tomcat/apache-tomcat-10.0.27"
Environment="CATALINA_OPTS=-Xms2048M -Xmx4096M -Xss512k -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"

ExecStart=/usr/tomcat/apache-tomcat-10.0.27/bin/startup.sh
ExecStop=/usr/tomcat/apache-tomcat-10.0.27/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target
EOF

修改完脚本后,你需要使用如下命令重载服务,

systemctl daemon-reload

你可使用如下命令控制服务和查询状态,

systemctl start tomcat.service
systemctl status tomcat.service
systemctl stop tomcat.service
systemctl restart tomcat.service

测试完毕,建议你使用如下命令设置服务自动启动,

systemctl enable tomcat.service

2.3.3 浏览器测试

http://10.168.0.157:8080/

参阅文档:
=============================
http://blog.csdn.net/bebabyron/article/details/11852317
http://www.liaoshixiong.cn/java/centos7-tomcat-daemon.html
http://www.xuebuyuan.com/1361441.html
http://blog.csdn.net/centre10/article/details/50639693

没有评论

发表回复

Tomcat
如何配置Tomcat的日志轮转?

1 前言 一个问题,一篇文章,一出故事。 笔者之前为Tomcat日志自动分割写过一个脚本,最近发现如 …

Tomcat
如何用JSSE配置Tomcat 9 HTTPS?

1 前言 一个问题,一篇文章,一出故事。 笔者需要在Tomcat生产环境启用Tomcat的HTTPS …

Tomcat
如何用OpenSSL SSL/TLS配置Tomcat 9 HTTPS?

1 前言 一个问题,一篇文章,一出故事。 笔者需要在Tomcat生产环境启用Tomcat的HTTPS …