在银河麒麟V10上,手把手教你用TongWEB部署前后端分离的War包项目
在银河麒麟V10上实战:TongWEB部署前后端分离War包全指南
国产化技术栈的普及让越来越多的企业开始关注基于银河麒麟操作系统和东方通TongWEB应用服务器的部署方案。不同于常见的Tomcat环境,这套国产组合在项目部署时会遇到一些特有的配置挑战。本文将带您完整走通从环境准备到服务启动的全流程,特别针对前后端分离项目的War包部署进行深度解析。
1. 环境准备与项目适配
银河麒麟V10兆芯版作为国产操作系统的代表,其文件权限管理与路径规范与Windows存在显著差异。在开始部署前,需要确保以下基础环境就位:
- 系统层面:确认已安装JDK(建议1.8+)并配置JAVA_HOME环境变量
- 中间件:TongWEB 7.0及以上版本正确安装,服务可正常启停
- 依赖服务:MySQL/达梦等数据库、Redis等缓存服务已部署并网络可达
对于从Windows环境迁移的项目,需要特别注意:
# 检查目录权限(示例) ls -l /opt/TongWEB/ chmod -R 755 /opt/TongWEB/webapps提示:银河麒麟默认的权限控制较严格,建议为TongWEB安装目录设置专门的用户组权限,避免部署时出现"Permission denied"错误。
2. 前后端War包的特殊处理
前后端分离项目在TongWEB上的部署需要将前端资源打包为独立的War包。与Tomcat不同,TongWEB对静态资源的处理有特定要求:
前端项目处理:
- 在Vue/React打包后的dist目录中创建WEB-INF/web.xml
- 典型web.xml内容应包含:
<web-app> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/index.html</location> </error-page> </web-app> - 使用jar命令打包:
cd /path/to/dist jar -cvf frontend.war *
后端项目调整:
- 检查pom.xml中打包方式为war
- 确保没有Tomcat特有依赖(如spring-boot-starter-tomcat)
- 推荐依赖配置:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>
3. TongWEB核心配置详解
3.1 虚拟主机创建
TongWEB的管理控制台与传统应用服务器有所不同,虚拟主机创建需要注意:
| 配置项 | 建议值 | 说明 |
|---|---|---|
| 主机名称 | your_domain | 与后续HTTP通道关联 |
| 默认Web应用 | ROOT | 保持默认 |
| 工作目录 | /path/to/workdir | 建议独立于安装目录 |
注意:虚拟主机的"域名"字段在实际生产环境应配置真实的备案域名,测试环境可用IP替代。
3.2 HTTP通道配置
HTTP通道是TongWEB特有的网络通信配置模块,关键参数包括:
- 端口设置:默认8080可能存在冲突,建议改为8000-9000区间
- 连接超时:国产环境建议适当延长至300秒
- 最大POST大小:前后端分离项目建议设置为50MB以上
典型问题解决方案:
# 修改TongWEB内存配置 vi /opt/TongWEB/bin/external.vmoptions # 添加以下参数(示例) -Xms1024m -Xmx2048m -XX:MaxPermSize=512m4. 项目部署与排错实战
4.1 分步部署流程
- 登录TongWEB管理控制台(默认端口9060)
- 进入"应用管理"→"应用部署"
- 选择前端War包,上下文路径设为"/front"
- 部署后端War包,上下文路径设为"/api"
- 启动顺序:先启动后端服务,再启动前端
4.2 典型问题处理
事务注解失效问题: 这是TongWEB较常见的兼容性问题,解决方法:
# 修改TongWEB配置 vi /opt/TongWEB/bin/external.vmoptions # 确保包含以下参数 -DWebModuleOnly=true静态资源404错误: 检查前端War包结构是否正确,确保:
- WEB-INF/web.xml存在且配置正确
- 静态资源位于War包根目录
- 没有多余的META-INF目录
跨域问题解决方案: 在后端项目中添加配置类:
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*") .allowedHeaders("*"); } }5. 性能调优与监控
国产环境下的性能优化需要特别关注:
JVM参数调优:
# 建议配置(8G内存机器示例) -Xms4096m -Xmx4096m -XX:+UseG1GC -XX:MaxGCPauseMillis=200TongWEB线程池配置:
参数名 生产环境建议值 说明 maxThreads 200 最大工作线程数 minSpareThreads 20 最小空闲线程数 acceptCount 100 等待队列长度 监控建议:
- 定期检查
/opt/TongWEB/logs下的服务日志 - 使用JDK自带工具监控JVM状态:
jstat -gcutil <pid> 1000 10 - 配置国产化监控系统(如麒麟自带监控工具)
- 定期检查
在实际项目部署中,我们发现TongWEB对静态资源的缓存策略与Tomcat有所不同。通过修改WEB-INF/tongweb.xml(需要手动创建)可以优化缓存控制:
<tongweb> <static-resources> <cache-control max-age="86400"/> </static-resources> </tongweb>