Tomcat:部署前后端分离项目踩坑

        很久没有使用Tomcat部署前后端分离项目了,这两天遇到小伙伴有这方面的需求,就做了尝试,踩坑记录如下。

坑点1:SpringBoot打包本地jar包依赖未被包含

        SpringBoot如果在开发阶段应用了本地jar包,在打成jar包时,通常是需要在pom.xml文件中添加如下配置,可以确保在打包阶段本地jar包被正常引入和构建。

        但是,将SpringBoot打包成war包时,以上配置就会失效了。将其放入tomcat中启动时,会报错:找不到本地依赖的jar包。其实,该jar包已经被构建过了,只是没有被放到正确的路径下。

        在tocmat的webapps中,查看服务路径WEB_INFO下,有两个子路径:lib和lib-provided,而提示找不到的jar包就是被放到了lib-provided子路径下,只需要将其拷贝到lib子路径下,即可保证war包部署到tomcat中之后,可以正常启动。

坑点2:Vue3前端项目部署路径问题

        前端项目使用history路由模式,页面部署之后,只能通过localhost:8080/xxx进行访问,无法通过localhost:8080/路径名/xxx-router访问。

        可以修改vite.config.ts中的base配置项进行解决,

坑点3:Vue3前端项目部署之后,刷新页面404

        解决方案:在前端所在目录下新建:WEB-INF/web.xml文件,写入内容,

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.0" metadata-complete="true">
<display-name>Router for Tomcat</display-name>
  <error-page>
  <error-code>404</error-code>
  <location>/index.html</location>
  </error-page>
</web-app>

<think>我们正在评估国产操作系统及WEB中间件适配与服务部署相关工作,包括服务兼容性改造、测试以及专用部署脚本编写。针对高级运维人员,我们需要估算完成这些任务所需的时间。 ### 1. 任务分解 根据需求,工作内容包括: - **国产操作系统适配**:确保服务能在国产操作系统(如银河麒麟、中标麒麟)上正常运行。 - **WEB中间件适配**:对中间件(如Nginx、Tomcat等)进行兼容性改造和配置。 - **服务兼容性改造**:调整应用程序以适应国产环境和中间件。 - **测试**:包括功能测试、性能测试、稳定性测试等。 - **专用部署脚本编写**:编写自动化部署脚本,实现一键部署。 ### 2. 时间评估因素 - **系统熟悉程度**:高级运维人员对国产操作系统和中间件的熟悉程度。 - **组件数量**:需要适配的中间件和服务数量。 - **改造复杂度**:服务是否需要代码级改造,还是仅需配置调整。 - **测试深度**:测试用例的覆盖范围和深度。 ### 3. 时间估算 假设需要适配的国产操作系统有2种(银河麒麟V10、中标麒麟V7),WEB中间件有5种(如Nginx、Tomcat、Redis等),服务有3个(如MIG微服务、群营销微服务、橙杏反馈系统)。我们将任务分解并估算时间: #### (1) 环境准备与调研(2天) - 搭建国产操作系统环境(虚拟机或物理机)。 - 调研各中间件在国产操作系统上的兼容性,查阅官方文档和社区经验[^3]。 #### (2) 中间件适配(每个中间件1-2天) - 安装、配置、调优中间件,解决依赖问题。 - 编写基础部署脚本(安装、启动、停止)。 - 示例:Nginx在银河麒麟上的适配可能涉及编译参数调整和依赖库安装[^3]。 - 总时间:5个中间件 × 1.5天 = 7.5天。 #### (3) 服务兼容性改造(每个服务2-3天) - 检查服务对操作系统和中间件的依赖,修改配置或代码。 - 解决可能出现的兼容性问题,如文件路径、权限、库依赖等。 - 总时间:3个服务 × 2.5天 = 7.5天。 #### (4) 部署脚本编写(每个环境/服务1天) - 编写一键部署脚本,整合中间件和服务部署。 - 支持自动化配置和启动。 - 总时间:(5个中间件 + 3个服务) × 1天 = 8天。 #### (5) 测试与优化(5天) - 功能测试:确保服务基本功能正常。 - 性能测试:对比在国产环境和原环境的性能差异。 - 稳定性测试:长时间运行观察。 - 根据测试结果优化配置和脚本。 #### (6) 文档编写(2天) - 整理适配过程、问题解决方案、部署手册。 ### 4. 总时间估算 $$T = T_{\text{环境准备}} + T_{\text{中间件适配}} + T_{\text{服务改造}} + T_{\text{脚本编写}} + T_{\text{测试优化}} + T_{\text{文档}}$$ $$T = 2 + 7.5 + 7.5 + 8 + 5 + 2 = 32 \text{天}$$ ### 5. 优化建议 - **并行工作**:多个中间件或服务适配可并行进行,节省时间。 - **利用社区资源**:参考国产操作系统官方文档和社区案例,减少时间[^3]。 - **自动化测试**:编写自动化测试脚本,提高测试效率。 ### 6. 风险提示 - **兼容性问题**:某些中间件可能无法直接适配,需要定制开发或寻求替代方案(如引用[2]提到的控制台封装导致的问题)[^2]。 - **性能差异**:国产硬件(如ARM架构)可能导致性能差异,需预留调优时间[^1]。 ### 总结 高级运维人员完成国产操作系统及WEB中间件适配与服务部署,预计需要**32个工作日**(按每天8小时计)。实际时间可能因具体组件复杂度、问题排查难度而有所增减。 ### §§相关问题§§ 1. 国产操作系统(如银河麒麟)适配中间件常见问题及解决方案? 2. 如何编写健壮的部署脚本以兼容多种国产操作系统? 3. 国产化环境中如何实现中间件的高可用? 4. 国产化迁移过程中如何保证服务平稳过渡? 5. 如何评估国产化改造后的系统性能?</think>### 国产操作系统及WEB中间件适配与服务部署工作评估 #### **1. 任务分解与核心工作** - **操作系统适配**: - 兼容性验证:银河麒麟V10(SP1/SP2/SP3/兼容版)、中标麒麟V7等国产系统[^3] - 环境配置:网络(IP/NetMask/DNS)、防火墙/SELinux策略调整[^3] - 内核参数调优:文件句柄数、TCP连接池等 - **WEB中间件适配**: - 服务改造:Nginx/Tomcat等中间件在国产系统的编译安装、依赖解决 - 配置迁移:日志路径、端口规则、集群配置(需避免控制台封装导致的运维黑盒问题[^2]) - 安全加固:国密算法支持、权限模型调整 - **部署脚本开发**: - 专用部署脚本:自动化安装、启动、健康检查 - 监控集成:对接国产化监控工具(如监控易[^1]) - **测试与验证**: - 兼容性测试:ARM架构服务器验证[^1] - 性能测试:网络时延(需<10ms)、时间同步(误差<1小时)[^3] #### **2. 时间评估(高级运维人员)** 基于**3个国产系统 + 5个WEB中间件**的典型场景: $$T_{\text{总}} = T_{\text{适配}} + T_{\text{脚本}} + T_{\text{测试}} + T_{\text{优化}}$$ 1. **适配阶段(8-12天)**: - 系统环境初始化(网络/存储/安全):**2天** - 中间件编译安装与依赖解决(每个中间件**0.5-1天**): $$T_{\text{中间件}} = 5 \times 1 = 5 \text{天}$$ - 服务改造(配置文件/权限模型):**3天** 2. **脚本开发(5-7天)**: - 基础部署脚本(安装/启动/日志):**3天** - 监控告警集成(对接监控易API):**2天** - 高可用逻辑(集群编排/故障转移):**2天** 3. **测试验证(6-8天)**: - 自动化测试用例编写:**2天** - 性能压测(网络/CPU/IO):**3天** - 国产硬件兼容性测试(ARM服务器):**2天** 4. **调优与文档(3-4天)**: - 参数优化(内核/中间件):**2天** - 部署手册编写:**1天** **总耗时估算**: $$T_{\text{总}} = (8\sim12) + (5\sim7) + (6\sim8) + (3\sim4) = \text{22~31天}$$ > ✅ **关键影响因素**: > - **复杂度**:需深度适配的中间件(如定制化Tomcat)每增加1个 +**1天** > - **经验储备**:熟悉国产系统可节省**30%** 时间 > - **工具支持**:利用监控易等工具自动化检测可减少**2-3天**[^1] #### **3. 实施风险与规避策略** 1. **兼容性风险**: - 问题:ARM架构库依赖缺失(如glibc版本冲突) - 方案:使用静态编译或国产化容器镜像(如麒麟OS基础镜像) 2. **运维黑盒问题**: - 问题:控制台封装导致故障排查困难[^2] - 方案:保留CLI操作入口,日志输出完整路径(如`/data/logs/nginx`) 3. **性能瓶颈**: - 问题:网络时延>10ms影响服务发现[^3] - 方案:配置时间同步服务(Chrony/NTP),网卡绑定优化 #### **4. 最佳实践建议** 1. **分层适配**: ```mermaid graph TD A[国产操作系统] --> B(基础环境配置) B --> C[中间件层适配] C --> D[应用服务改造] D --> E[监控告警集成] ``` 2. **脚本设计原则**: - 模块化:分离安装、配置、启动逻辑 - 国产化检测:自动识别系统类型(麒麟/统信) ```bash # 示例:系统识别脚本 if grep -q "kylin" /etc/os-release; then echo "银河麒麟系统,启用专用配置" export MIDDLEWARE_PATH=/opt/kylin_middleware fi ``` 3. **监控集成**: - 利用监控易的国产化插件采集中间件指标(如Tomcat线程池)[^1] - 自定义告警规则:JVM内存溢出、响应超时等 > ⏱️ **乐观情况**:若中间件已有国产化安装包(如Nginx麒麟版),可压缩至**18天**; > ⚠️ **悲观情况**:需代码级改造的服务,可能延长至**35天**。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是席木木啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值