公司动态
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 gzipopenEuler 默认使用 DNF 作为包管理器与传统 CentOS/RHEL 的 YUM 命令基本兼容。我建议在开始前先检查系统架构uname -m如果是 ARM 架构aarch64需要特别注意后续下载的软件包版本。2.2 Java 环境部署Tomcat 9 需要 Java 8 或更高版本。openEuler 官方源提供了多个 JDK 选项sudo dnf search jdk推荐安装 OpenJDK 11sudo 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.sha5123.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 port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 maxThreads200 minSpareThreads10 enableLookupsfalse acceptCount100 compressionon compressionMinSize2048 compressableMimeTypetext/html,text/xml,text/css,text/javascript,application/javascript/设置管理员账户conf/tomcat-users.xmlrole rolenamemanager-gui/ role rolenameadmin-gui/ user usernameadmin password复杂密码 rolesmanager-gui,admin-gui/4. 服务管理与优化4.1 系统服务集成创建 systemd 服务文件 /etc/systemd/system/tomcat.service[Unit] DescriptionApache Tomcat 9 Aftersyslog.target network.target [Service] Typeforking Usertomcat Grouptomcat EnvironmentCATALINA_PID/opt/tomcat/temp/tomcat.pid EnvironmentJAVA_HOME/usr/lib/jvm/java-11-openjdk EnvironmentCATALINA_HOME/opt/tomcat EnvironmentCATALINA_BASE/opt/tomcat ExecStart/opt/tomcat/bin/startup.sh ExecStop/opt/tomcat/bin/shutdown.sh Restarton-failure [Install] WantedBymulti-user.target启用服务sudo systemctl daemon-reload sudo systemctl enable --now tomcat4.2 性能优化建议JVM 参数调整bin/setenv.shexport CATALINA_OPTS-server -Xms512m -Xmx1024m -XX:MetaspaceSize128m -XX:MaxMetaspaceSize512m关闭不需要的 Web 应用rm -rf /opt/tomcat/webapps/examples rm -rf /opt/tomcat/webapps/docs日志轮转配置/etc/logrotate.d/tomcat/opt/tomcat/logs/catalina.out { daily rotate 30 missingok compress copytruncate dateext }5. 安全加固措施5.1 基础安全配置禁用管理界面外部访问conf/Catalina/localhost/manager.xmlContext privilegedtrue antiResourceLockingfalse docBase${catalina.home}/webapps/manager Valve classNameorg.apache.catalina.valves.RemoteAddrValve allow127\.0\.0\.1|::1|192\.168\.\d\.\d / /Context隐藏服务器信息conf/server.xmlConnector port8080 ... serverUnknown /并在 webapps/ROOT/WEB-INF/web.xml 添加error-page error-code404/error-code location/404.html/location /error-page5.2 防火墙配置sudo firewall-cmd --permanent --add-port8080/tcp sudo firewall-cmd --reload如果需要 HTTPS 支持建议使用 Nginx 反向代理并配置 Lets Encrypt 证书。6. 常见问题排查6.1 启动失败排查端口冲突sudo netstat -tulnp | grep 8080权限问题sudo chmod -R gr /opt/tomcat/conf sudo chmod gx /opt/tomcat/conf内存不足 检查 /opt/tomcat/logs/catalina.out 中的 OutOfMemoryError6.2 性能问题分析线程池耗尽tail -f /opt/tomcat/logs/catalina.out | grep All threads are busy内存泄漏检测jstat -gcutil pid 1000 10连接数监控sudo ss -ltnp | grep java7. 应用部署实践7.1 手动部署 WAR 包将应用 WAR 包复制到 webapps 目录sudo cp myapp.war /opt/tomcat/webapps/ sudo chown tomcat:tomcat /opt/tomcat/webapps/myapp.warTomcat 会自动解压部署可以通过日志观察进度tail -f /opt/tomcat/logs/catalina.out7.2 使用 Manager App 部署确保 conf/tomcat-users.xml 已配置 manager-gui 角色访问 http://服务器IP:8080/manager/html在 WAR file to deploy 部分上传应用安全提示生产环境建议禁用 Manager App或严格限制访问IP7.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 基础监控配置启用 JMX 监控bin/setenv.shexport CATALINA_OPTS$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port9010 -Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.management.jmxremote.authenticatefalse使用 jConsole 连接jconsole 服务器IP:90108.2 日志分析技巧查找错误grep -E ERROR|Exception /opt/tomcat/logs/catalina.out分析访问模式awk {print $1} /opt/tomcat/logs/localhost_access_log.* | sort | uniq -c | sort -nr监控慢请求grep processing time /opt/tomcat/logs/localhost_access_log.* | awk $NF1000 {print}8.3 备份策略配置文件备份sudo tar -czf /backup/tomcat-conf-$(date %F).tar.gz /opt/tomcat/conf应用数据备份sudo tar -czf /backup/tomcat-webapps-$(date %F).tar.gz /opt/tomcat/webapps定期清理日志find /opt/tomcat/logs -name *.log -mtime 30 -exec rm -f {} \;