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,
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管理页面
2.4.2 配置Tomcat的日志轮转
2.4.3 修改Tomcat上传最大文件大小
2.4.4 修改Tomcat UMask
2.4.5 内存溢出自动生成Heap Dump
2.4.6 修复Tomcat antiJARLocking true警告
2.4.7 调整Tomcat的cacheMaxSize
参阅文档
================
没有评论