麒麟V10 SP3部署TongWeb全攻略:从JDK配置到生产环境优化

发布时间:2026/6/17 8:56:56
麒麟V10 SP3部署TongWeb全攻略:从JDK配置到生产环境优化 1. 项目概述与核心价值最近在国产化替代的浪潮下很多项目都开始从传统的CentOS、Windows Server迁移到国产的麒麟操作系统上。我手头就有一个老项目需要将原本跑在Linux上的TongWeb中间件完整地迁移到银河麒麟V10 SP3上。这活儿听起来就是“安装”两个字但真干起来从环境适配、依赖排查到权限配置每一步都可能藏着坑。特别是当你遇到像java.lang.NoClassDefFoundError: java/util/logging/LogRecord这类看似基础却又让人摸不着头脑的报错时就知道这绝不是一次简单的“下一步”安装。麒麟操作系统无论是桌面版还是服务器版作为国产操作系统的代表其底层基于Linux内核但在软件生态、内核模块管理比如禁用Nouveau驱动等方面有自己的特点。而TongWeb作为一款主流的国产Java应用服务器其安装过程在通用Linux上可能很顺畅但在特定的麒麟版本尤其是ARM64架构上就需要我们格外关注兼容性和细节。这次迁移不仅仅是完成安装更是要搭建一个稳定、可维护的生产环境。接下来我就把这次从零开始在麒麟服务器操作系统上成功部署TongWeb的全过程以及踩过的坑和总结的经验毫无保留地分享出来。2. 环境准备与前期规划在动手安装之前充分的准备工作能避免一半以上的后续问题。这个阶段的核心是“知己知彼”明确系统环境和安装包的匹配关系。2.1 系统环境确认首先必须精确识别你的麒麟操作系统版本和硬件架构。这直接决定了你需要下载哪个版本的TongWeb以及后续的JDK。查看系统信息打开终端执行以下命令cat /etc/os-release uname -m关键信息包括NAME和VERSION_ID: 例如Kylin Linux Advanced Server release V10 (Sword) 确认是V10SP1SP2还是SP3。uname -m的输出x86_64代表AMD64/Intel 64位架构aarch64代表ARM64架构常见于华为鲲鹏、飞腾等国产CPU服务器。这一点至关重要TongWeb和JDK都必须下载对应架构的版本。检查现有Java环境运行java -version。即使系统提示未安装也最好用rpm -qa | grep -i jdk或dpkg -l | grep -i jdk检查是否有残留的旧版本JDK。我强烈建议在安装TongWeb前先按照官方要求部署一个干净的、指定版本的JDK而不是使用系统可能自带的OpenJDK这能极大减少类库冲突。网络与依赖检查确保服务器可以访问互联网以下载必要的依赖或者你已经准备好了包含所有依赖包的本地镜像源。对于内网环境这一步需要提前规划。2.2 安装包获取与校验获取TongWeb安装包从东方通官方渠道获取与你的麒麟操作系统架构匹配的TongWeb安装包。通常是一个以.bin结尾的安装文件如Install_TW7.0.E.5_P3_Enterprise_Linux.bin或一个压缩包。请务必核对版本号企业级项目建议使用稳定的E系列版本。获取匹配的JDK前往Oracle官网或OpenJDK官网下载与你的系统架构x86_64或aarch64匹配的JDK 8或JDK 11具体版本需参考TongWeb官方文档的兼容性列表。对于麒麟系统通常推荐使用Oracle JDK 8u202或之后的版本或者适配好的OpenJDK。将JDK的tar.gz包上传到服务器。规划安装目录建议为非root用户如tongweb规划独立的安装目录。例如/opt/tongweb 用于安装TongWeb应用服务器本身。/usr/local/java 用于安装JDK。 这样的规划清晰便于后续的权限管理和维护。注意切勿在未经验证的情况下使用搜索引擎随意下载所谓的“破解版”或来历不明的安装包这不仅是法律风险更可能引入安全漏洞如热词中提到的EJB反序列化漏洞或导致安装失败。3. 基础环境部署JDK安装与配置TongWeb的运行严重依赖于正确的Java环境。这一步没做好后面的安装十有八九会出问题。3.1 安装JDK假设我们已经将jdk-8u381-linux-aarch64.tar.gz上传到了服务器的/tmp目录。创建目录并解压sudo mkdir -p /usr/local/java sudo tar -zxvf /tmp/jdk-8u381-linux-aarch64.tar.gz -C /usr/local/java/解压后你会在/usr/local/java下看到一个类似jdk1.8.0_381的目录。配置环境变量编辑全局环境变量配置文件使所有用户都能使用这个JDK。sudo vim /etc/profile在文件末尾添加以下内容请根据实际解压出的目录名修改JAVA_HOMEexport JAVA_HOME/usr/local/java/jdk1.8.0_381 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH使配置生效并验证source /etc/profile java -version如果正确显示Java版本信息如java version “1.8.0_381”并且which java指向/usr/local/java/jdk1.8.0_381/bin/java则说明JDK安装成功。3.2 创建专用用户为了安全不建议直接使用root用户运行TongWeb。创建用户和组sudo groupadd tongweb sudo useradd -g tongweb -m -d /home/tongweb -s /bin/bash tongweb sudo passwd tongweb # 设置密码准备安装目录并授权sudo mkdir -p /opt/tongweb sudo chown -R tongweb:tongweb /opt/tongweb4. TongWeb安装过程详解基础环境就绪后我们开始安装TongWeb。这里以常见的.bin安装文件为例。4.1 执行安装程序上传安装文件并授权将Install_TW7.0.E.5_P3_Enterprise_Linux.bin上传到服务器例如/tmp目录。然后将其移动到安装目录并赋予执行权限。sudo mv /tmp/Install_TW7.0.E.5_P3_Enterprise_Linux.bin /opt/tongweb/ sudo chown tongweb:tongweb /opt/tongweb/Install_TW7.0.E.5_P3_Enterprise_Linux.bin sudo chmod x /opt/tongweb/Install_TW7.0.E.5_P3_Enterprise_Linux.bin切换到专用用户执行安装sudo su - tongweb cd /opt/tongweb ./Install_TW7.0.E.5_P3_Enterprise_Linux.bin这会启动一个图形化或命令行安装向导。如果服务器没有图形界面安装程序通常会以控制台模式运行。跟随安装向导在安装过程中需要注意以下几个关键点安装路径默认或自定义。我们可以直接使用/opt/tongweb/TongWeb7.0。JDK路径安装程序会自动探测JAVA_HOME。如果探测不到或不对务必手动指定为我们刚才安装的JDK路径/usr/local/java/jdk1.8.0_381。这是避免后续NoClassDefFoundError的关键一步。管理端口默认是9060确保该端口未被占用。创建服务安装程序可能会询问是否创建系统服务可以先跳过我们后面手动配置更可控。4.2 安装后目录结构解析安装完成后/opt/tongweb/TongWeb7.0目录下会生成一系列子目录了解它们对运维至关重要bin/ 启动、停止脚本所在目录。startserver.sh和stopserver.sh是最常用的。conf/ 配置文件目录。server.xml是主配置文件定义了端口、连接器、资源等。logs/ 日志文件目录。tongweb.log是运行日志localhost.yyyy-mm-dd.log是应用访问日志。webapps/ 默认的应用部署目录。将你的WAR包放在这里即可自动部署或通过管理控制台部署。temp/和work/ 临时文件和JSP编译后文件目录定期清理。lic/ 许可证文件目录。企业版需要将有效的.lic文件放在这里。5. 启动、验证与基础配置安装完成不是终点确保服务能正常启动并对外提供服务才是关键。5.1 首次启动与问题排查启动TongWebcd /opt/tongweb/TongWeb7.0/bin ./startserver.sh启动后查看日志以确认状态tail -f ../logs/tongweb.log你需要在日志中寻找Server startup in [xxxx] ms这样的成功信息。应对经典报错java.lang.NoClassDefFoundError: java/util/logging/LogRecord 如果在启动日志中看到这个错误根本原因通常是类加载路径混乱。TongWeb启动时使用的JRE环境与安装时指定的或系统默认的JRE不一致导致找不到基本的Java SE类。排查与解决步骤检查启动脚本查看bin/startserver.sh或bin/catalina.sh看其开头是否显式设置了JAVA_HOME或JRE_HOME。确保其指向我们安装的JDK。检查安装记录回顾安装过程是否在指定JDK路径时出错。直接指定启动可以在启动时强制指定JAVA_HOMEexport JAVA_HOME/usr/local/java/jdk1.8.0_381 ./startserver.sh检查环境变量以tongweb用户登录执行echo $JAVA_HOME和which java确认是否正确。 这个错误的解决本质上就是保证“安装时指定的JDK”、“环境变量中的JDK”、“启动脚本使用的JDK”三者统一。5.2 访问管理控制台验证启动成功后就可以通过浏览器访问TongWeb的管理控制台进行验证和进一步配置了。获取服务器IP地址在终端执行ip addr或ifconfig。打开浏览器访问http://服务器IP地址:9060。登录默认用户名和密码通常是admin/admin。首次登录后请立即修改密码。功能验证在控制台中你可以查看服务器状态在“监控”或“状态”页面查看JVM内存、线程池、连接数等。部署应用在“应用管理”中上传你的WAR包进行部署测试。配置数据源为你的应用配置数据库连接池。5.3 基础性能与安全配置在管理控制台或直接修改conf/server.xml文件可以进行一些基础优化连接器配置找到HTTP/1.1的Connector配置调整maxThreads最大线程数根据CPU核心数设置如200、acceptCount等待队列长度如100等参数以适应预期并发。Connector port8080 protocolHTTP/1.1 maxThreads200 minSpareThreads20 acceptCount100 connectionTimeout20000 redirectPort8443 /JVM参数调整编辑bin/setenv.sh如果不存在则创建设置适合你服务器内存的JVM堆参数。例如对于8GB内存的服务器export JAVA_OPTS”-server -Xms4096m -Xmx4096m -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m”-Xms和-Xmx设置为相同值可以避免运行时的堆内存扩容收缩带来的性能抖动。6. 生产环境进阶配置与优化要让TongWeb在生产环境中稳定运行还需要完成以下几项关键工作。6.1 配置为系统服务使用root用户操作将TongWeb配置为systemd服务实现开机自启和便捷的服务管理。创建服务文件sudo vim /etc/systemd/system/tongweb.service编写服务配置以下是一个示例请根据你的实际路径修改JAVA_HOME和CATALINA_HOME。[Unit] DescriptionTongWeb Application Server Afternetwork.target syslog.target [Service] Typeforking EnvironmentJAVA_HOME/usr/local/java/jdk1.8.0_381 EnvironmentCATALINA_HOME/opt/tongweb/TongWeb7.0 # 以专用用户运行 Usertongweb Grouptongweb # 启动脚本和PID文件 ExecStart/opt/tongweb/TongWeb7.0/bin/startserver.sh ExecStop/opt/tongweb/TongWeb7.0/bin/stopserver.sh ExecReload/bin/kill -s HUP $MAINPID # 防止OOM Killer误杀 OOMScoreAdjust-500 # 重启策略 Restarton-failure RestartSec10s [Install] WantedBymulti-user.target启用并启动服务sudo systemctl daemon-reload sudo systemctl enable tongweb.service sudo systemctl start tongweb.service sudo systemctl status tongweb.service # 查看状态现在你就可以使用systemctl start|stop|restart|status tongweb来管理服务了。6.2 日志切割与管理TongWeb默认的日志不会自动切割长期运行会导致日志文件巨大。我们可以使用Linux自带的logrotate工具。创建logrotate配置sudo vim /etc/logrotate.d/tongweb编写配置规则/opt/tongweb/TongWeb7.0/logs/*.log { daily # 按天切割 missingok # 如果日志文件丢失不报错 rotate 30 # 保留30份历史日志 compress # 压缩旧日志 delaycompress # 延迟一天压缩 notifempty # 空文件不切割 create 0644 tongweb tongweb # 切割后创建新文件并指定权限和属主 postrotate # 发送信号给TongWeb让其重新打开日志文件 /bin/kill -USR2 $(cat /opt/tongweb/TongWeb7.0/bin/tongweb.pid 2/dev/null) 2/dev/null || true endscript }logrotate通常由cron每日定时执行无需手动干预。6.3 防火墙与安全加固防火墙放行端口如果麒麟系统使用了firewalld需要放行TongWeb的端口。sudo firewall-cmd --permanent --add-port9060/tcp # 管理端口 sudo firewall-cmd --permanent --add-port8080/tcp # 应用端口假设 sudo firewall-cmd --permanent --add-port8443/tcp # HTTPS端口 sudo firewall-cmd --reload安全加固建议修改默认端口将默认的9060管理端口改为一个不常用的高位端口。使用强密码务必修改默认的admin密码并定期更换。限制管理控制台访问通过防火墙或TongWeb自身的配置限制只有特定的管理IP地址才能访问9060端口。定期更新关注东方通官方发布的安全补丁和版本更新及时修复已知漏洞如之前提到的EJB反序列化漏洞。7. 常见问题与故障排查实录在实际部署和运维中总会遇到一些意想不到的问题。这里记录几个典型问题的排查思路。7.1 启动失败类问题问题现象可能原因排查步骤与解决方案启动后立即退出日志无明确错误1. 端口被占用2. 许可证文件无效或缺失3. 启动脚本中的JAVA_HOME指向错误1.netstat -tlnp | grep :9060检查端口。2. 检查lic/目录下是否有有效的.lic文件。3. 在startserver.sh开头添加echo $JAVA_HOME并重新启动查看输出。报错Address already in use指定的端口如8080, 9060已被其他进程占用。使用netstat -tlnp | grep :端口号找到占用进程停止它或修改TongWeb的conf/server.xml中的端口配置。报错Permission denied1.tongweb用户对安装目录或日志目录无写权限。2. 尝试绑定1024以下的特权端口。1.chown -R tongweb:tongweb /opt/tongweb。2. 检查server.xml确保所有监听端口大于1024或配置TongWeb以root启动后降权不推荐。7.2 运行时性能与稳定性问题问题现象可能原因排查步骤与解决方案应用响应缓慢CPU或内存使用率高1. 应用本身存在性能瓶颈。2. JVM堆内存设置过小导致频繁GC。3. 数据库连接池配置不当。1. 使用top -Hp [tongweb的java进程PID]查看线程CPU使用结合TongWeb控制台的线程转储分析。2. 检查JVM GC日志需在JAVA_OPTS中开启调整-Xmx参数。3. 检查数据源配置验证连接泄漏。内存使用持续增长最终OOM内存泄漏。1. 定期重启服务作为临时缓解。2. 使用jmap -histo:live [pid]或专业工具如MAT分析堆内存快照定位泄漏对象。大量Timeout或Connection Reset错误1. 网络不稳定。2. 服务器资源如线程池、连接数耗尽。3. 后端服务如数据库响应慢。1. 检查网络。2. 调大server.xml中连接器的maxThreads和acceptCount。3. 优化应用SQL和数据库性能。7.3 特定于麒麟系统的兼容性问题图形界面安装问题在无图形界面的服务器上.bin安装文件可能无法启动。可以尝试添加-console参数强制使用控制台模式./Install_TW...bin -console。如果不行联系厂商获取命令行安装包或静默安装脚本。ARM架构依赖库缺失在aarch64架构的麒麟系统上某些底层库可能与x86不同。如果遇到libxxx.sonot found 之类的错误需要安装对应的ARM版本系统库例如yum install glibc或apt-get install libc6具体包名根据系统而定。内核模块冲突如Nouveau虽然这主要影响桌面图形环境但在服务器版上如果安装了图形界面也可能遇到。这与TongWeb本身无关但如果系统因此不稳定可以参考官方文档禁用相关驱动。8. 部署应用实战与后续维护最后我们来完成整个流程的闭环部署一个真实的Web应用到TongWeb上。8.1 应用部署与配置打包应用将你的Web项目打包成标准的WAR文件例如myapp.war。部署自动部署最简单的方式是将myapp.war直接拷贝到$CATALINA_HOME/webapps/目录下TongWeb会自动解压并部署。控制台部署登录管理控制台http://ip:9060在“应用管理”中上传WAR文件进行部署。这种方式可以定义上下文路径管理更灵活。配置数据源如果你的应用需要数据库在TongWeb控制台的“资源”-“JDBC数据源”中配置一个JNDI数据源。这里需要准确填写数据库驱动类名、JDBC URL、用户名和密码。驱动JAR包需要放置到$CATALINA_HOME/lib目录下。8.2 日常维护检查清单将TongWeb投入生产后建议建立以下日常维护习惯日志巡检每天检查logs/tongweb.log和logs/localhost.*.log关注ERROR和WARN级别的信息。监控指标通过管理控制台或集成监控系统如Prometheus Grafana如果TongWeb暴露了Metrics端点监控JVM内存使用率、线程池活跃数、请求处理时间等。定期备份备份conf/目录下的所有配置文件。如果应用配置在TongWeb中完成也需要备份。磁盘空间监控logs/和temp/目录的大小确保不会写满磁盘。安全更新订阅东方通的安全公告及时评估和应用安全补丁。整个从麒麟操作系统准备到TongWeb稳定运行的过程其实就是一个不断与环境磨合、解决问题的过程。最深的体会就是“细节决定成败”。一个JDK路径的偏差、一个权限设置的疏忽、一个端口冲突都可能导致部署失败。尤其是在国产化环境中对软硬件兼容性的测试要更充分。建议在项目初期就搭建与生产环境一致的测试环境把安装、部署、压测全流程跑通把该踩的坑在测试阶段都踩完这样才能保障最终上线的平稳。