news 2026/7/24 11:35:25

openEuler系统部署Tomcat 9全流程指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openEuler系统部署Tomcat 9全流程指南

1. 项目概述

最近在 openEuler 24.03 LTS 上部署 Tomcat 9 时踩了不少坑,这里把完整过程记录下来。作为国产操作系统的代表,openEuler 24.03 LTS 版本在稳定性和性能上都有了显著提升,但在软件生态方面与传统 Linux 发行版仍有些差异。本文将详细介绍如何在 openEuler 上从零开始部署 Tomcat 9 应用服务器,包括环境准备、依赖安装、配置优化等全流程。

提示:本文所有操作均在 openEuler 24.03 LTS 最小化安装环境下测试通过,建议使用相同版本以避免兼容性问题。

2. 环境准备与依赖安装

2.1 系统基础配置

首先确保系统是最新状态:

sudo dnf update -y sudo dnf install -y wget tar gzip

openEuler 默认使用 DNF 作为包管理器,与传统 CentOS/RHEL 的 YUM 命令基本兼容。我建议在开始前先检查系统架构:

uname -m

如果是 ARM 架构(aarch64),需要特别注意后续下载的软件包版本。

2.2 Java 环境部署

Tomcat 9 需要 Java 8 或更高版本。openEuler 官方源提供了多个 JDK 选项:

sudo dnf search jdk

推荐安装 OpenJDK 11:

sudo dnf install -y java-11-openjdk-devel

安装后验证:

java -version javac -version

注意:如果系统已有多个 Java 版本,可以通过alternatives --config java切换默认版本。

3. Tomcat 9 安装与配置

3.1 获取 Tomcat 9 安装包

建议从 Apache 官网获取最新稳定版:

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.tar.gz

下载后验证文件完整性:

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.tar.gz.sha512 sha512sum -c apache-tomcat-9.0.76.tar.gz.sha512

3.2 安装与目录结构

解压安装包到 /opt 目录:

sudo tar -xzf apache-tomcat-9.0.76.tar.gz -C /opt sudo ln -s /opt/apache-tomcat-9.0.76 /opt/tomcat

创建专用用户和组:

sudo groupadd tomcat sudo useradd -g tomcat -d /opt/tomcat -s /bin/false tomcat sudo chown -R tomcat:tomcat /opt/tomcat

目录结构说明:

  • bin/: 启动/停止脚本
  • conf/: 配置文件
  • logs/: 日志文件
  • webapps/: 应用部署目录
  • work/: 临时工作目录

3.3 基础配置调整

修改 conf/server.xml 优化连接器配置:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="200" minSpareThreads="10" enableLookups="false" acceptCount="100" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/css,text/javascript,application/javascript"/>

设置管理员账户(conf/tomcat-users.xml):

<role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="admin" password="复杂密码" roles="manager-gui,admin-gui"/>

4. 服务管理与优化

4.1 系统服务集成

创建 systemd 服务文件 /etc/systemd/system/tomcat.service:

[Unit] Description=Apache Tomcat 9 After=syslog.target network.target [Service] Type=forking User=tomcat Group=tomcat Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid" Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk" Environment="CATALINA_HOME=/opt/tomcat" Environment="CATALINA_BASE=/opt/tomcat" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh Restart=on-failure [Install] WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload sudo systemctl enable --now tomcat

4.2 性能优化建议

  1. JVM 参数调整(bin/setenv.sh):
export CATALINA_OPTS="-server -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"
  1. 关闭不需要的 Web 应用:
rm -rf /opt/tomcat/webapps/examples rm -rf /opt/tomcat/webapps/docs
  1. 日志轮转配置(/etc/logrotate.d/tomcat):
/opt/tomcat/logs/catalina.out { daily rotate 30 missingok compress copytruncate dateext }

5. 安全加固措施

5.1 基础安全配置

  1. 禁用管理界面外部访问(conf/Catalina/localhost/manager.xml):
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1|::1|192\.168\.\d+\.\d+" /> </Context>
  1. 隐藏服务器信息(conf/server.xml):
<Connector port="8080" ... server="Unknown" />

并在 webapps/ROOT/WEB-INF/web.xml 添加:

<error-page> <error-code>404</error-code> <location>/404.html</location> </error-page>

5.2 防火墙配置

sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload

如果需要 HTTPS 支持,建议使用 Nginx 反向代理并配置 Let's Encrypt 证书。

6. 常见问题排查

6.1 启动失败排查

  1. 端口冲突:
sudo netstat -tulnp | grep 8080
  1. 权限问题:
sudo chmod -R g+r /opt/tomcat/conf sudo chmod g+x /opt/tomcat/conf
  1. 内存不足: 检查 /opt/tomcat/logs/catalina.out 中的 OutOfMemoryError

6.2 性能问题分析

  1. 线程池耗尽:
tail -f /opt/tomcat/logs/catalina.out | grep "All threads are busy"
  1. 内存泄漏检测:
jstat -gcutil <pid> 1000 10
  1. 连接数监控:
sudo ss -ltnp | grep java

7. 应用部署实践

7.1 手动部署 WAR 包

将应用 WAR 包复制到 webapps 目录:

sudo cp myapp.war /opt/tomcat/webapps/ sudo chown tomcat:tomcat /opt/tomcat/webapps/myapp.war

Tomcat 会自动解压部署,可以通过日志观察进度:

tail -f /opt/tomcat/logs/catalina.out

7.2 使用 Manager App 部署

  1. 确保 conf/tomcat-users.xml 已配置 manager-gui 角色
  2. 访问 http://服务器IP:8080/manager/html
  3. 在 "WAR file to deploy" 部分上传应用

安全提示:生产环境建议禁用 Manager App,或严格限制访问IP

7.3 多实例部署方案

对于需要隔离的环境,可以创建多个实例:

sudo cp -r /opt/tomcat /opt/tomcat-instance2 sudo chown -R tomcat:tomcat /opt/tomcat-instance2

修改 conf/server.xml 中的端口号(8005, 8080, 8009),然后创建新的 systemd 服务文件。

8. 监控与维护

8.1 基础监控配置

  1. 启用 JMX 监控(bin/setenv.sh):
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
  1. 使用 jConsole 连接:
jconsole 服务器IP:9010

8.2 日志分析技巧

  1. 查找错误:
grep -E "ERROR|Exception" /opt/tomcat/logs/catalina.out
  1. 分析访问模式:
awk '{print $1}' /opt/tomcat/logs/localhost_access_log.* | sort | uniq -c | sort -nr
  1. 监控慢请求:
grep "processing time" /opt/tomcat/logs/localhost_access_log.* | awk '$NF>1000 {print}'

8.3 备份策略

  1. 配置文件备份:
sudo tar -czf /backup/tomcat-conf-$(date +%F).tar.gz /opt/tomcat/conf
  1. 应用数据备份:
sudo tar -czf /backup/tomcat-webapps-$(date +%F).tar.gz /opt/tomcat/webapps
  1. 定期清理日志:
find /opt/tomcat/logs -name "*.log" -mtime +30 -exec rm -f {} \;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 11:33:26

YOLOv5s集成ECA注意力机制提升小目标检测精度

1. 项目背景与核心价值在目标检测领域&#xff0c;YOLOv5s以其轻量高效的特性成为工业界和学术界的宠儿。但实际部署中我们发现&#xff0c;当目标物体存在遮挡、小目标或复杂背景干扰时&#xff0c;基础模型的检测精度会出现明显下降。去年在参与某智能安防项目时&#xff0c;…

作者头像 李华
网站建设 2026/7/24 11:32:46

Open-WebUI 0.8.8容器化升级实战与性能优化

1. 项目背景与升级动机作为长期使用open-webui的开发者&#xff0c;我见证了它从早期版本到0.8.8的演进历程。这次升级源于三个核心需求&#xff1a;首先是安全补丁的迫切性——0.8.7版本存在几个关键CVE漏洞&#xff1b;其次是性能优化需求&#xff0c;新版本承诺将响应速度提…

作者头像 李华
网站建设 2026/7/24 11:30:31

Linux进程优先级管理与调度优化指南

1. 进程优先级基础概念 在Linux系统编程中&#xff0c;进程优先级决定了CPU资源分配的先后顺序。就像医院急诊科的分诊系统&#xff0c;病情危急的患者会优先得到救治。Linux内核通过动态优先级和静态优先级两个维度来管理进程调度。 静态优先级&#xff08;static priority&a…

作者头像 李华
网站建设 2026/7/24 11:30:25

AI写专著必备:精选AI专著生成工具,一键搞定20万字专著写作!

写学术专著的难题与AI工具解决方案 写学术专著时&#xff0c;大家常常碰到一个难题&#xff0c;就是在“内容深度”和“覆盖广度”之间找平衡。这个问题让许多研究者很头疼。说到深度&#xff0c;专著里最重要的观点必须有足够的学术含量&#xff0c;不只是简单说明“是什么”…

作者头像 李华
网站建设 2026/7/24 11:30:04

一条产品线上三种规格的标签来回换纸,耽误的时间够你再出两单了

我在一家食品加工厂做生产主管&#xff0c;管着三条包装线。每天最烦的事情不是机器故障&#xff0c;而是换标签纸。早餐线用6040mm的食品标签&#xff0c;午餐肉线用8050mm的&#xff0c;下午茶线用4030mm的日期标。三条线规格都不一样&#xff0c;每次换线就得有人专门停下来…

作者头像 李华
网站建设 2026/7/24 11:29:23

AI智能体六大设计模式解析与应用实践

1. AI智能体设计模式概述在当今大模型技术快速发展的背景下&#xff0c;AI智能体已经成为连接人工智能能力与实际业务场景的重要桥梁。不同于传统的单一功能AI系统&#xff0c;现代智能体具备自主感知、决策和执行能力&#xff0c;能够完成更复杂的任务链。经过大量项目实践&am…

作者头像 李华