如何部署Oracle Linux 10.x TomCat 10?

Tomcat

1 前言

一个问题,一篇文章,一出故事。
笔者今天需要基于Oracle Linux 10.x安装部署TomCat 10,于是整理当前章节。

2 最佳实践

2.1 安装环境

2.1.1 系统信息

OS = Oracle Linux 10.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 配置JDK环境

java -version

本章需要的java显示版本信息如下,

openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

如果尚未安装,请参阅如下章节安装本章所需的Java,

如何部署openJDK?

2.2 部署TomCat 10

2.2.1 下载安装包

cd ~
wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.54/bin/apache-tomcat-10.1.54.tar.gz

2.2.2 配置运行用户

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

2.2.3 部署tomcat目录

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

2.2.5 配置安装目录

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

2.3 配置Tomcat10

2.3.1 配置环境变量

cat > /usr/tomcat/apache-tomcat-10.1.54/bin/setenv.sh << EOF
JAVA_HOME='/usr/java/jdk-17.0.2'
CATALINA_PID='/usr/tomcat/apache-tomcat-10.1.54/temp/tomcat.pid'
CATALINA_HOME=/usr/tomcat/apache-tomcat-10.1.54
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.2 手动测试服务启停

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

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

pgrep -u tomcat java -a

可见如下显示,

30425 /usr/java/jdk-17.0.2/bin/java -Djava.util.logging.config.file=/usr/tomcat/apache-tomcat-10.1.54/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 -Dsun.io.useCanonCaches=false -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -classpath /usr/tomcat/apache-tomcat-10.1.54/bin/bootstrap.jar:/usr/tomcat/apache-tomcat-10.1.54/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat/apache-tomcat-10.1.54 -Dcatalina.home=/usr/tomcat/apache-tomcat-10.1.54 -Djava.io.tmpdir=/usr/tomcat/apache-tomcat-10.1.54/temp org.apache.catalina.startup.Bootstrap start

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

ss -antp | grep -f <(pgrep -u tomcat java)

可见如下显示,

LISTEN 0      1      [::ffff:127.0.0.1]:8005            *:*     users:(("java",pid=30425,fd=52))                                       
LISTEN 0      100                     *:8080            *:*     users:(("java",pid=30425,fd=43))  

根据上面的而端口需求,我们可以使用如下命令开放服务端口,

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

2.3.3 配置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-17.0.2"
Environment="CATALINA_PID=/usr/tomcat/apache-tomcat-10.1.54/temp/tomcat.pid"
Environment="CATALINA_HOME=/usr/tomcat/apache-tomcat-10.1.54"
Environment="CATALINA_BASE=/usr/tomcat/apache-tomcat-10.1.54"
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.1.54/bin/startup.sh
ExecStop=/usr/tomcat/apache-tomcat-10.1.54/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

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

systemctl daemon-reload

你可使用如下命令启动服务并设置服务自启动,

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

2.3.4 浏览器测试

http://10.168.0.157:8080/
可见如下显示,

2.4 其他推荐配置

2.4.1 配置Tomcat管理页面

如何配置Tomcat管理页面?

2.4.2 配置Tomcat的日志轮转

如何配置Tomcat的日志轮转?

2.4.3 修改Tomcat上传最大文件大小

如何修改Tomcat上传最大文件大小?

2.4.4 修改Tomcat UMask

如何修改Tomcat UMask?

2.4.5 内存溢出自动生成Heap Dump

如何使Tomcat内存溢出自动生成Heap Dump?

2.4.6 修复Tomcat antiJARLocking true警告

如何修复Tomcat antiJARLocking true警告?

2.4.7 调整Tomcat的cacheMaxSize

如何调整Tomcat的cacheMaxSize?

参阅文档
================

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

没有评论

发表回复

Tomcat
如何使Tomcat内存溢出自动生成Heap Dump?

1 前言 一个问题,一篇文章,一出故事。 笔者今天遇到Tomcat服务提示“java.lang.Ou …

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

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

Tomcat
如何用JSSE配置Tomcat 9 HTTPS?

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